1.寻找身高相近的小朋友(算法)

题目规则:

      小明升学到了小学1年级来到新班级后,发现其他小朋友身高参差不齐,然后就基于各小朋友和自己的身高差,对他们进行排序。输出排序结果,各正整数以空格分割和小明身高差绝对值最小的小朋友排在前面和小明身高差绝对值最大的小朋友排在后面如果两个小朋友和小明身高差一样,则个子较小的小朋友排在前面。


    //readline是Node.js里实现标准输入输出的封装好的模块,通过这个模块我们可以以逐行的方式读取数据流。使用require("readline")可以引用模块。
    const readline=require("readline");
    // 创建readline接口实例
     const rl=readline.createInterface({
        input:process.stdin,
        output:process.stdout,
     })
    //  定义一个空数组,监听文档流读取并通过箭头函数push到数组中。
     const lines=[];
     rl.on('line',(line)=>{
        lines.push(line);
        // 为什么这里数组长度是2
        if(lines.length===2){
            // lines.length===2表示读取了两次,分两次输入规则,第一次输入了小明的身高和班级其他人数
            // 第二次输入其他人的身高
            // 解构赋值的方式找到小明的身高h,和班级人数n(不包含小明)。..map会返回一个新新数组,处理方式是更具map内部的逻辑做相应的处理。
            // 解构赋值h和n以及其他人的身高数组对象。
            const [h,n]=lines[0].split(" ").map(Number);
            
            const heights=lines[1].split(" ").map(Number);

            console.log(getResult(h,heights));
            // 将lines数组清空
            lines.length=0;
        }
     })

     function getResult(h,heights){
        heights.sort((a,b)=>{
            // 定义两个变量接收元素中数组和小明身高h的绝对值
            const absA=Math.abs(a-h);
            const absB=Math.abs(b-h);
            // 条件判断,差的绝对值不相等,则按照差值从小到大的顺序排列,如果差的绝对值相等,则按照身高从小到大排列
            if(absA!=absB) return absA-absB;
            else return a-b
        })
        return heights.join(" ");
     }
  • 9
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值