移除数组中的重复元素(简单题)

来源:互联网 发布:支票打印软件靠谱吗 编辑:程序博客网 时间:2024/05/22 15:58

给定一个升序排列的数组,去掉重复的数,并输出新的数组的长度。

例如:数组 A={1,1,2}A = \{1, 1, 2\}A={1,1,2},你的程序应该输出222 即新数组的长度,新数组为 {1,2}\{1, 2\}{1,2}

要求:不能新开数组分配额外的空间,即常数空间限制。

输入格式

输入一个整数 n(1≤n≤1000)n(1 \leq n \leq 1000)n(1n1000)

接下来一行 nnn 个整数 Ai(−1000≤Ai≤1000)A_i(-1000 \leq A_i \leq 1000)Ai(1000Ai1000),表示数组AAA 中的每个元素。

输出格式

输出一个整数,表示新数组长度。

样例输入

50 0 1 1 2

样例输出

3
c++我用了一个插入排序,排列数组,然后用一个for循环遍历数组。
#include<iostream>using namespace std;bool less2(int i, int j) {return i > j;}int main() {int num;cin >> num;int arr[1000];for (int i = 0; i < num; i++) {cin >> arr[i];}for (int i = 0; i < num-1; i++) {for (int j = i + 1; j > 0; j--) {if (less2(arr[i],arr[j])) {int d = arr[i];arr[i] = arr[j];arr[j] == d;}else {break;}}}int count = num;for (int i = 0; i < num-1; i++) {if (arr[i] == arr[i+1]) {count--;

}}cout << count;}
Java直接调用的Set数组,非常方便。
public static void main(String args[]){Scanner scan=new Scanner(System.in);int num=scan.nextInt();HashSet<Integer> array=new HashSet<Integer>();while(num-->0){array.add(scan.nextInt());}System.out.println(array.size());}

阅读全文
0 0
原创粉丝点击