码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-03-07 23:05:23      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:int   i+1   nbsp   .so   static   clip   通过   rem   过程   

题目要求:

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

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

样例

给出数组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;
    }
        
    }
}

 


  
 }
}

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

标签:int   i+1   nbsp   .so   static   clip   通过   rem   过程   

原文地址:http://www.cnblogs.com/sunssh/p/6517104.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!