这题我没有细看要求,我一直按照无序算,写了两个循环,运行经过告终果也对,就是提交不上去,后来想到办法了不过没有实验,最后一位单独处理就行,应该是对的,可是这道题应该通不过,由于每一个元素只能出现一次。数组
------------------------------------------------------------------rem
我本身写的,不正确,这个结果是[2,1],若是改为nums[tag++] = nums[i - 1],结果是[1,1],就是数组长度的问题,这个没反应过来呢,哈哈。io
class Solution {
public int removeDuplicates(int[] nums) {
int tag = 0;
if(nums.length == 0) return 0;
for(int i = 1;i < nums.length;i++){
if(nums[i - 1] != nums[i]){
nums[tag++] = nums[i];
}
}
return tag + 1;
}
} class
这是看了答案之后修改的,这个跟个人思路有一点点相似,可是差异仍是挺大的,虽然代码差异比较小,可是思路区别大。循环
1.tag默认为第一个元素,与第二个元素进行比较,若是不相等,那么把与tag比较的元素,赋值给index=++tag的位置,tag永远是不重复下标的最后一位,把不重复数据添加到++tag的位置,这个思路很重要,我怎么没想出来呢,想出来的跟这个差异比较大。不过也有点进步了,我本身也能写出来点了,加油,量变产出质变数据
class Solution {
public int removeDuplicates(int[] nums) {
int tag = 0;
if(nums.length == 0) return 0;
for(int i = 1;i < nums.length;i++){
if(nums[tag] != nums[i]){
nums[++tag] = nums[i];
}
}
return ++tag;
}
} return