https://leetcode-cn.com/problems/next-greater-element-iii/

给你一个正整数 n ,请你找出符合条件的最小整数,其由重新排列 n 中存在的每位数字组成,并且其值大于 n 。如果不存在这样的正整数,则返回 -1 。

注意 ,返回的整数应当是一个 32 位整数 ,如果存在满足题意的答案,但不是 32 位整数 ,同样返回 -1 。

示例 1:

输入:n = 12
输出:21
示例 2:

输入:n = 21
输出:-1

提示:

1 <= n <= 2^31 - 1

解题报告:

确实,抓住“后缀序列一定是递减的”这个特征,还是非常巧妙的。不然只能sort了。

思路:从个位数开始,从后往前扫描,对每一个位置i的x,找到后面>x的最小的数字,找到即break。并且让位置 i 后面的数字最小字典序排序(这里就是直接reverse就行了,因为一定可以保证这个后缀序列是递减的)

AC代码:

class Solution {
public:int nextGreaterElement(int n) {int a[55]={100,0}, p = 0, ok = 0, find_p = 0,find_q = 0;while(n) {a[++p] = n%10;n/=10;if(ok) continue;for(int i = 1; i<p; i++) {if(a[i] > a[p] && a[find_p] > a[i]) {find_p = i;ok = 1;} }find_q = p;}swap(a[find_p], a[find_q]);reverse(a+1, a+find_q);long long ret = 0;for(int i = p; i>=1; i--) ret = ret*10+a[i];if(ok == 0 || ret > 2147483647) return -1;else return ret;}
};

【LeetCode - 556】下一个更大元素 III(贪心,思维)相关推荐

  1. Java实现 LeetCode 556 下一个更大元素 III(数组的翻转)

    556. 下一个更大元素 III 给定一个32位正整数 n,你需要找到最小的32位整数,其与 n 中存在的位数完全相同,并且其值大于n.如果不存在这样的32位整数,则返回-1. 示例 1: 输入: 1 ...

  2. LeetCode 556. 下一个更大元素 III

    1. 题目 给定一个32位正整数 n,你需要找到最小的32位整数,其与 n 中存在的位数完全相同,并且其值大于n.如果不存在这样的32位整数,则返回-1. 示例 1: 输入: 12 输出: 21示例 ...

  3. 2021-08-25556. 下一个更大元素 III

    556. 下一个更大元素 III 给你一个正整数 n ,请你找出符合条件的最小整数,其由重新排列 n 中存在的每位数字组成,并且其值大于 n .如果不存在这样的正整数,则返回 -1 . 注意 ,返回的 ...

  4. LeetCode 496. 下一个更大元素 I

    599. 两个列表的最小索引总和 添加链接描述 假设 Andy 和 Doris 想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示. 你需要帮助他们用最少的索引和 ...

  5. LeetCode 496. 下一个更大元素 I(哈希)

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

  6. LeetCode 496. 下一个更大元素 I 解题思路及C++实现

    解题思路: 因为这两个int型的vector中不包含重复元素,所以考虑使用c++中的unordered_map,对num2进行遍历,找到每一个元素的下一个更大元素,这样的话,时间复杂度就是O(n). ...

  7. leetcode 503. 下一个更大元素 II(单调栈)

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

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

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

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

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

  10. Java实现 LeetCode 496 下一个更大元素 I

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

最新文章

  1. mysql 即学a又学b_MySQL学习第一天
  2. HTTPS-客户端与服务器三次握手过程(含wireshark分析)
  3. 【算法学习】最优二叉查找树(动态规划)
  4. [Python 网络编程] TCP、简单socket模拟ssh (一)
  5. leetcode1319. 连通网络的操作次数
  6. python监控服务器信息进行可视化_Python实现数据可视化,看如何监控你的爬虫
  7. 动态分区分配_关于硬盘的磁盘分区,干货分享!
  8. ProjectManage.rar 自动生成模板
  9. 【排列组合】只上代码不解释
  10. ide进行php编程快捷键,PHP IDE phpstorm 快捷键
  11. php fckeditor,PHP FCKeditor使用说明
  12. 并发原理及php高并发解决方案
  13. 0x00007FF73361E515 处(位于 基于多态的职工管理系统.exe 中)引发的异常: 0xC0000005: 职工岗位输入不是1,2,3,而是其他乱七八糟的
  14. 图片懒加载和Vue路由懒加载
  15. 位置不可用无法访问咋修复???
  16. Nginx的下载与安装及配置
  17. 生成微信小程序二维码,可跳转到小程序指定页面。
  18. java程序框图 质数_程序框图——数据大爆炸
  19. mac好用的正则表达式工具regular expression tool Reginald
  20. 推荐一款M1电脑可用的虚拟机软件

热门文章

  1. 莫名其秒的Cannot load JDBC driver class 'com.mysql.jdbc.Driv
  2. mysql 读取comment_Mysql 获取表的comment 字段
  3. python以下导入包的格式错误的是_ICMP python上的错误数据包
  4. php 简析对象,PHP白盒审计工具RIPS源码简析
  5. WinCE 修改系统字体 开启ClearType平滑字体
  6. python3 csv读写_python3 csv
  7. diff算法_vue源码解读 diff算法
  8. redis 多线程_唬人的Redis多线程,也就那么回事
  9. Web笔记——Filter过滤器
  10. 未来计算机论文1500,致未来的自己作文1500字