下一个更大元素 解题思路

LeetCode题目描述:

给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。找到 nums1 中每个元素在 nums2 中的下一个比其大的值。
nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出-1。

思路一:利用vector。注意下面函数返回类型为vector。并且注意:通过下标方式不能向vector中添加元素。

class Solution {
public:
    vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {
        vector<int> v;
        int i=0;  //访问nums2
        int flag=0;
        int m; //访问nums2
        while(i<nums1.size()){  
           m=0; //访问nums2
           while(nums1[i]!=nums2[m]){
               m++;
           } 
           m++;
           while(m<nums2.size()){
               if(nums1[i]>nums2[m]){
                    m++;
               }else{
                   break;
               }
           }
           if(m==nums2.size()){
              // v[i]=-1; 注意这种添加元素的写法不正确。要使用下面的方法。
               v.push_back(-1);
           }else{
               v.push_back(nums2[m]);
           }
           i++;
        }
        return v;
    }
};

思路二:官方解题思路(LeetCode网站上),利用栈和哈希表。

发布了51 篇原创文章 · 获赞 18 · 访问量 7394
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览