26. 删除排序数组中的重复项

    科技2026-04-15  5

    题目

    截图自官方

     

    代码

    class Solution { // 这个题自己的解法太丑陋。 // 一开始排完序后对如何返回res一直处理错误。不是多一个就是少一个。 // 后来想到应该排完序后,重新遍历一遍记录长度就行。这种思路简单些。 // 结果的时间,空间复杂度爆炸。 // public int removeDuplicates(int[] nums) { // if(nums.length==0){ // return 0; // } // // 这个不要也行 // // if(nums.length==1){ // // return 1; // // } // if(nums[0]==nums[nums.length-1]){ // return 1; // } // int n=nums.length; // int res=1; // // 排序过程 // for(int first=1;first<n;first++){ // if(nums[first]<=nums[first-1]){ // for(int second=first+1;second<n;second++){ // if(nums[second]>nums[first-1]){ // nums[first]=nums[second]; // break; // } // } // if(nums[first]==nums[nums.length-1]){ // break; // } // } // } // // 重新遍历一遍记录长度就行 // for(int i=1;i<n;i++){ // if(nums[i]<=nums[i-1]){ // break; // } // res++; // } // return res; // } // 官方双指针大法 // 思路:只要j等于i,就往后跳。直到不等于 public int removeDuplicates(int[] nums) { if(nums.length==0){ return 0; } int i=0; for(int j=1;j<nums.length;j++){ if(nums[i]!=nums[j]){ i++; nums[i]=nums[j]; } } return i+1; } }

     

    Processed: 0.013, SQL: 9