zoukankan      html  css  js  c++  java
  • 26.删除排序数组中的重复元素(26. Remove Duplicates from Sorted Array)

    题目:

    给定一个排序的数组,删除重复的位置,使每个元素只显示一次并返回新的长度。

    不要为另一个数组分配额外的空间,您必须使用常量内存来执行此操作。

    例如,
    给定输入数组nums = [1,1,2]

    您的函数应返回长度= 2,与前两个元素NUMS12分别。无论你离开新的长度什么都不重要。

    思路:

    (1)若数组的长度为0或者为1,则数组中不会存在重复的元素,此时直接返回数组的长度即可;
    (2)若数组的长度大于1,则用result来标记未重复元素的下标,result从零开始;从数组的第一个元素开始和nums[result]比较,若nums[i]!=nums[result]则则将result下移一位,并将nums[i]的值赋给nums[result](即nums[++result]=nums[i])然后将i移下下一位;若nums[i]==nums[result],则将i移向下一位;直到i==nums.lenth;
    (3)最后返回result+1;

    代码:

     1 class Solution {
     2     public int removeDuplicates(int[] nums) {
     3 
     4         if(nums.length==0||nums.length==1){//若数组长度为0或者为1则直接返回数组的长度即可;
     5             
     6             return nums.length;
     7             
     8         }
     9 
    10         int result=0;//原数组中未重复元素的数目
    11         
    12         for(int i=0;i<nums.length;i++){
    13             
    14             if(nums[i]!=nums[result]){
    15                 
    16                 nums[++result]=nums[i];   
    17                 
    18             }
    19         }
    20         
    21         return result+1;
    22     }
    23 }
  • 相关阅读:
    Alpha冲刺(5/10)
    Alpha冲刺(4/10)
    团队现场编程
    关于合同标准形的专题讨论
    关于相似标准形的专题讨论
    关于数学分析的计算题I(积分)
    关于数学分析的证明题III(级数)
    关于数学分析的证明题II(微分)
    关于数学分析的证明题I(积分)
    关于反常积分收敛的专题讨论
  • 原文地址:https://www.cnblogs.com/xuzhiyuan/p/7660611.html
Copyright © 2011-2022 走看看