删除排序数组中的重复数字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除排序数组中的重复数字相关的知识,希望对你有一定的参考价值。

题目要求:

描述:给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。

不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。

样例

给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]

 

源码:

package day01;

import java.util.Arrays;

public class Solution {

    public static void main(String[] args) {

        int [] arr={1,2,2,3,2,1,1,1,4,4,5 };
        int a =removeDuplicates(arr);
        System.out.println("删除数组中重复元素后数组的长度为:"+a);
        
    }
    public static int  removeDuplicates(int[] nums) {

        int count=0;
        if (nums.length==0 ||nums.length==1)
            return -1;
        else
        {
            
            Arrays.sort(nums);
            for(int i=0;i<nums.length-1;i++)
            {
                

                if(nums[i]!=nums[i+1])
                        {
                        nums[count]=nums[i];
                        count++;
                        }
                
                    
                
                
                else if(nums[i]==nums[i+1])
                    continue;
                            if(nums[nums.length-1]!=nums[nums.length-2])
                {
            
                    nums[count]=nums[nums.length-1];
                    count++;
                }
            for(int i=0;i<count;i++)
                System.out.println(nums[i]);
            return count;
    }
        
    }
}

PS:Eclipse中可以实现题目要求,但是在Lintcode中并不能通过,如果有人知道问题出在哪的话请给我教一下,谢谢。

 

整个思考和修改过程如下:

package day01;

import java.util.Arrays;

public class Solution {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int [] arr={1,2,2,3,2,1,1,1,4,4,5 };
        int a =removeDuplicates(arr);
        System.out.println("删除数组中重复元素后数组的长度为:"+a);
        
    }
    public static int  removeDuplicates(int[] nums) {
        // write your code here
        
        int count=0;
        if (nums.length==0 ||nums.length==1)
            return -1;
        else
        {
            
            Arrays.sort(nums);//11112223445
            for(int i=0;i<nums.length-1;i++)
            {
                
                    //return count+1;
                if(nums[i]!=nums[i+1])
                        {
                        nums[count]=nums[i];
                        count++;
                        }
                
                    
                
                
                else if(nums[i]==nums[i+1])
                    continue;
                /*else if((i+1)==nums.length&nums[i]!=nums[i+1])
                {
                    ++count;
                    nums[(count)]=nums[nums.length-1];
                }*/
            
                //
                //nums[i]=nums[i+1];
            }
        // if(nums==null||nums.length==0){  
                        // return 0;  
                      ///
                    // }  
                       
                  // int index=0;  
                //   for(int i=1;i<nums.length;i++){  
                         //if(nums[index]!=nums[i]){  
                          //  nums[index]=nums[i];  
                       //  }  
                  // }  
                    // return index+1;
            if(nums[nums.length-1]!=nums[nums.length-2])
                {
            
                    nums[count]=nums[nums.length-1];
                    count++;
                }
            for(int i=0;i<count;i++)
                System.out.println(nums[i]);
            return count;
    }
        
    }
}

 


  
 }
}

以上是关于删除排序数组中的重复数字的主要内容,如果未能解决你的问题,请参考以下文章

删除排序数组中的重复数字

删除排序数组中的重复数字

删除排序数组中的重复数字

删除排序数组中的重复数字

删除排序数组中的重复数字

LintCode(100)删除排序数组中的重复数字