python小白刷算法 Day1:704. 二分查找,27. 移除元素

第一天任务:

数组理论基础,704. 二分查找,27. 移除元素

704. 二分查找

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

思路:将一个下标区间分成两半,中间是middle,左右分别是left, right。middle的数值是左右数值相加 //2 (取整)。

1) 左闭右闭: right = len(nums)-1。 当target < middle的值, 区间调整为 [left, middle-1];当 target > middle的值, 区间调整为 [middle+1, right];当 target = middle的值,返回middle。否则,target不存在,返回-1。

2)左闭右开:right = len(nums),left<right, [left, middle), [middle+1, right)

1) 左闭右闭

2) 左闭右开

3)  Python enumerate() 函数 

解释:https://www.runoob.com/python/python-func-enumerate.html

4)一行秒杀(目前还看不懂)

https://leetcode.cn/problems/binary-search/solutions/1927534/by-qghappywish-bv59/

27. 移除元素

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

思路:双指针法f=快指针,s=慢指针,因为要原地移除元素,所以需要再痛一个数组里操作。快指针需要遍历数组,把 !=val 的值赋给慢指针,直到循环完。返回s.

如果想返回新数组, 下一步就是把剩下的 = val 的值,用pop的方法弹出,就得到了新的数组。索引较复杂,len(nums)-1 是旧的数组最后一位,步数为-1, 往回倒到 s-1 ,但不包括s-1 。

1)双指针法

2)还不理解

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容