龙空技术网

排序算法 给定一个数组,按找到每个元素右侧第一个比它大的数字

小焱2018 147

前言:

当前姐妹们对“数组中比较大小的程序代码”大致比较讲究,咱们都需要学习一些“数组中比较大小的程序代码”的相关文章。那么小编也在网络上搜集了一些对于“数组中比较大小的程序代码””的相关内容,希望我们能喜欢,姐妹们一起来了解一下吧!

方法一

function handler(arr = []) {    const result = [];    for (let i = 0, len = arr.length; i < len - 1; i++) {        for (let j = i + 1; j < len; j++) {            if(arr[j] > arr[i]) {                result[i] = arr[j];                break;            }            result[i] = -1;        }    }    result[arr.length - 1] = -1;    return result;}console.log(handler([2,6,3,8,10,9]));
方法二
function rightMax(arr) {    let len = arr.length    if (len === 0) {        return []    }    if (len === 1) {        return [-1]    }    let result = new Array(len)    result.fill(-1)    let idx_dp = new Array(len)    idx_dp.fill(-1)    let start = arr.length - 2    while (start >=0) {        let end = start + 1        while (arr[start] >= arr[end] && end !== -1) {            end = idx_dp[end]        }        if (end !== -1) {            idx_dp[start] = end            result[start] = arr[end]        }        start = start - 1    }    return result}
方法三
const arr = [2, 6, 3, 8, 10, 9]function getNewArr(arr) {  const result = []  const len = arr.length  for (let i=0; i<len; i++){    let counter = i + 1        while (counter < len && arr[i] >= arr[counter]){      counter ++    }      if (counter === len) {      result.push(-1)    } else {      result.push(arr[counter])    }  }    return result}console.log(getNewArr(arr))
方法四
function get(arr){    let stack = []    let n = arr.length    let res = new Array(n).fill(-1)    for(let i = 0; i < n; i++){        while(stack.length && arr[stack[stack.length - 1]] < arr[i]){            res[stack.pop()] = arr[i]        }        stack.push(i)    }    return res}console.log(get([2,6,3,8,10,9]))
方法五
//用apifunction mySort(arr) {  return arr.map((item, index) => {    let t = arr.find((item2, index2) => {      return item2 > item && index2 > index    })    if (t === undefined) t = -1    return t  })}console.log(mySort([2, 6, 3, 8, 10, 9]));
方法六
/* *示例: *给定数组:[2,6,3,8,10,9] *返回数组:[6,8,8,10,-1,-1] */function findBiggerRight(source: number[]): number[] {  const result: number[] = [];  const lastIdx = source.length - 1;  // 跳过最后一项  for (let slow = 0; slow < lastIdx; slow++) {    // 从当前元素的右边开始找起    for (let fast = slow + 1; fast < source.length; fast++) {      if (source[fast]! > source[slow]!) {        result.push(source[fast]!);        break;      }      // 最后一项也不大于 slow 对应的数      if (fast === lastIdx) {        result.push(-1);      }    }  }  result.push(-1); // 最后一项后面没有元素了,需要补充一位  return result;}
方法七
// 给定一个数组,按找到每个元素右侧第一个比它大的数字,没有的话返回-1 规则返回一个数const findRightFristMax = (arr) => {  let result = [];  const len = arr.length;  for (let i = 0; i < len - 1; i++) {    for (let j = i + 1; j < len; j++) {      if (arr[j] > arr[i]) {        result[i] = arr[j];        break;      }      result[i] = -1;    }  }  result[len - 1] = -1;  return result;}console.log(findRightFristMax([2, 6, 3, 8, 10, 9]));

标签: #数组中比较大小的程序代码