[1]-代码随想录算法训练营-day1-数组-part1
代码随想录算法训练营第一天|数组-part1
1.Leecode 704.二分查找
题目
- https://leetcode.cn/problems/binary-search/
思路
- 二分查找法
刷随想录后想法
- 区间开闭
- 三指针
实现困难
- 开闭确定
- 边界条件处理,包含与不包含
实现代码
int search(int* nums, int numsSize, int target){ /* * 1.定义三个指针,left, right,middle * 2.比较middle值与target值大小,大则right=middle,小则left=middle * 3.重复步骤2,直到找到target或者right<left * 4.否则返回-1 * */ int left = 0; int right = numsSize-1; int middle = -1; while (left <= right ){ //左闭右闭 middle = (left+right)/2; if (nums[middle] == target) return middle; if (nums[middle] > target){ right = middle - 1; } else { left = middle + 1; } } return -1; }
学习收获
- 二分查找边界值与区间开闭的关系
2.Leecode 27.移除元素
题目
- https://leetcode.cn/problems/remove-element/
思路
- 暴力
刷随想录后想法
- 双指针思想
实现困难
- 尚无
实现代码
int removeElement(int* nums, int numsSize, int val){ int fast = 0; int slow = 0; for(fast; fast < numsSize; fast++){ if(nums[fast] != val){ nums[slow] = nums[fast]; slow++; } } return slow; }
学习收获
- 双指针思想解决数组元素移除问题