2020-05-10

1.题目描述

下一个更大元素

2.题解

1.直接进行暴力搜索
2.既然题目的标签是栈,就应该用到栈先进后出的特性,参考了官方的题解之后,我认为最能体现这种
特性的就是要找到下一个比当前元素值大的值。

3.代码

class Solution {
public:vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {int l1=nums1.size(),l2=nums2.size();vector<int> res;for (int i=0;i<l1;i++){int r=0;for (int j=l2-1;j>=0;j--){if (nums2[j]>nums1[i]){r=j;}if (nums2[j]==nums1[i]){if (r==0) res.push_back(-1);else res.push_back(nums2[r]);}}}return res;}
};
class Solution {
public:vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {int l1=nums1.size(),l2=nums2.size();map<int,int>mymap;stack<int>mystack;vector<int>myvector;if (l2==0) return myvector; // 如果当前num2数组为空的话mystack.push(nums2[0]);for (int i=1;i<l2;i++){while (!mystack.empty()&&nums2[i]>mystack.top()){ // 栈不为空且当前元素大于栈顶元素mymap[mystack.top()]=nums2[i];mystack.pop();}mystack.push(nums2[i]);}while(!mystack.empty()){ // 如何栈中还有元素的话mymap[mystack.top()]=-1;mystack.pop();}for (int i=0;i<l1;i++){myvector.push_back(mymap[nums1[i]]);}return myvector;}
};

503

和I的区别就是数组是循环数组,为了解决这一问题,我把nums数组复制两遍到nums2数组里面。
class Solution {
public:vector<int> nextGreaterElements(vector<int>& nums) {int l=nums.size();vector<int> res;if (l==0) return res; // 如果nums数组为空vector<int> nums2;for (int i=0;i<l;i++) nums2.push_back(nums[i]);for (int i=0;i<l;i++) nums2.push_back(nums[i]); // 循环数组map<int,int> mymap;stack<int> mystack;for (int i=0;i<2*l;i++){while(!mystack.empty()&&nums2[mystack.top()]<nums2[i]){mymap[mystack.top()]=i;mystack.pop();}mystack.push(i);}while(!mystack.empty()){mymap[mystack.top()]=-1;mystack.pop();}for (int i=0;i<l;i++) {if (mymap[i]!=-1) res.push_back(nums2[mymap[i]]);else res.push_back(-1);}return res;}
};

739

按照题目意思找到下一个比当前元素大的即可
class Solution {
public:vector<int> dailyTemperatures(vector<int>& T) {int l=T.size();map<int,int>mymap;stack<int>mystack;vector<int>myvector;if (l==0) return myvector; // 如果当前数组为空的话for (int i=0;i<l;i++){while (!mystack.empty()&&T[i]>T[mystack.top()]){ // 栈不为空且当前元素大于栈顶mymap[mystack.top()]=i-mystack.top();mystack.pop();}mystack.push(i);}while(!mystack.empty()){ // 如何栈中还有元素的话mymap[mystack.top()]=0;mystack.pop();}for (int i=0;i<l;i++){myvector.push_back(mymap[i]);}return myvector;}
};

496. 下一个更大元素 I/503. 下一个更大元素 II/739. 每日温度相关推荐

  1. 503. 下一个更大元素 II

    503. 下一个更大元素 II 题目 我的解答 分析 解答 官方解法 题目 给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素.数字 x 的下一个更大的元素是 ...

  2. Java实现 LeetCode 503 下一个更大元素 II

    503. 下一个更大元素 II 给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素.数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大 ...

  3. leetcode 503. 下一个更大元素 II

    给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素.数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它 ...

  4. LeetCode 503 下一个更大的元素 (单调栈)

    最近做每日一题,逐渐的有感觉了,虽然原题没做过,但是基本能想到其他题目类似的解法来解决不同的问题.比如这道题. 题干如下: 这一题要求下一个更大的元素,并且是当成循环数组来处理,所以,答案数组中,只可 ...

  5. 力扣【下一个更大元素】leetcode-503.下一个更大元素 Ⅱ:单调栈解法+循环数组解法

    题目: 思路与解法: 1.如果是暴力法,只需要遍历就可以了,但是那样的话时间复杂度就是O(N^2); 2.可以把这几个数字,抽象成为高度不一样的柱子: 3.寻找的过程,就是从当前柱子去看,被后面的哪一 ...

  6. 大数据云图:如何在大数据时代寻找下一个大机遇 - 电子书下载(高清版PDF格式+EPUB格式)...

    大数据云图_如何在大数据时代寻找下一个大机遇-大卫•芬雷布 在线阅读                   百度网盘下载(8544) 书名:大数据云图:如何在大数据时代寻找下一个大机遇 作者:大卫•芬雷 ...

  7. 分治法——查找问题 —— 寻找一个序列中第k小的元素和查找最大和次大元素

    查找问题: 问题一:寻找一个序列中第k小的元素 对于给定的含有n个元素的无序序列,求这个序列中第k(1<=k<=n)小的元素 分析思路: 假设无序序列存放在a[0 - n-1]中,若将a递 ...

  8. 2-9 prev + next选择器 “远亲不如近邻” 返回且只返回唯一-个元素。 而通过prev + next选择器就可以查找与“prev”元素紧邻的下一个“next”元素...

    prev + next选择器 俗话说"远亲不如近邻",而通过prev + next选择器就可以查找与"prev"元素紧邻的下一个"next" ...

  9. 编写程序,生成一种贯穿10*10字符数组(初始时全为字符'.')的“随机步法”。程序必须随机地从一个元素“走到”另一个元素,每次都向上、向下、向左或向右移动一个元素位置

    编写程序,生成一种贯穿10*10字符数组(初始时全为字符'.')的"随机步法".程序必须随机地从一个元素"走到"另一个元素,每次都向上.向下.向左或向右移动一个 ...

最新文章

  1. 【Android】CM在repo中使用local manifest
  2. 单词缩写(abbr.cpp)每日一题
  3. Android Intent And Intent Filter
  4. Y2011_M12_HeartChicken
  5. 在Linux系统下生产者消费者,Linux线程编程之生产者消费者问题
  6. 对BottomTagFragment的理解
  7. 一步一步写算法(之非递归排序)
  8. 使用客户端行为来丰富 ASP.NET的DataGrid(转)
  9. Hadoop:hadoop fs、hadoop dfs与hdfs dfs命令的区别
  10. html认识数字游戏大全,认识HTML列表元素
  11. 【Unity】Unity Pivot 与 Center Globle 与Lical
  12. java 双向链表循环_(java实现)双向循环链表
  13. NoClassDefFoundError:org.ksoap2.seri...
  14. HDU 5336 BFS
  15. 百度指数抓取-趋势截图+估算方法
  16. 《OpenCv视觉之眼》Python图像处理三 :Opencv图像属性、ROI区域获取及通道处理
  17. 为女性们点赞!Google 为女性提供更多支持
  18. 【面试题】能从底层角度聊聊volatile关键字的原理吗?
  19. 叶文贤:胸怀绿色润滑 锻造品牌灵魂
  20. `Stream`的`Collectors.reducing`与`Collectors.groupingBy`

热门文章

  1. 监督学习 | 决策树之Sklearn实现
  2. 这个为生信学习打造的开源Linux/Bash教程真香!!!
  3. 功能强大的TCGA再分析平台
  4. fcpx大胆流行标题插件 Bold Pop for mac
  5. php按照二维数组某个字段排序,PHP 二维数组根据某个字段排序
  6. php 定时缓存,php定时清理缓存文件的简单示例
  7. 【Ant Design Vue】之Grid栅格和Space间距
  8. Java笔记-JDK搭建WebService客户端其他调用方法
  9. MySQL高级理论-MVCC提交查询相关(版本链)
  10. Java工作笔记-JPA查询达梦7数据库(Spring Boot + ORM)