您的位置:首页 > 其它

对一组数据,按从小到大的顺序输出这组数据中的不相等的数,并输出不相等的数据有多少个

2016-10-10 11:34 573 查看
输入

输入有2行,第1行为1个正整数,表示所生成的随机数的个数:

N
第2行有N个用空格隔开的正整数,为所产生的随机数。

输出

输出也是2行,第1行为1个正整数M,表示不相同的随机数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。

样例输入

10
20 40 32 67 40 20 89 300 400 15


样例输出

8
15 20 32 40 67 89 300 400


要求从小到大进行输出,我们容易想到使用数组,因为数组中一个排序的方法,但是我们是想排序呢??还是先比较数据,得到不相等的记录后进行排序呢??一般我们会想使用先求不相等的数,,,但是我们先排序的话,那么久更加容易比较数据是否有相等的,只需临近的数据进行比较即可,因此我们先进性排序,排序好后,让临近的数据比较,如果相等就让这个相等的数为0,最后遍历数组时,输出不为0的数据即可,这样输出的数据仍然是按照从小到大的顺序进行排序的,具体代码如下:

<span style="font-size:14px;">import java.util.Arrays;
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);

int n = sc.nextInt();

int arr[] = new int
;
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
}

Arrays.sort(arr);

int k=0;
for (int i = 0; i < arr.length-1; i++) {
if (arr[i] == arr[i+1]) {
k++;
arr[i] = 0;
}
}

System.out.println(arr.length-k);

for (int i = 0; i < arr.length; i++) {
if (arr[i]!=0) {
System.out.print(arr[i]+" ");
}
}
}
}
</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐