704. 二分查找
原题链接: 704. 二分查找
class Solution {
public int search(int[] nums, int target) {
return binarysearch(nums, 0, nums.length-1, target);
}
public int binarysearch(int[] nums,int left, int right,int target){
if(left==right){
if(nums[left]==target){
return left;
}
else
return -1;
}
int midnum = (left+right)/2;
if(nums[midnum]==target){
return midnum;
}
else{
if(nums[midnum]<target){
return binarysearch(nums, midnum+1, right, target);
}
else{
return binarysearch(nums, left, midnum, target);
}
}
}
}
27. 移除元素
原题链接: 27. 移除元素
解题思路:
使用快慢指针
- 当快指针遇到目标数后要往后移动一位,直到数组结尾或者遇到了非目标数
- 然后把快指针的值覆盖到慢指针上,并且两个指针各向后移动一位
class Solution {
public int removeElement(int[] nums, int val) {
int count = 0;
int ptr1= 0;
int ptr2 = 0;
while(ptr2<nums.length){
while(ptr2<nums.length&&nums[ptr2]==val){
ptr2++;
count++;
}
if(ptr2<nums.length){
nums[ptr1] = nums[ptr2];
ptr2++;
ptr1++;
}
}
return nums.length-count;
}
}