题解 | #明明的随机数#
明明的随机数
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方法也可以,我自己写的算是笨方法(
华为机试刷题记录 文章被收录于专栏
记录一下手打代码的解题思路方便复习