Leetcode 704 二分查找
[题目链接](704. 二分查找 - 力扣(LeetCode))
该题目主要关注部分为给数组增加下标时对right下标的处理,如果令right=nums.length,则在后续的代码中不需考虑left = right的情况。若令right=nums.length - 1,则在后续代码中需要考虑left = right 的情况。
令right = nums.length - 1 的情况下的代码
//right = nums.length - 1 的情况下的代码
class Solution {
public int search(int[] nums, int target) {
int left = 0 , right = nums.length - 1;
while(left <= right){
int mid =left + ((right-left) >> 1);
if(target > nums[mid]){
left = mid + 1;
}
else if(target < nums[mid]){
right = mid - 1;
}
else if(target == nums[mid]) {
return mid;
}
}
return -1;
}
}
令right = nums.length 的情况下的代码
//right = nums.length 的情况下的代码
class Solution {
public int search(int[] nums, int target) {
int left = 0 , right = nums.length;
while(left < right){
int mid =left + ((right-left) >> 1);
if(target > nums[mid]){
left = mid + 1;
}
else if(target < nums[mid]){
right = mid ;
}
else if(target == nums[mid]) {
return mid;
}
}
return -1;
}
}
Leetcode 27. 移除元素
[题目链接](27. 移除元素 - 力扣(LeetCode))
该题目需要考虑数组的基础理论,数组的元素在内存地址中是连续的,不能单独删除数组中的某个元素,只能覆盖。 在该题目中,使用快慢指针法来进行解决。 (数组中移除元素并不容易! | LeetCode:27. 移除元素_哔哩哔哩_bilibili)
简单理解为快指针 fastIndex 一直在数组上移动,当nums[fastIndex] = val 时,慢指针 slowIndex 在 nums[fastIndex] = val的位置暂停移动,直到下一个nums[fastIndex] != val 时,将nums[fastIndex]的数据写入 slowIndex 当前所在位置。
代码实现
//使用快慢指针法实现数组中删除元素
class Solution {
public int removeElement(int[] nums, int val) {
int fastIndex = 0;
int slowIndex;
for (slowIndex = 0; fastIndex < nums.length; fastIndex++){
if (nums[fastIndex] != val){
nums[slowIndex] = nums[fastIndex];
slowIndex++;
}
}
return slowIndex;
}
}