zoukankan      html  css  js  c++  java
  • Day 60

    第496题:

    给定两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。找到 nums1 中每个元素在 nums2 中的下一个比其大的值。

    nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 。来源:力扣(LeetCode)

    1、nums1是nums2的子集,我们需要在nums2中寻找nums1内元素后面的第一个比自己大的值,然后存入数组是输出;

      可以利用哈希表来存储此元素和此元素后面第一个比自身大的元素,例如(1,2),将1,2 作为一个键值对put 到map中;

      然后利用栈来寻找每个元素和第一个比它大的元素,遍历数组,首个元素入栈,下一个元素如果大于前个元素,就将前个元素出栈,并且将两元素作为键值对加进map;

      如果后一元素不比前一元素大,就将该元素也入栈,最后先得出后面存在比自身大的元素,然后将不存在的元素和-1组合作为键值对加入map;

      最后遍历nums1,将键对应的值加入结果数组中。

      

    第503题:

    给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。来源:力扣(LeetCode)

    1、和上题差不多,不过现在是一个循环数组,且是求每一个元素下一个比它大的元素,主要是循环数组,说明数组最后的这个元素的后面不一定没有比它大的元素;

      解决方法可以将数组复制一份,两端相同的数组就可以将每个数后面的比它大的数找出来了;

      利用栈来比较每个数和它后面的数的大小,大就将这个大的数数存入结果数组,且自己出栈,不大就不出栈;

      依次得到结果。

      

     

  • 相关阅读:
    Spring基于注解的事务控制
    Spring基于配置的事务控制
    Spring基于注解配置AOP
    字符串构造,思维
    DP
    线段树二分
    计算机组成原理
    Graph Attention Networks (GAT) 代码解读
    Python 列表与字典
    2.运算方法和运算器
  • 原文地址:https://www.cnblogs.com/liang-yi-/p/13616556.html
Copyright © 2011-2022 走看看