【华为机试刷题笔记】HJ3-明明的随机数

【华为机试刷题笔记】HJ3-明明的随机数_第1张图片

题目描述

明明生成了 N N N个1到500之间的随机整数。请你删去其中重复的数字,即相同的数字只保留一个,把其余相同的数去掉,然后再把这些数从小到大排序,按照排好的顺序输出。
数据范围: 1 ≤ n ≤ 1000 1 \leq n \leq 1000 1n1000 ,输入的数字大小满足 1 ≤ v a l ≤ 500 1 \leq val \leq 500 1val500
输入描述:
第一行先输入随机整数的个数 N N N 。 接下来的 N N N行每行输入一个整数,代表明明生成的随机数。 具体格式可以参考下面的"示例"。
输出描述:
输出多行,表示输入数据处理后的结果

示例1

输入:3
 	 2
 	 2
 	 1
输出:1
 	 2
说明:输入解释:
 	  第一个数字是3,也即这个小样例的N=3,说明用计算机生成了31500之间的随机整数,接下来每行一个随机数字,共3行,也即这3个随机数字为:
 	 2
 	 2
 	 1
 	 所以样例的输出为:
 	 1
 	 2 

题解

下面展示本人题解思路代码。

/* 
includes() 方法用于确定是否在字符串中找到子字符串.如果找到了子字符串,该方法返回true,否则返回false。
push() 方法可向数组的末尾添加一个或多个元素,并返回新的数组长度。
sort() 方法用于对数组的元素(字母或数字)进行升序或降序排列。默认排列顺序为按字母升序。
*/
const rl = require("readline").createInterface({ input: process.stdin })
var iter = rl[Symbol.asyncIterator]()
const readline = async () => (await iter.next()).value

void async function () {
  // Write your code here
  //记录随机整数的个数num
  let num = await readline()
  //创建arr数组用来存放结果
  let arr = new Array()
  //记录明明生成的num个随机数
  for (i = 0; i < num; i++) {
    let str = await readline()
    //如果arr中不存在str这个数,则将它存入arr
    if (!arr.includes(str)) {
      arr.push(str)
    }
  }
  //升序排列arr数组元素
  arr.sort((a, b) => {
    return a - b
  })
  //按题目输出格式需求输出
  arr.forEach(item => {
    console.log(item)
  })
}()

文章系原创,在阅读过程中如若有误,劳请指正;如若有妙解、疑惑也欢迎大家和我交流,感谢!

你可能感兴趣的:(快乐刷题每一天之华为机试103,javascript,前端,es6)