Day1 LeetCode 704.二分查找 27.移除元素

这篇具有很好参考价值的文章主要介绍了Day1 LeetCode 704.二分查找 27.移除元素。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

704.二分查找

题目链接:力扣

文章讲解:代码随想录

视频讲解:手把手带你撕出正确的二分法 | 二分查找法 | 二分搜索法 | LeetCode:704. 二分查找_哔哩哔哩_bilibili

看完随想录之后的想法

两种情况1.左闭右闭 [ ]  2.左闭右开 [ ) 

当定义时为左闭右闭时,while中if的条件可以把边界排除

if(nums[middle] > target){
    right = middle - 1;
    }
if(nums[middle] < target){
    left = middle + 1;
    }
    

因为middle位置上的元素不可能包含target,下一次循环依然和定义的左闭右闭一样

当定义为左闭右开时,right位置上的元素不可能包含target,所以条件定义为

if(nums[middle] > target){
    right = middle ;
    }
if(nums[middle] < target){
    left = middle + 1;
    }
    

左开右闭好像不行

因为middle总落在靠left的位置(差值为单数)

循环中middle的值

right与left的差值为单数时middle落在中间靠left这边,差值为双数时middle落在正中间

相关的35.34        可以在看完代码之后在纸上演算一遍,帮助理解代码

27.移除元素

题目链接:力扣

文章讲解:代码随想录

视频讲解:数组中移除元素并不容易! | LeetCode:27. 移除元素_哔哩哔哩_bilibili

数组可以覆盖,删除不了

看完视频很神奇

双指针        fast指针遍历一遍所有元素,slow指针覆盖之后自加

自己的拓展

数学移位

二进制的左移右移

  int middle = left + ((right - left) >> 1);

此处 >> 1 的作用相当于除二

班助的解释

left + (right - left)是防止int类型数据溢出,因为left+right可能是一个比32bit大的数,先求差再加left可以防止溢出;二进制对于正数来说右移x位相当于除以2的x几次方,所以右移一位等于➗2,用位运算的好处是比直接相除的操作快

自己的理解

十进制数字转换为二进制,然后右移一位,之后转换回十进制,相当于除二不加余数

自己的困难

1.代码错误        

2.草稿上笔记乱

3.整理思路的时候乱

改进

1.看完题记录自己想法和思路,不急着看解析

2.写博客先输出,先想到啥写啥(尝试)

3.草稿保留好思路和想法文章来源地址https://www.toymoban.com/news/detail-614929.html

到了这里,关于Day1 LeetCode 704.二分查找 27.移除元素的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 代码随想录第一天 | LeetCode704.二分查找,LeetCode 27.移除元素

    数组理论基础要点: 数组也是数据结构的一种, 是存放在连续内存空间上的相同类型数据的集合。 数组注意点: 数组下标都是从0开始的。 数组内存空间的地址是连续的。 因为上述两点, 数组的在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要

    2024年02月08日
    浏览(40)
  • 704.二分查找 27.移除元素

    LeetCode 704 二分查找 1.左闭右开   2.左闭右闭     思路: 一(左闭右开):因为是左闭右开的区间,rigth指针的位置为待查找数组的右边界下一个位置,所以当 left right 的状态代表我们的数组还没查尽。 二(左闭右闭):因为是左闭右闭的区间,rigth指针的位置为待查找数组

    2024年02月13日
    浏览(32)
  • 代码随想录Python:704. 二分查找,27. 移除元素

    数组是非常基础的数据结构。 数组是存放在连续内存空间上的相同类型数据的集合。 题目: 给定一个  n  个元素有序的(升序)整型数组  nums  和一个目标值  target   ,写一个函数搜索  nums  中的  target ,如果目标值存在返回下标,否则返回  -1 。 题目链接:. - 力扣

    2024年02月13日
    浏览(39)
  • 【代码随想录算法第一天| 704.二分查找 27.移除元素】

    题目链接:二分查找 文章讲解:代码随想录.二分查找 视频讲解:手把手带你撕出正确的二分法 | 二分查找法 | 二分搜索法 | LeetCode:704. 二分查找_哔哩哔哩_bilibili 二分前提:有序数组,数组中无重复元素 方法:结合数组的特征,可以为左闭右闭区间[0, 数组长度-1],或者左

    2024年02月16日
    浏览(33)
  • 算法刷题Day1 二分查找+移除元素

    代码随想录-数组-1.数组理论基础 数组是存放在 连续内存空间 上的 相同类型 数据的 集合 优点:常数时间复杂度访问元素 缺点: 在删除或者增添元素的时候,就难免要移动其他元素的地址 ,时间复杂度为O(n) 代码随想录-数组-2.二分查找 前提条件 二分查找前提条件: 数组

    2024年02月10日
    浏览(41)
  • 代码随想录Day1 | 数组01- leetcode 704、27

    题目链接:二分查找 关键问题:         - 边界(left、right)、当前查找值(middle)                 - target大于当前查找值 -- 当前查找区域的右边,更改区间left                 - target小于当前查找值 -- 当前查找区域的左边,更改区间right                 - middle的计

    2024年02月16日
    浏览(27)
  • 算法刷题营【Day1】:: 704.二分查找:二分法详谈与相关刷题

    本内容是笔者结合《代码随想录》总结所得,记录学习过程,分享知识! 目录: 1. 开篇例题:704. 二分查找 2. 题解参考(模板写法) - - 2.1 方法一:左闭右闭写法 - - 2.2 方法二:左闭右开写法 3. 模板解释:左闭右闭 - - 3.1 区间划定 - - 3.2 left 、right 移动问题 - - 3.3 循环条件

    2024年02月04日
    浏览(33)
  • LeetCode刷题笔记-704.二分查找

     我们定义target在一个左右都是关闭的区间,[left,right] while(left = right) 这里使用= 因为left == right 是有意义的 int mid = left + ((right - left) / 2) 这么写是为了防止溢出 常用操作 当nums[mid] target 将right = mid - 1因为target 不可能在mid处取到 当nums[mid] target 将left = mid + 1

    2024年02月11日
    浏览(44)
  • 【LeetCode】27. 移除元素

     题目大概意思是剔除nums数组中出现的所有val值。可以用 快慢双指针法 来做。 快的指针在前面遍历找值不为val的元素的下标,慢的负责接收值不为val的元素,并及时更新数组。  

    2024年02月14日
    浏览(35)
  • leetcode27.移除元素

    个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【LeetCode】 🍓希望我们一起努力、成长,共同进步。 👉题目链接 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长

    2024年02月05日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包