URL:https://www.lintcode.com/problem/next-greater-element-i/description
描述
你有两个数组 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;
即可: