代码随想录训练营第一天 LeetCode704 二分查找 LeetCode27 移除元素

文章介绍了如何使用二分查找算法解决LeetCode中的问题,探讨了二分查找的边界处理,并提供了两种不同区间的实现。此外,还讲解了如何在原数组上高效地移除元素,避免创建新数组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

704. 二分查找

题目链接:https://leetcode.cn/problems/binary-search/

文章讲解:https://programmercarl.com/0704.%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE.html

视频讲解:https://www.bilibili.com/video/BV1fA4y1o715

27. 移除元素

题目链接:https://leetcode.cn/problems/remove-element/

文章讲解:https://programmercarl.com/0027.%E7%A7%BB%E9%99%A4%E5%85%83%E7%B4%A0.html

视频讲解:https://www.bilibili.com/video/BV12A4y1Z7LP

感想:二分查找因为以前有所了解,所以知道大概思路,但是一直没有太理解那个边界的问题,看完随想录后对于边界问题更加理解了,移除元素看完以后的第一反应是创建一个新的数组,把不需要移除的元素赋给新的数组。看完随想录后,发现可以直接在一个数组上实现,更加简便。

二分查找代码:

左闭右闭区间

int search(int* nums, int numsSize, int target){

int left = 0 ;

int right = numsSize ;

int middle ;

while(left <right){

middle = (left+right)/2;

if(nums[middle]>target){

right = middle ;

}else if(nums[middle] < target){

left = middle+1 ;

}else{

return middle ;

}

}

return -1 ;

}

左闭右开区间

int search(int* nums, int numsSize, int target){

int left = 0 ;

int right = numsSize ;

int middle ;

while(left <right){

middle = (left+right)/2;

if(nums[middle]>target){

right = middle ;

}else if(nums[middle] < target){

left = middle+1 ;

}else{

return middle ;

}

}

return -1 ;

}

移除元素代码

int removeElement(int* nums, int numsSize, int val){

int slow = 0 ;

int fast ;

for(fast = 0 ; fast < numsSize; ++fast){

if(nums[fast]!= val){

nums[slow] = nums[fast];

slow++;

}

}

return slow ;

}

第一次写博客,不知道为什么无法上传图片。链接过来点进去也是空的,只能写完以后ctrl c,ctrl v。

希望这是一个好的开始,以后能够有总结和写博客的习惯。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值