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 }