zoukankan      html  css  js  c++  java
  • LeetCode496-下一个更大的元素(遍历)

    nums1是nums2的子集,并且不会有重复的元素。

    要找到nums1中的一个a,a在nums2里面,找到nums2里面,在a右边,与a最接近的,比a大的数字即可。

    最简单的方法。

    1、在nums2中遍历,直到遇到a,记录a的位置。然后从这个位置开始,继续遍历,找到一个大于a的数字即可。

    这样在右边的话,可能第一次就找到大于a的数字了,也可能在最后。

    因为是在右边找,有一种反向的思路,就是从右边开始遍历,遍历到a,就行。

    在这过程中,如果有大于a的,就记录。因为是从左往右的,越后出现的大于a的数字,就是最接近的。

    用最直接的思路,把题目解决了才是最重要的!!!!

    代码如下

    /**
     * @param {number[]} findNums
     * @param {number[]} nums
     * @return {number[]}
     */
    var nextGreaterElement = function(findNums, nums) {
        let result = [];
        for(let item of findNums){
    
            let bigger = item;
            
            let i=nums.length-1;
            
            while(true){
                //右边较大的意思是,在右边且大于item即可
                if(nums[i]>item){
                    bigger = nums[i];
                }
                
                //相等就是位置到了,要退出了
                if(nums[i]===item||i<0){
                    break;
                }
                
                i--;
            }
            
            if(i>=0&&bigger!=item){
                result.push(bigger);    
            }else{
                result.push(-1);
            }
            
            
        }
        return result;
    };
  • 相关阅读:
    阅读代码
    openSips
    rc.local 问题
    MyBatis框架使用(一)
    【数据结构杂谈】
    【AGC052A】
    【杜教筛学习笔记】
    CF618F Double Knapsack
    [NOI2016] 循环之美
    【BZOJ 4668 冷战】
  • 原文地址:https://www.cnblogs.com/weizhibin1996/p/9971611.html
Copyright © 2011-2022 走看看