二分查找作为练习的第一道,其实一刷的时候是没有完全理解的,包括左闭右开和左闭右闭两种写法到底哪里不同,比较急于求成。基于模拟的思路,写出来的代码一般是左闭右闭比较契合,以下是代码
704
class Solution {
public int search(int[] nums, int target) {
int left=0, right = nums.length-1;
if(right==0){
if(nums[0]==target){
return 0;
}else{
return -1;
}
};
while(left<=right){
int mid = left + (right-left)/2;
if(nums[mid]==target){
return mid;
}else if(nums[mid]>target){
right=mid-1;
}else if(nums[mid]<target){
left=mid+1;
}
}
return -1;
}
}
27 移除元素
class Solution {
public int removeElement(int[] nums, int val) {
int n=nums.length;
int cnt=0;
for(int i=0;i<n;i++){
if(nums[i] != val){
nums[cnt]=nums[i];
cnt++;
}
}
return cnt;
}
}