0
点赞
收藏
分享

微信扫一扫

LintCode 题目: 下一个更大的数 I

描述

你有两个数组 ​​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。

 

在代码段中添加:

vector<int> nums;
for (int i = 0; i < nums1.size(); i++) {
/* code */
for (int j = 0; j < nums2.size(); j++) {
/* code */
if(nums1[i]==nums2[j]){
int flag = 0;
for (int k = j; k < nums2.size(); k++) {
/* code */
if(nums2[k]>nums1[i]){
nums.push_back(nums2[k]);
flag = 1;
break;
}
}
if(flag==0){
nums.push_back(-1);
break;
}
}
}
}
return nums;

即可:

LintCode 题目: 下一个更大的数 I_数组


举报

相关推荐

0 条评论