704. 二分查找
- 刷题
https://leetcode.cn/problems/binary-search/
- 文章讲解
https://programmercarl.com/0704.%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE.html
- 视频讲解
https://www.bilibili.com/video/BV1fA4y1o715
-
题解1(左闭右开解法):
class Solution {
public int search(int[] nums, int target) {
// 左闭右开写法
int left = 0,right = nums.length;
while(left < right){
int middle = (left + right) / 2;
if(nums[middle] > target){
right = middle;
}
else if(nums[middle] < target){
left = middle + 1;
}
else{
return middle;
}
}
return -1;
}
}
class Solution {
public int search(int[] nums, int target) {
// 左闭右闭写法
int left = 0,right = nums.length-1;
while(left <= right){
int middle = (left + right) / 2;
if(nums[middle] > target){
right = middle - 1;
}
else if(nums[middle] < target){
left = middle + 1;
}
else{
return middle;
}
}
return -1;
}
}
27. 移除元素
- 刷题
https://leetcode.cn/problems/remove-element/
- 文章讲解
https://programmercarl.com/0027.%E7%A7%BB%E9%99%A4%E5%85%83%E7%B4%A0.html
- 视频讲解
https://www.bilibili.com/video/BV12A4y1Z7LP
-
题解(快慢指针解法):
class Solution {
public int removeElement(int[] nums, int val) {
// 快慢指针解法
int low = 0;
int size = nums.length;
for(int fast = 0;fast < size;fast ++){
if(nums[fast] != val){
nums[low ++] = nums[fast];
}
}
return low;
}
}