🌗 27. 移除元素
2022年6月9日
- algorithm
🌗 27. 移除元素
难度: 🌗
问题描述
解法
class Solution {
public int removeElement(int[] nums, int val) {
// 思路:
// 双指针法
int len = nums.length;
// 特殊情况特判
if(len == 0) {
return 0;
}
int left = 0;
int right = len - 1;
while(left < right) {
while(left < right && nums[left] != val) {
left ++;
}
while(left < right && nums[right] == val) {
right --;
}
swap(nums, left, right); // 原地交换
}
// left == right
if(nums[left] == val) {
return left; // 返回的是 长度而非下标
} else {
return left + 1;
}
}
private void swap(int[] nums, int left, int right) {
int tmp = nums[left];
nums[left] = nums[right];
nums[right] = tmp;
}
}