Java内存模型,jvm,垃圾回收,map线程不安全(resizede的时候死链),sql语法
(1)字符串反转
写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)
import java.util.*; public class Solution { /** * 反转字符串 * @param str string字符串 * @return string字符串 */ public String solve (String str) { if(str == null || str.length() == 0){ return ""; } StringBuilder s = new StringBuilder(); for(int i = str.length() - 1; i >= 0; i--){ s.append(str.charAt(i)); } return s.toString(); } }
(2)求二叉树的前序遍历
求给定的二叉树的前序遍历。
例如:
给定的二叉树为{1,#,2,3},
返回:[1,2,3].
备注;用递归来解这道题很简单,你可以给出迭代的解法么?
如果你不明白{1,#,2,3}的含义,点击查看相关信息
示例
1输入
{1,#,2,3}
输出
[1,2,3]
import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */ public class Solution { /** * * @param root TreeNode类 * @return int整型ArrayList */ public ArrayList<Integer> preorderTraversal (TreeNode root) { ArrayList<Integer> list = new ArrayList<>(); if(root == null){ return list; } TreeNode cur = root; Stack<TreeNode> stack = new Stack<>(); while(cur != null || !stack.empty()){ while(cur != null){ stack.push(cur); list.add(cur.val); cur = cur.left; } cur = stack.pop(); cur = cur.right; } return list; } }
(3)用两个栈实现队列
用两个栈来实现一个队列,分别完成在队列尾部插入整数(push)和在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。
示例:
输入:
["PSH1","PSH2","POP","POP"]
返回:
1,2
解析:
"PSH1":代表将1插入队列尾部
"PSH2":代表将2插入队列尾部
"POP“:代表删除一个元素,先进先出=>返回1
"POP“:代表删除一个元素,先进先出=>返回2
示例1
输入
["PSH1","PSH2","POP","POP"]
输出
1,2
import java.util.Stack; public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); public void push(int node) { stack1.push(node); } public int pop() { while(!stack2.isEmpty()){ return stack2.pop(); } while(!stack1.isEmpty()){ stack2.push(stack1.pop()); } return stack2.pop(); } }
全部评论
(4) 回帖