【LeetCode - 556】下一个更大元素 III(贪心,思维)
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(贪心,思维)相关推荐
- Java实现 LeetCode 556 下一个更大元素 III(数组的翻转)
556. 下一个更大元素 III 给定一个32位正整数 n,你需要找到最小的32位整数,其与 n 中存在的位数完全相同,并且其值大于n.如果不存在这样的32位整数,则返回-1. 示例 1: 输入: 1 ...
- LeetCode 556. 下一个更大元素 III
1. 题目 给定一个32位正整数 n,你需要找到最小的32位整数,其与 n 中存在的位数完全相同,并且其值大于n.如果不存在这样的32位整数,则返回-1. 示例 1: 输入: 12 输出: 21示例 ...
- 2021-08-25556. 下一个更大元素 III
556. 下一个更大元素 III 给你一个正整数 n ,请你找出符合条件的最小整数,其由重新排列 n 中存在的每位数字组成,并且其值大于 n .如果不存在这样的正整数,则返回 -1 . 注意 ,返回的 ...
- LeetCode 496. 下一个更大元素 I
599. 两个列表的最小索引总和 添加链接描述 假设 Andy 和 Doris 想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示. 你需要帮助他们用最少的索引和 ...
- LeetCode 496. 下一个更大元素 I(哈希)
1. 题目 给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集.找到 nums1 中每个元素在 nums2 中的下一个比其大的值. nums1 中数字 x ...
- LeetCode 496. 下一个更大元素 I 解题思路及C++实现
解题思路: 因为这两个int型的vector中不包含重复元素,所以考虑使用c++中的unordered_map,对num2进行遍历,找到每一个元素的下一个更大元素,这样的话,时间复杂度就是O(n). ...
- leetcode 503. 下一个更大元素 II(单调栈)
给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素.数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它 ...
- leetcode 503. 下一个更大元素 II
给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素.数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它 ...
- Java实现 LeetCode 503 下一个更大元素 II
503. 下一个更大元素 II 给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素.数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大 ...
- Java实现 LeetCode 496 下一个更大元素 I
496. 下一个更大元素 I 给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集.找到 nums1 中每个元素在 nums2 中的下一个比其大的值. nu ...
最新文章
- mysql 即学a又学b_MySQL学习第一天
- HTTPS-客户端与服务器三次握手过程(含wireshark分析)
- 【算法学习】最优二叉查找树(动态规划)
- [Python 网络编程] TCP、简单socket模拟ssh (一)
- leetcode1319. 连通网络的操作次数
- python监控服务器信息进行可视化_Python实现数据可视化,看如何监控你的爬虫
- 动态分区分配_关于硬盘的磁盘分区,干货分享!
- ProjectManage.rar 自动生成模板
- 【排列组合】只上代码不解释
- ide进行php编程快捷键,PHP IDE phpstorm 快捷键
- php fckeditor,PHP FCKeditor使用说明
- 并发原理及php高并发解决方案
- 0x00007FF73361E515 处(位于 基于多态的职工管理系统.exe 中)引发的异常: 0xC0000005: 职工岗位输入不是1,2,3,而是其他乱七八糟的
- 图片懒加载和Vue路由懒加载
- 位置不可用无法访问咋修复???
- Nginx的下载与安装及配置
- 生成微信小程序二维码,可跳转到小程序指定页面。
- java程序框图 质数_程序框图——数据大爆炸
- mac好用的正则表达式工具regular expression tool Reginald
- 推荐一款M1电脑可用的虚拟机软件
热门文章
- 莫名其秒的Cannot load JDBC driver class 'com.mysql.jdbc.Driv
- mysql 读取comment_Mysql 获取表的comment 字段
- python以下导入包的格式错误的是_ICMP python上的错误数据包
- php 简析对象,PHP白盒审计工具RIPS源码简析
- WinCE 修改系统字体 开启ClearType平滑字体
- python3 csv读写_python3 csv
- diff算法_vue源码解读 diff算法
- redis 多线程_唬人的Redis多线程,也就那么回事
- Web笔记——Filter过滤器
- 未来计算机论文1500,致未来的自己作文1500字