剑指 Offer 67. 把字符串转换成整数
首先trim()一下。
然后然断一下第一个char是'+' || '-' || Chara.isDigit();
再细判断符号;
然后一个细节:
//删除首位
s = Arrays.copyOfRange(s,1,s.length);//不能省
之后就正常的while()循环,在index不越界且当前char isDigit()的情况下更新ans;
面试题59 - II. 队列的最大值
依旧正常的双队列;
后进前出,辅助队列,一直近去大的:
while(!max.isEmpty() && value > max.peekLast()) {//Last
max.pollLast();//Last
}
max.offerLast(value);
唯有:
int value = a.pollFirst();
if(value == max.peekFirst()) {
max.pollFirst();
}
剑指 Offer 59 - I. 滑动窗口的最大值
关键在于,定义的队列存储的是下标。
这样方便将那些不在窗口中的值去除。
while(!index.isEmpty() && nums[i] >= nums[index.peekLast()]) {
index.pollLast();
}
index.offerLast(i);
while(index.peekFirst() <= i - k) { //while 注意这些First / Last
index.pollFirst();
}
剑指 Offer 35. 复杂链表的复制
建立一个HashMap【原 cur 节点, 新 cur 节点】;
目的在于,把所有节点都拿出来。
while(cur != null) {
map.put(cur, new Node(cur.val));
cur = cur.next;
}//建立完毕
cur = head;
while(cur != null) {
map.get(cur).next = map.get(cur.next);//get到新节点
map.get(cur).random = map.get(cur.random);
cur = cur.next;
}