代码随想录-数组练习
1
寻找一个目标值,用二分查找不断缩小区间。
class Solution {public int search(int[] nums, int target) {int left=0;int right=nums.length-1;while(left<=right){int mid=left+(right-left)/2;if(nums[mid]<target){left=mid+1;}else if(nums[mid]>target){right=mid-1;}else{return mid;}}return -1;}
}
第二题
不能删除元素,因为内存连续,只能覆盖元素,直接把不等于val的元素一个一个拉到最前面排序。
class Solution {public int removeElement(int[] nums, int val) {int count=0;for(int i=0;i<nums.length;i++){if(nums[i]!=val){nums[count++]=nums[i];}}return count;}
}
这里nums[count++]=nums[i] => nums[count]=nums[i];count++;