2020年06月30日
栈
-
优秀代码参考
ID | 题目大致内容 | 解题思想 | 注意点 |
---|---|---|---|
225 | 用队列实现栈 | 用两个队列就可以 | |
232 | 用栈实现队列 | 和225思路一样,用两个栈就可以 | |
71 | 简化路径 | 把字符串转化成字符数组,以"/“分割,先排除是不是当前目录”.“和空”",然后要是返回上一级,"…",则出栈,不然进栈。字符数组遍历完了,判断栈是不是空,是,返回"/",不然遍历栈中的元素,然后每个元素前加上"/",即fPath.append("/").append(p); , 返回fPath。 | |
94 | 二叉树的中序遍历 | 用递归简单; 利用栈,去模拟递归。递归压栈的过程,就是保存现场,就是保存当前的变量,而解法一中当前有用的变量就是 node,所以我们用栈把每次的 node 保存起来即可。 | |
103 | 二叉树的锯齿形层次遍历 | 就是之字型遍历,建立两个栈s1和s2,给定遍历layer=1,在遍历过程中layer++。当layer为奇数从左到右,也就是s1.pop为node,将node的左右节点分别加到s2;当为偶数,从右到左,也就是s2.pop为node,将node的右左节点分别加到s1。while循环直到s1和s2都为空 | |
144 | 二叉树的前序遍历 | 递归,用栈模拟 | |
150 | 逆波兰表达式求值N | 用栈,switch case语句,来执行对应的加减乘除操作,最后栈种肯定只有一个数,返回栈的弹出即可 |
常用方法积累
类名 | 方法名 | 解释 |
---|---|---|
ArrayList | indexOf(value) | 返回value值对应的索引值, |
ArrayList | copyOfRange(T[ ] original,int from,int to) | 将原数组original,从下标from开始复制,复制到上标to,生成一个新的数组。 |
ArrayList | ans.get(i).append© | 名为ans的ArrayList对象拿出索引i处的元素,并在其后追加一个字符或数字c。注意不是[index] |
HashMap | getOrDefault(Object key, V defaultValue) | 当Map集合中有这个key时,就使用对应的value值,如果没有就使用默认值defaultValue |
Map | entrySet() | 获取所有key和value,遍历的时候用,例子:for (Map.Entry<String, String> entry : map.entrySet()) {System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());} |
Integer | toBinaryString(num) | 返回num整数的二进制字符串表达 |
Integer | toHexString(num) | 返回num整数的十六进制字符串表达 |
Integer | bitCount(num) | 返回num整数的二进制表达式中1的个数 |
Character | toLowerCase© | 返回c的字母小写形式 |
Character | toUpperCase© | 返回c的字母大写形式 |
Character | isLetter© | 判断c是否为字母 |
String | format(patten,num) | 格式化字符串,比如format("%d:%02d",1,2),输出结果为1:02 |
String | subString(start,end) | 含start,不含end |
StringBuilder | deleteCharAt(index | 删除索引所在处的字符 |
Arrays | fill(Object[] a, Object val) | 再数组a中把所有值都填充为val |
Arrays | equals(s1,s2) | 比较两个数组元素是否相同 |
Arrays | asList(s1,…,sn) | 将一个数组s1,…,sn转换为 List.注意,数组元素不能是原生数据类型(int,long等),要用其包装类Integer等 |
Arrays | set(index,element) | 修改列表中的值。(index指定下标,element指定要修改后元素的值) |
System | arrayCopy(Object src, int srcPos, Object dest, int destPos, int length) | Object src : 原数组; int srcPos:从元数据的起始位置开始; Object dest:目标数组; int destPos:目标数组的开始起始位置; int length:要copy的数组的长度 |
TreeSet | floor(E e) | 返回在这个集合中小于或者等于给定元素的最大元素,如果不存在这样的元素,返回null. |
TreeSet | ceiling(E e) | 返回在这个集合中大于或者等于给定元素的最小元素,如果不存在这样的元素,返回null. |