题解 | #明明的随机数#

明明的随机数

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]);
        }
    }
}

alt

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务