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;
    };
  • 相关阅读:
    There was an internal API error
    MD5加密
    CentOS 7 最小化安装简单配置
    Dalvik 虚拟机操作码
    BugkuCTF~Web~WriteUp
    BugkuCTF~代码审计~WriteUp
    Android 个人手机通讯录开发
    Android SQLite 数据库学习
    Android 程序结构
    2018~第三届南宁市网络安全技术大赛~nnctf~write-up
  • 原文地址:https://www.cnblogs.com/weizhibin1996/p/9971611.html
Copyright © 2011-2022 走看看