当前位置:网站首页>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 .
边栏推荐
- x86汇编语言-从实模式到保护模式 笔记
- 动态获取权限
- 洛谷P5018 [NOIP2018 普及组] 对称二叉树 题解
- 7-14 sum integer segments (C language)
- 关于敏捷的一些概念
- 洛谷P5194 [USACO05DEC]Scales S 题解
- Tiantu investment sprint Hong Kong stocks: asset management scale of 24.9 billion, invested in xiaohongshu and Naixue
- 别再问自己适不适合做软件测试了
- 【北大青鸟昌平校区】互联网行业中,哪些岗位越老越吃香?
- Zzuli:1046 product of odd numbers
猜你喜欢

【北大青鸟昌平校区】互联网行业中,哪些岗位越老越吃香?

tonybot 人形機器人 紅外遙控玩法 0630

Programming language: the essence of type system

如何查询淘宝天猫的宝贝类目

剑指 Offer 28. 对称的二叉树

Zhonggan micro sprint technology innovation board: annual revenue of 240million, net loss of 17.82 million, proposed to raise 600million

修改数据库中的记录为什么报这个错

Accelerating strategy learning using parallel differentiable simulation

Tonybot humanoid robot checks the port and corresponds to port 0701

Analysis of gene family characteristics - chromosome location analysis
随机推荐
Understand the application scenario and implementation mechanism of differential segment
Analysis of gene family characteristics - chromosome location analysis
Sword finger offer 28 Symmetric binary tree
556. The next larger element III
Luogu p5194 [usaco05dec]scales s solution
NFT new opportunity, multimedia NFT aggregation platform okaleido will be launched soon
7-14 sum integer segments (C language)
String sort
retrofit
x86汇编语言-从实模式到保护模式 笔记
adc128s022 ADC verilog设计实现
Mongodb index
Tonybot humanoid robot checks the port and corresponds to port 0701
Zhejiang University Edition "C language programming (4th Edition)" topic set reference ideas set
Paper sharing: generating playful palettes from images
SSH访问控制,多次失败登录即封掉IP,防止暴力破解
表单文本框的使用(一) 选择文本
puzzle(016.3)千丝万缕
Zhonggan micro sprint technology innovation board: annual revenue of 240million, net loss of 17.82 million, proposed to raise 600million
分布式事务(Seata) 四大模式详解