算法刷题Day1|704. 二分查找、35. 搜索插入位置、27.移除元素

704. 二分查找、35. 搜索插入位置、27.移除元素

前言

近期开始跟着Carl哥的代码随想录刷题,主要目的也是希望自己能够在进行大数据相关方向的求职和实践之余提升自己的代码水平,个人较为熟练的语言是Python,但是这次也想挑战一下自己,检验一下Java的学习成果。今天是理论上的刷题第三天,但是由于前两天过于繁忙,故决定于这个周五将前面落下的一些总结补上。Day1的主要集中点在数组的二分法处理。

704. 二分查找

题目链接|代码随想录文档讲解
主要重点是左闭右闭跟左闭右开;我认为要点总结如下:

  • 左闭右闭时,while循环写法应该满足
while(l <= r) ; //[l,r] 且l = r 是可以的
  • 左闭右闭时,while循环写法应该满足
while(l < r) ; //[l,r] l一定小于r
  • 在与target比较的过程中找准nums[mid]元素的定位
//左闭右闭
if(target < nums[mid]){
mid = r - 1; //因为闭区间,所以r必须向左一位
}
if(target > nums[mid]){
mid = l + 1; //l必须向右一位
}

//左闭右开
if(target < nums[mid]){
mid = r; //因为开区间,所以r不被包含
}
if(target > nums[mid]){
mid = l + 1; //左闭,l必须向右一位
}

35. 搜索插入位置

题目链接|代码随想录文档讲解

  • 要点在于分情况讨论的前提下,是否可以将多种情况纳入为一种,所以实际上只有两种情况:一种是target大于组内所有元素,只能安插在最后方;另一种情况就是插入组内,不论target是否在组内,都会替代那个大于等于它的元素的位置。
r = nums.length - 1;
//这里是一堆代码
return mid; //类似上面二分法,最后返回右边的索引值;

return r+1; //返回安插在数组最后的情况下 元素的索引值

27. 移除元素

题目链接|代码随想录文档讲解

  • 快慢指针,重点在于快指针用来排除数组内等于target的值,并跳过他们;从而把不等于target的值赋予慢指针指向的数组元素。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值