代码随想录算法训练营第一天|704二分查找27移除元素
二分查找
class Solution {
public int search(int[] nums, int target) {
return binarySearch(nums, target);
}
public int binarySearch(int[] nums, int target){
int left = 0;
int right = nums.length - 1;
while(left <= right) {
int mid = left + ((right - left) >> 1);
if(nums[mid] < target) {
left = mid + 1;
}else if(nums[mid] > target) {
right = mid - 1;
}else{
return mid;
}
}
return -1;
}
}
移除元素
class Solution {
public int removeElement(int[] nums, int val) {
return removeElement3(nums, val);
}
public int removeElement2(int[] nums, int val) {
int length = nums.length;
for(int i = 0;i<length;i++) {
if(nums[i] == val) {
int temp = 1;
for(int j = i + 1;j<length;j++){
if(nums[j] == val) {
temp++;
}
else{
break;
}
}
for(int j = i;j < length - temp;j++){
nums[j] = nums[j + temp];
}
length -= temp;
}
}
return length;
}
public int removeElement3(int[] nums, int val) {
int slowIndex = 0;
int fastIndex = 0;
while(fastIndex < nums.length) {
if(nums[fastIndex] == val) {
fastIndex++;
}
else{
nums[slowIndex] = nums[fastIndex];
slowIndex++;
fastIndex++;
}
}
return nums.length - (fastIndex - slowIndex);
}
}