描述
你有两个数组 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
;
}
运行结果