当前位置:网站首页>556. The next larger element III: simple construction simulation questions
556. The next larger element III: simple construction simulation questions
2022-07-03 14:35:00 【Gong Shui Sanye's Diary of writing questions】
Title Description
This is a LeetCode Upper 556. Next bigger element III , The difficulty is secondary .
Tag : 「 simulation 」、「 Double pointer 」
Give you a positive integer , Please find the smallest integer that meets the conditions , It consists of rearranging Each number present in the consists of , And its value is greater than . If there is no such positive integer , Then return to .
Be careful , The returned integer should be a An integer , If there is an answer that satisfies the meaning of the question , But it's not An integer , Also return to .
Example 1:
Input :n = 12
Output :21
Example 2:
Input :n = 21
Output :-1
Tips :
simulation
According to the meaning , Only given numbers Itself from high to low is 「 Not strictly descending 」 when , We can't find a legal value .
First , We can do it first Take it out, everyone , Deposit nums Array ( The first element of the array is the original number The lowest point of ).
Then try to find the first place to exchange idx( If you can't find , It indicates that there is no legal value , return ), From ( original The lowest point of ) Start looking for , Find the first 「 Descending 」 The location of idx, And then from Find a ratio in the range Exchange the largest decimal with it , Also from the Start looking for , Find the first satisfaction ratio Large number .
When the exchange is completed , It's better than The goal of becoming bigger has been achieved by idx Bit by bit ( Subsequent sorting should be arranged from small to large ), At the same time, after the exchange Still satisfied 「 Not strictly ascending 」 characteristic , So we can apply it 「 Double pointer 」 Flip .
Code :
class Solution {
public int nextGreaterElement(int x) {
List<Integer> nums = new ArrayList<>();
while (x != 0) {
nums.add(x % 10);
x /= 10;
}
int n = nums.size(), idx = -1;
for (int i = 0; i < n - 1 && idx == -1; i++) {
if (nums.get(i + 1) < nums.get(i)) idx = i + 1;
}
if (idx == -1) return -1;
for (int i = 0; i < idx; i++) {
if (nums.get(i) > nums.get(idx)) {
swap(nums, i, idx);
break;
}
}
for (int l = 0, r = idx - 1; l < r; l++, r--) swap(nums, l, r);
long ans = 0;
for (int i = n - 1; i >= 0; i--) ans = ans * 10 + nums.get(i);
return ans > Integer.MAX_VALUE ? -1 : (int)ans;
}
void swap(List<Integer> nums, int a, int b) {
int c = nums.get(a);
nums.set(a, nums.get(b));
nums.set(b, c);
}
}
Time complexity : Spatial complexity :
Last
This is us. 「 Brush through LeetCode」 The first of the series No.556 piece , The series begins with 2021/01/01, As of the start date LeetCode I have in common 1916 questions , Part of it is a locked question , We will finish all the questions without lock first .
In this series , In addition to explaining the idea of solving problems , And give the most concise code possible . If the general solution is involved, there will be corresponding code templates .
In order to facilitate the students to debug and submit code on the computer , I've built a warehouse :https://github.com/SharingSource/LogicStack-LeetCode .
In the warehouse address , You can see the links to the series 、 The corresponding code of the series 、LeetCode Links to the original problem and other preferred solutions .
边栏推荐
- Zzuli:1048 factorial table
- How to query the baby category of tmall on Taobao
- Tailing rushes to the scientific and Technological Innovation Board: it plans to raise 1.3 billion, and Xiaomi Changjiang is the shareholder
- 修改数据库中的记录为什么报这个错
- ConstraintLayout 的使用
- 别再问自己适不适合做软件测试了
- 7-9 one way in, two ways out (25 points)
- Protobuf and grpc
- Common commands for getting started with mongodb database
- ZABBIX saves the page blank after adding calculated items
猜你喜欢

tonybot 人形机器人 红外遥控玩法 0630

基因家族特征分析 - 染色体定位分析

必贝特医药冲刺科创板:年营收97万亏损1.37亿 拟募资20亿

Paper sharing: generating playful palettes from images

分布式事务(Seata) 四大模式详解

分布式事务(Seata) 四大模式详解

Sub-GHz无线解决方案Z-Wave 800 系列ZG23 soc和ZGM230S模块
![[qingniaochangping campus of Peking University] in the Internet industry, which positions are more popular as they get older?](/img/f6/fe61c84f289f0e74a45946dac687a6.jpg)
[qingniaochangping campus of Peking University] in the Internet industry, which positions are more popular as they get older?

Tonybot Humanoïde Robot Infrared Remote play 0630

Protobuf and grpc
随机推荐
NPM install is stuck with various strange errors of node NPY
Puzzle (016.4) domino effect
Mysql多表查询 #子查询
ZABBIX saves the page blank after adding calculated items
SSH访问控制,多次失败登录即封掉IP,防止暴力破解
7-6 mixed type data format input
Address book sorting
Convert string to decimal integer
String reverse order
7-23 currency conversion (using array conversion)
etcd集群权限管理和账号密码使用
adc128s022 ADC verilog设计实现
7-9 one way in, two ways out (25 points)
7-17 crawling worms (break exercise)
Etcd cluster permission management and account password usage
Luogu p4047 [jsoi2010] tribal division solution
Raft agreement
7-18 finding the single root of polynomial by dichotomy
添加Zabbix计算类型项目Calculated items
Sub GHz wireless solution Z-Wave 800 Series zg23 SOC and zgm230s modules