题解 | #明明的随机数#

明明的随机数

https://www.nowcoder.com/practice/3245215fffb84b7b81285493eae92ff0

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int num  = in.nextInt();
        int[] a = new int[num];
        int temp;
        for (int i = 0; i < num; i++) {
            a[i] = in.nextInt();
        }

        //冒泡排序
        for (int j = 0; j < num - 1 ; j++) {
            for (int k = 0; k < num - 1 - j ; k++) {
                if (a[k] > a[k + 1]) {
                    temp = a[k];
                    a[k] = a[k+1];
                    a[k+1] = temp;
                }

                else if (a[k+1] == a[k]) {
                    a[k+1] = 999;
                    //标记重复
                }

            }
        }
        /*
        //再次冒泡排序将所有999排至末尾
        for (int j = 0; j < num - 1 ; j++) {
            for (int k = 0; k < num - 1 - j ; k++) {
                if (a[k] > a[k + 1]) {
                    temp = a[k];
                    a[k] = a[k+1];
                    a[k+1] = temp;
                }
            }
        }
        */
        for (int j = 0; j < num; j++) {
            if(a[j] != 999){
                System.out.println(a[j]);
            }
            
        }
    }
}

简单复习一下冒泡排序,并将排序中检测到的重复项标记为特殊值(考虑到题解数值不大于500),之后再筛选一遍将最大项筛除就可。

如果不能使用特殊值标记的话,用其他java方法也可以,我自己写的算是笨方法(

华为机试刷题记录 文章被收录于专栏

记录一下手打代码的解题思路方便复习

全部评论

相关推荐

有担当的灰太狼又在摸鱼:零帧起手查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务