题解 | #明明的随机数#
明明的随机数
http://www.nowcoder.com/practice/3245215fffb84b7b81285493eae92ff0
java语言来做这道题,其实使用treeSet应该是最方便的,但是由于这道练习题的重点在于数组的使用,因此我还是用数组来实现,纯数组来实现确实有点难度,我也是想了好久,如果真要机上测试,以我的能力还是比较困难的吧!!!
import java.util.Scanner;
/**
* @author XandJ 2022/4/7 17:56
**/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[] arr = new int[N];
int value;
int capacity = 0; // 记录去重后数组个数
int i = 0;
while(i < N){
value = sc.nextInt();
int pos = capacity;
int cur = pos;
// 查找插入值应插入的位置
while( pos > 0 && value < arr[pos-1] ){
pos--;
}
// 存在重复的数字时,则忽略本次输入
if(pos>0 && arr[pos-1] == value){
i++;
continue;
}
// 将数据右移动,空出插入值的位置
while (cur > 0 && cur > pos) {
arr[cur] = arr[cur - 1];
cur--;
}
arr[pos] = value;
capacity++;
i++;
}
for(int j = 0; j < capacity; j++){
System.out.println(arr[j]);
}
}
}