20240913 算法笔记复习

数组:

二分法:一定要注意这是个循环的动作所以是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再模拟一次相遇来求出最后的起点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值