刪除排序數組中的重複數字,排序數組重複數字
題目要求:
描述:給定一個排序數組,在原數組中重複資料刪除出現的數字,使得每個元素只出現一次,並且返回新的數組的長度。
不要使用額外的數組空間,必須在原地沒有額外空間的條件下完成。
範例
給出數組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; } }}
}
}