其他分享
首页 > 其他分享> > 下一个更大元素 I

下一个更大元素 I

作者:互联网

目录

题目描述

  1. 题目地址:https://leetcode.cn/problems/next-greater-element-i/
  2. 题目要求
    nums1 中数字 的 **下一个更大元素 **是指 在 nums2 中对应位置 右侧 的 **第一个 **比 大的元素。

给你两个 没有重复元素的数组 nums1 和 nums2 ,下标从 **0 **开始计数,其中nums1 是 nums2 的子集。

对于每个 0 <= i < nums1.length ,找出满足nums1[i] == nums2[j]的下标 j ,并且在nums2确定 nums2[j] 下一个更大元素 。如果不存在下一个更大元素,那么本次查询的答案是-1

返回一个长度为 nums1.length 的数组ans作为答案,满足 ans[i] 是如上所述的 下一个更大元素

解决方法一

解题思路

  1. 逐个计算nums1中的每个元素值nums [i] 在nums2中对应位置的右边的第一个比 nums1[i]大的元素值。具体地,我们使用如下方法:

解题代码

var nextGreaterElement = function(nums1, nums2) {
    const m = nums1.length, n = nums2.length;
    const res = new Array(m).fill(0);
    for (let i = 0; i < m; ++i) {
        let j = 0;
        while (j < n && nums2[j] !== nums1[i]) {
            ++j;
        }
        let k = j + 1;
        while (k < n && nums2[k] < nums2[j]) {
            ++k;
        }
        res[i] = k < n ? nums2[k] : -1;
    }
    return res;
};

解决方法二

解题思路

解题代码

标签:遍历,一个,res,元素,解题,更大,nums1,nums2
来源: https://www.cnblogs.com/xiayuxue/p/16600240.html