LintCode 1206. 下一个更大的数 I JavaScript算法

tech2023-08-11  102

描述

你有两个数组 nums1和nums2(互不重复),其中nums1是nums2的子集。 在nums2的相应位置找到nums1所有元素的下一个更大数字。

nums1中的数字x的下一个更大数字是nums2中x右边第一个更大的数字。 如果它不存在,则为此数字输出-1。

说明

1.nums1和nums2中的所有数字都是唯一的。 2.nums1和nums2的长度不超过1000。

样例

- 例子 1: 输入: nums1 = [4,1,2], nums2 = [1,3,4,2]. 输出: [-1,3,-1] 解释: 对于第一个数组中的数字4,在第二个数组中找不到下一个更大的数字,因此输出-1。 对于第一个数组中的数字1,第二个数组中的下一个更大数字是3。 对于第一个数组中的数字2,第二个数组中没有下一个更大的数字,因此输出-1- 例子 2: 输入: nums1 = [2,4], nums2 = [1,2,3,4]. 输出: [3,-1] 解释: 对于第一个数组中的数字2,第二个数组中的下一个更大数字是3。 对于第一个数组中的数字4,第二个数组中没有下一个更大的数字,因此输出-1

解析

const nextGreaterElement = function (nums1, nums2) { len1 = nums1.length len2 = nums2.length arr=[] for(let i = 0; i < len1; i++) { var v = nums1[i]; var n = nums2.indexOf(v); var ls = len2 - n + 1; for (let j = n; j < ls + n; j++) { arr[i] = v; if(v<nums2[j]){ arr[i] = nums2[j]; break; } } if(arr[i] == v){ arr[i] = -1; } } return arr; }

运行结果

最新回复(0)