美文网首页
降序输出并且连续数字之间只输出最大值和最小值

降序输出并且连续数字之间只输出最大值和最小值

作者: kugua666 | 来源:发表于2020-09-13 16:50 被阅读0次

    题目:将数组进行降序,数组中不会出现重复数字,连续数字间,只取最大值和最小值。例如:[4, 7, 2, 1, 5, 8, 9, 11]输出为[11, 9, 7, 5, 4, 2, 1]。
    思路:先将数组降序,然后对不符合条件的数字给过滤掉,比如这一项如果即等于前一项减1,又等于后一项加1,说明的过滤掉。
    法一:

    function fn(arr) {
      arr.sort((a, b) => b - a)
      let res = []
      for (let i = 0; i < arr.length; i++) {    
        if(arr[i] !== arr[i + 1] + 1 || arr[i-1] !== arr[i] + 1) {             
            res.push(arr[i])     
        }      
      }
      return res
    }
    let a = [4, 7, 2, 1, 5, 8, 9, 11]
    console.log(fn(a)) // 输出[11, 9, 7, 5, 4, 2, 1]
    

    法二:

    let arr = [4, 7, 2, 1, 5, 8, 9, 11]
    arr = arr.sort((a, b) => b-a).filter((item, i) => item !== arr[i+1] + 1 || arr[i-1] !== item +1)
    console.log(arr) // 输出[11, 9, 7, 5, 4, 2, 1]
    

    相关文章

      网友评论

          本文标题:降序输出并且连续数字之间只输出最大值和最小值

          本文链接:https://www.haomeiwen.com/subject/guznektx.html