方法一:双指针
class Solution {
public int removeDuplicates(int[] nums) {
int l = 0, r = 0;
int n = nums.length;
while(r<n)
{
if(nums[l] != nums[r])
{
nums[++l] = nums[r];
}
r++;
}
return l + 1;
}
}
方法二:集合
首先创建一个ArrayList,并将不重复的数放入ArrayList中,对比数与数之间的关系,若相等则删除该数。
代码如下:
class Solution {
public int removeDuplicates(int[] nums) {
int a = 0, b = 0, n = nums.length;
ArrayList<Integer> arr = new ArrayList();
for(int i : nums)
{
arr.add(i);
}
for(int i = 0; i < n - 1; i++)
{
if(nums[i] == nums[i+1])
{
arr.remove(Integer.valueOf(nums[i+1]));
a++;
}
}
for(int i = 0; i < n - a; i++)
{
nums[i] = arr.get(i);
}
return n - a;
}
}
方法三:哈希表(在其他地方看到的)
代码如下:
class Solution {
public int removeDuplicates(int[] nums) {
Set<Integer> set = new HashSet<>();
int temp = 0;
for(Integer i : nums){
if(set.add(i) ){
nums[temp++] = i;
}
}
return temp;
}
}