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


    题目要求

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

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

    样例

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


      
     }
    }

  • 相关阅读:
    Well, that was fun! An adventure in WCF, SSL, and Host Headers (转)
    算法还重要吗?
    Silverlight测试——利用Ranorex实现数据驱动测试
    MSSQl分布式查询
    Silverlight 4 CHM中文离线文档已提供下载
    快速打包你的应用程序——Inno Setup
    IE 9 Beta 测试Bug
    IE 9 Bate 泄露版
    Windows PowerShell初体验——.NET对象支持
    多样化实现Windows Phone 7本地数据库访问<2>
  • 原文地址:https://www.cnblogs.com/sunssh/p/6517104.html
Copyright © 2020-2023  润新知