任务我结束,刷题开始,26. Remove Duplicates from Sorted Array

这题我没有细看要求,我一直按照无序算,写了两个循环,运行经过告终果也对,就是提交不上去,后来想到办法了不过没有实验,最后一位单独处理就行,应该是对的,可是这道题应该通不过,由于每一个元素只能出现一次。数组

------------------------------------------------------------------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

相关文章
相关标签/搜索