训练营Day1-704. 二分查找&27. 移除元素
# 704.二分查找法 (opens new window)
梦回大学算法课,简单的,不多说
class Solution {
public int search(int[] nums, int target) {
int left = 0, right = nums.length - 1;
while (left <= right) {
int mid = (right - left) / 2 + left;
int num = nums[mid];
if (num == target) {
return mid;
} else if (num > target) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 27.移除元素 (opens new window)
给定一个数组和目标值,输出删除目标值后的数组长度。
# 思路
如果题目没有限制必须 仅使用 O(1)
额外空间并 原地 (opens new window)修改输入数组。
那么我们可以考虑遍历旧数组,并把不等于val的值全部复制到新的数组里面去。但是它限制了
class Solution {
public int removeElement(int[] nums, int val) {
int slowIndex = 0; //慢指针
for(int fastIndex = 0;fastIndex<nums.length;fastIndex++){
if(nums[fastIndex]!=val){
nums[slowIndex] = nums[fastIndex];
slowIndex++;
}
}
return slowIndex;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
上次更新: 2023/06/07, 01:46:19