二分查找
文档讲解:代码随想录 (programmercarl.com)
视频补充讲解:5分钟学会:二分查找_哔哩哔哩_bilibili
状态:一刷已完成
用时:一刷用时10min
要点
1. 使用条件:有序(升序、降序)、元素不重复的数组
2. 目标问题:判断一个数在不在这个数组里,在则返回下标,不在则返回-1
3. 步骤
(1)首末位置分别设置left, right指针,(left+right)//2设置mid指针
(2)array[mid]<target, left=mid+1继续循环; array[mid]>target,right=mid-1继续循环; array[mid]== target,输出mid
4. 时间复杂度:O(logn) 空间复杂度:O(1)
相关题目完成情况
题目链接:35. 搜索插入位置 - 力扣(LeetCode)
题目难度:简单
完成状态:一刷完成
完成时间:一刷用时9min
题目链接:34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode)
题目难度:中等
完成状态:一刷完成
完成时间:一刷用时9min
题目链接:69. x 的平方根 - 力扣(LeetCode)
题目难度:简单
完成状态:一刷完成
完成时间:一刷用时10min
题目链接:367. 有效的完全平方数 - 力扣(LeetCode)
题目难度:简单
完成状态:一刷完成
完成时间:一刷用时9min
移除元素
文档讲解:代码随想录 (programmercarl.com)
题目链接:27. 移除元素 - 力扣(LeetCode)
状态:一刷已完成
用时:一刷用时2min
要点
1. 目标问题:一个数组中删除目标元素,保留其余元素并形成新数组
2. 优化的思路:将暴力法两层循环的方式优化为只有一层循环,新数组通过慢指针实现覆盖
3. 步骤:设置fast=0, slow=0; 如果fast指针位置的元素不是要删除的,slow位置的元素更新为nums[fast];如果fast指针位置的元素是要删除的,slow指针不变,slow指针指向的元素不变,直到fast指向的值不再是要删除的元素。