标签:必须 cat ret style 常量 分配 duplicate 执行 代码
题目:
给定一个排序的数组,删除重复的位置,使每个元素只显示一次并返回新的长度。
不要为另一个数组分配额外的空间,您必须使用常量内存来执行此操作。
例如,
给定输入数组nums = [1,1,2]
,
您的函数应返回长度= 2
,与前两个元素NUMS是1
和2
分别。无论你离开新的长度什么都不重要。
思路:
(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 }
26.删除排序数组中的重复元素(26. Remove Duplicates from Sorted Array)
标签:必须 cat ret style 常量 分配 duplicate 执行 代码
原文地址:http://www.cnblogs.com/xuzhiyuan/p/7660611.html