java
集合操作
result.add(new ArrayList(res));用result.add(res);得到的是空的;
map.getOrDefault(node.val, 0)它不仅仅在“键”没找到的时候返回提供的默认值,而且还会将键和默认值增加到调用的map中。
LinkedList 由链表构成,在第一位插入addFirst(x);
Queue<String> queue = new LinkedList();queue.offer()
List<String> queue = new LinkedList();queue.offer()错误;虽然也可以当作队列用;
cannot find symbol: method offer(String)
优先级队列是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。
PriorityQueue是从JDK1.5开始提供的新的数据结构接口。
如果不提供Comparator的话,优先队列中元素默认按自然顺序排列,也就是数字默认是小的在队列头,字符串则按字典序排列。
自己提供Comparator
PriorityQueue<ListNode> pq = new PriorityQueue(new Comparator<ListNode>(){
@Override
public int compare(ListNode c1, ListNode c2) {
return (int) (c1.val - c2.val);
}
});
Arrays操作
Array.toString方法当接受的数组中还有数组时打印出的仅是该内嵌数组的名字,Array.deepToString方法会将内嵌数组的内容也打印出来,不管数组内嵌多少层,都会循环递归到最内层的数据.
数组
new int[2];这样new一个数组时,其中每个值均为0;如果想得到一个空数组,就return new int[0] 而不是return null
String
String.substring() 不是String.subString();
StringBuffer.append() 参数有很多形式,int char 都可以,不只是string
Math
Math.abs():
public static double abs(double a)
public static int abs(int a)传什么类型的参数,得到的就是他的返回值
java.lang.Math.abs(int a)返回一个int值的绝对值。如果参数为负,则返回该参数。如果参数为负,则返回否定的参数。
请注意,如果该参数为相等于Integer.MIN_VALUE,表示的最小负int值的值,其结果是相同的值,且为负。
所以在29题中,将int形的除数被除数转换为绝对值时,要防止他们越界即MIN_VALUE,所以需要转为long形
int 是四个字节,所以范围在2^31-1~~ -2^31 2147483647~ - 2147483648
小技巧
当你需要表示一个特殊状态时,可以用一个除了那种状态不会得到的值来表征。比如是数字时返回数字值,那么不是数字时我可以用-1来表示。