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

URL:https://www.lintcode.com/problem/next-greater-element-i/description

描述

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

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

1.nums1nums2中的所有数字都是唯一的。
2.nums1nums2的长度不超过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;

即可:

发布了303 篇原创文章 · 获赞 550 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/qq_42410605/article/details/103160336