这题我没有细看要求,我一直按照无序算,写了两个循环,运行通过了结果也对,就是提交不上去,后来想到办法了不过没有实验,最后一位单独处理就行,应该是对的,但是这道题应该通不过,因为每个元素只能出现一次。
------------------------------------------------------------------
我自己写的,不正确,这个结果是[2,1],如果改成nums[tag++] = nums[i - 1],结果是[1,1],就是数组长度的问题,这个没反应过来呢,哈哈。
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; } }
这是看了答案以后修改的,这个跟我的思路有一点点类似,但是差别还是挺大的,虽然代码差别比较小,但是思路区别大。
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; } }