从今天起开始刷leetcode.
第一题
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
题目不难,但是很久没有写java了太生疏了。。。这题准备三个指针(可不可以只要两个指针?
)
class Solution {
public int removeDuplicates(int[] nums) {
if (nums.length==0){
return 0;
}
int pre = nums[0];
int j = 1;
for(int i = 1;i<nums.length;i++) {
if (nums[i] != pre) {
nums[j] = nums[i];
pre = nums[i];
j++;
}
}
return j;
}
}
使用两个指针的情况下要注意到J是从0开始的,所以在最后要把J+1;
class Solution {
public int removeDuplicates(int[] nums) {
if (nums.length==0){
return 0;
}
int j = 0;
for(int i = 1;i<nums.length;i++) {
if (nums[i] != nums[j]) {
j++;
nums[j] = nums[i];
}
}
return j+1;
}
}
网友评论