1. 704.二分查找
左闭右闭
class Solution01 {//左闭右闭
public int search(int[] nums, int target) {
int mid=(nums.length-1)/2;
int l=0;
int r=nums.length-1;
while (l<=r) {
if(nums[mid]==target){
return mid;
}
if (nums[mid] > target) {
r = mid - 1;
mid = (r + l) / 2;
}
if (nums[mid] < target) {
l = mid + 1;
mid = (l + r) / 2;
}
}
return -1;
}
左闭右开
class Solution02{//左闭右开
public int search(int[] nums, int target) {
int l = 0;
int r = nums.length-1;
// for (int i = 0; i < nums.length;i++){
while (l<r) {
int mid = (l + r) / 2;
if (nums[mid] > target) {
r = mid;
} else if (nums[mid] < target) {
l = mid + 1;
} else if (nums[mid] == target) {
return mid;
}
}
// }
return -1;
}
}
2. 移除元素
双指针方法
class Solution {
public int removeElement(int[] nums, int val) {
int slow = 0;
for (int flast = 0;flast<nums.length;flast++){
if (val!=nums[flast]){
nums[slow] = nums[flast];
slow++;
}
}
return slow;
}}