数组:
二分法:一定要注意这是个循环的动作所以是while(),直到逼近一个值,如果这个值不是的话那就直接return-1.
移除元素:利用双指针法的关键是直接考虑将找到的target用后面不是target的值附上去。slow指针就像是在端盘子等着fast指针给他递东西,fast指针遇到target就往后跳。
螺旋矩阵:
最重要的是那个画圈逻辑
int count = 1;
for(j=starty;j<n-offset;j++){
nums[startx][j]=count++;
}//一圈的第一条横边
for(i=startx;i<n-offset;i++){
nums[j][i]=count++;
}//一圈的第一条竖边
for(;j>starty;j--){
nums[j][i]=count++;
}//一圈的第二条横边
for(;i>startx;i--){
nums[j][i]=count++;
}//一圈的第二条横边
每转过一圈,其实点位变化,边长变化。特殊情况是n为奇数。
链表:
移除链表元素:
每次迭代删完元素了,cur->next 也就更新了,不是用for循环,而是用while
关键:删除某个元素一定是指向前一位
环形回路:
首先要能反应过来有环有两快慢指针就会发生相遇。主要是很难想到相遇时的等量关系以及用index再模拟一次相遇来求出最后的起点。