给定一个升序排列的数组,去掉重复的数,并返回新的数组的长度。
例如:
数组A = {1, 1, 2},你的函数应该返回长度2,新数组为{1, 2}
要求:
不能新开数组分配额外的空间。即常数空间限制。
提示:
输入一个整数n,以及其对应的数组A[n],输出新数组长度
样例输入
5 0 0 1 1 2
样例输出
3 =========================第一次code:
1 import java.util.ArrayList; 2 import java.util.List; 3 import java.util.Scanner; 4 5 public class Main 6 { 7 public static void main(String[] args) 8 { 9 Scanner input = new Scanner(System.in); 10 int n = input.nextInt(); 11 List<Integer>list = new ArrayList<Integer>(); 12 for(int i=0;i<n;i++) 13 { 14 list.add(input.nextInt()); 15 } 16 System.out.println(run(n,list)); 17 } 18 public static int run(int n,List list) 19 { 20 for(int i=0;i<list.size();i++) 21 { 22 for(int j=0;j<i;j++) 23 { 24 if(list.get(i)==list.get(j)) 25 { 26 list.remove(i); 27 i--; 28 } 29 } 30 } 31 return list.size(); 32 } 33 }
结果:
============================================第二次code:
1 import java.util.Scanner; 2 3 public class Main 4 { 5 public static void main(String[] args) 6 { 7 Scanner input = new Scanner(System.in); 8 int n = input.nextInt(); 9 int [] a = new int[n]; 10 for(int i=0;i<n;i++) 11 { 12 a[i]=input.nextInt(); 13 } 14 System.out.println(run(n,a)); 15 } 16 public static int run(int n,int []a) 17 { 18 for (int i = 0; i < a.length-1; i++) 19 { 20 if (a[i] == a[i + 1]) 21 { 22 n--; 23 } 24 } 25 return n; 26 } 27 }
时间: 2024-10-29 19:11:11