Clarification:
Confused why the returned value is an integer but your answer is an array?
Note that the input array is passed in by reference, which means a modification to the input array will be known to the caller as well.
// nums is passed in by reference. (i.e., without making a copy)
int len = removeElement(nums, val);
// any modification to nums in your function would be known by the caller.
// using the length returned by your function, it prints the first len elements.
for (int i = 0; i < len; i++) {
print(nums[i]);
}
题目有提到上面的内容,意思是虽然让我们返回整型数字,但数组对应的元素也要和位置一一对应,比如原数组 1 1 2 2 3
,那么修改后的数组的前三位一定要是 1 2 3
JAVA
class Solution {
public int removeDuplicates(int[] nums) {
if (nums.length == 0) return 0;
int i = 0;
for (int j = 1; j < nums.length; j++) {
if (nums[i] < nums[j]) {
i++;
nums[i] = nums[j];
}
}
return i + 1;
}
}
Python
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
if len(nums) == 0:
return 0
i = 0
for j in range(len(nums)):
if (nums[i] < nums[j]):
i += 1
nums[i] = nums[j]
return i+1