leetcode 0027
说明
只是为了记录一下,不求多快,也不深究。
会简要描述思路,代码中不写注释。
如碰到不会做的用了别人代码会在博客中标出。
题目描述
思路
不说了,跟上题差不多,遍历两边。
class Solution {
public int removeElement(int[] nums, int val) {
int len = nums.length;
if (len < 1) {
return 0;
}
if (len == 1 && nums[0] == val) {
return 0;
}
if (len == 1 && nums[0] != val) {
return 1;
}
int smallIdx = -1;
int count = 0;
for (int i = len - 1; i >= 0; i--) {
if (nums[i] == val) {
smallIdx = i;
} else {
count++;
}
}
if (smallIdx == -1) {
return len;
}
if (count == 0) {
return 0;
}
for (int i = smallIdx, j = smallIdx; i < len && j < len;) {
if (nums[i] != val) {
i++;
continue;
}
if (nums[j] == val) {
j++;
continue;
}
nums[i] = nums[j];
nums[j] = val;
i++;
j++;
}
return count;
}
}