704. 二分查找:
leetcode题目链接:https://leetcode.cn/problems/binary-search
leetcode AC记录如下:
class Solution {
public int search(int[] nums, int target) {
int begin = 0;
int end = nums.length - 1;
int mid = (end - begin) / 2 + begin;
while(begin <= end) {
mid = (end - begin) / 2 + begin;
if(target == nums[mid]) {
return mid;
} else if(target > nums[mid]) {
begin = mid + 1;
} else if(target < nums[mid]) {
end = mid - 1;
}
}
return -1;
}
}
27. 移除元素:
leetcode题目链接:https://leetcode.cn/problems/remove-element/
leetcode AC记录如下:
思路:使用双指针法。
前提条件:
右指针为目标值:右指针向左移动
循环结束条件:
左指针和右指针相遇(包含等于)
处理动作:
左指针为目标值,右指针为非目标值:左指针下标的值赋值为右指针值,结果值计数加1
代码如下:
class Solution {
public int removeElement(int[] nums, int val) {
int res = 0;
int leftP = 0;
int rightP = nums.length-1;
while(leftP <= rightP) {
if(nums[rightP] == val) {
rightP--;
} else if(nums[leftP] == val) {
nums[leftP] = nums[rightP];
rightP--;
leftP++;
res++;
} else {
leftP++;
res++;
}
}
return res;
}
}