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

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

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

      依次得到结果。

      

     

  • 相关阅读:
    错误日志记录
    解决连接Oracle 11g报ORA-01034和ORA-27101的错误
    windows和linux 下将tomcat注册为服务
    ORA-12170: TNS:Connect timeout occurred
    ubuntu修改时区和时间的方法
    SecureCRT中文显示乱码的解决方法
    修復 “Failed to bring up eth0″ in Ubuntu virtualbox
    HDU 1358 Period
    rcp(插件开发)点击按钮出现 The chosen operation is not enabled 解决办法
    CRM上线之路 走上了CRM实施顾问-第12天上班 -第三周
  • 原文地址:https://www.cnblogs.com/liang-yi-/p/13616556.html
Copyright © 2011-2022 走看看