博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
找下一个更大元素
阅读量:5174 次
发布时间:2019-06-13

本文共 1131 字,大约阅读时间需要 3 分钟。

给定两个没有重复元素的数组munsSubnumsAll,其中numsSubnumsAll的子集。找到numsSub中的每个元素在numsAll中的下一个比其大的元素。比如,numsSub中的一个元素x在numsAll中的下一个比其大的元素是指,x在numsAll中位置开始,下一个序号比其大值也比其大的第一个元素。如果不存在这个一个比其大的元素,则输出结果为-1。

示例:

numsSub = {4, 1, 2};

numsAll = {1, 3, 4, 2};
结果为:{-1, 3, -1};

numsSub = {4, 2, 9}

numsAll = {5, 4, 8, 2, 9, 7, 3};
结果为:{8, 9, -1};

代码:

int main(int argc, char *argv[]) {    int numsSub[] = {4, 1, 2};    int numsAll[] = {1, 3, 4, 2};    std::stack
s; std::unordered_map
nextBigger; for (int i = 0; i < (sizeof(numsAll)/sizeof(numsAll[0])); ++i) { while(!s.empty() && numsAll[i] > s.top()) { nextBigger[s.top()] = numsAll[i]; s.pop(); } s.push(numsAll[i]); } int bigger = -1; for (int i = 0; i < (sizeof(numsSub)/sizeof(numsSub[0])); ++i) { auto it = nextBigger.find(numsSub[i]); if (it == nextBigger.end()) { bigger = -1; } else { bigger = it->second; } std::cout << numsSub[i] << " next bigger number is: " << bigger << std::endl; }}

转载于:https://www.cnblogs.com/dongshanzhishi/p/11342389.html

你可能感兴趣的文章
centos 引导盘
查看>>
Notes of Daily Scrum Meeting(12.8)
查看>>
Apriori算法
查看>>
lr_start_transaction/lr_end_transaction事物组合
查看>>
.NET CLR基本术语
查看>>
ubuntu的home目录下,Desktop等目录消失不见
查看>>
建立,查询二叉树 hdu 5444
查看>>
[Spring框架]Spring 事务管理基础入门总结.
查看>>
2017.3.24上午
查看>>
Python-常用模块及简单的案列
查看>>
LeetCode 159. Longest Substring with At Most Two Distinct Characters
查看>>
jquery动态移除/增加onclick属性详解
查看>>
JavaScript---Promise
查看>>
Django基于admin的stark组件创建(一)
查看>>
C. Tanya and Toys_模拟
查看>>
springboot jar包运行中获取资源文件
查看>>
基于FPGA实现的高速串行交换模块实现方法研究
查看>>
Java Scala获取所有注解的类信息
查看>>
delphi ,安装插件
查看>>
case when then的用法-leetcode交换工资
查看>>