dummy仿制品
如下链表遍历看起来更优雅
for (ListNode node = dummy; node != null; node = node.next) {
prefix += node.val;
seen.put(prefix, node);
}
做链表的时候 习惯用一个dummy dummy.next=head 用这种而不是用dummy=head 这样
2^31 这是4个字节的 int类型应该就是 2147483648 2e9
java long 8个字节
编程遇到需要取模的,计算的时候可以先取了 直接每次计算取结果 的模 避免后面超出空间搞得尴尬
如果前面不取的话,就算开了long 后面也可能超出long的上限 然后取模就显得很奇怪。
和的模 模的和 应该是一样的
dp动态规划的 如果只需要前面几个数的结果,可以不用开数组,直接用几个变量轮动就行了,节省空间
如果leetcode想要的函数参数和给的模板不一样,可以自己开一个新的,然后调用就行了;
hasNext和hasNextLine的区别
二者都是用于判断“有无键盘输入”的,有则返回true,没有则阻塞!一定记住是阻塞而不是返回false,很多人都说是返回false,但你查源码会发现是不会返回false的,他会让你一直阻塞在判断阶段,二者只是在细节上有不同
hasNext()方法会判断接下来是否有非空字符.如果有,则返回true,没有则阻塞。例如一直敲回车相当于一直判断为空字符,但是不会返回false,而是一直阻塞在判断阶段,直到你输入了非空字符
hasNextLine() 方法会根据行匹配模式去判断接下来是否有一行(包括空行),如果有,则返回true。这个没什么特别的,只要是你敲了回车那都是true并且不会阻塞
java处理长期不断输入的方法
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextInt()) { // 注意 while 处理多个 case
int a = in.nextInt();
int b = in.nextInt();
System.out.println(a + b);
}
数组填充数据
Arrays.fill(dist, Integer.MAX_VALUE);
类型转化相关的
将十六进制字符串转化为十进制整数 有0x的
Integer.parseInt(str.substring(2),16)
没有的就不用截取了
//将一个任意格式的数字转化为十六进制的字符串
String s= Integer.toHexString(a);
会自动打印十进制
int a=0x123;
System.out.println(a);
整型转化字符串
String s=String.valueOf(a);
System.out.println(s);
10
想要在main函数里测试 这样是相对比较简单的,只针对leetcode的题目
public static void main(String[] args) {
Solution solution=new Solution();
solution.cuttingRope(15);
}