问题描述:
Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers.
If such arrangement is not possible, it must rearrange it as the lowest possible order (ie, sorted in ascending order).
The replacement must be in-place, do not allocate extra memory.
Here are some examples. Inputs are in the left-hand column and its corresponding outputs are in the right-hand column.1,2,3
→ 1,3,2
3,2,1
→ 1,2,3
1,1,5
→ 1,5,1
原问题链接:https://leetcode.com/problems/next-permutation/
问题分析
关于这个问题的分析在之前的一篇文章里分析过。这里就不再详述。针对这个问题我们只是需要稍微做一点修改。假设最开始的串是一个纯递减的。也就是说它达到一个串最大的值了。那么只需要将它翻转一下就可以了。详细的代码实现如下:
public class Solution { public void nextPermutation(int[] num) { int lastInc = findLastIncr(num); if(lastInc < 0) reverse(num, 0, num.length - 1); else { int l = findLastBigger(num, lastInc); swap(num, lastInc, l); reverse(num, lastInc + 1, num.length - 1); } } private int findLastIncr(int[] num) { for(int i = num.length - 1; i >= 1; i--) { if(num[i] > num[i - 1]) return i - 1; } return -1; } private int findLastBigger(int[] num, int lastIdx) { for(int i = num.length - 1; i > lastIdx; i--) if(num[i] > num[lastIdx]) return i; return -1; } private void reverse(int[] num, int l, int r) { while(l < r) { swap(num, l, r); l++; r--; } } private void swap(int[] num, int i, int j) { int temp = num[i]; num[i] = num[j]; num[j] = temp; } }
相关推荐
java java_leetcode题解之Next Permutation.java
Permutation 解决方法:掌握排列组合的字典序规律,即可。这个规律找不到,我最后还是直接看答案的。 LeetCode: 581. Shortest Unsorted Continuous Subarray 解决方法:无序列中最大最小值 2018-08-17 19:47 ...
Permutation (M) * -> index 주의, 부등호 하나 틀림 33. Search in Rotated Sorted Array (M) * -> 부등호 주의, 부등호 하나 틀림 34. Find First and Last Position of Element in Sorted Array (M) 35. Search ...
STL算法常用函数:分隔组合:next_permutation()是检索当前范围内的划分,并重新排序为下一个替换,leetcode 556下一个元素元素III prev_permutation()是替换指定范围内的序列重新排列它重新排序为上一个序列。...
leetcode category other hot keywords:Palindrome(mic), Subsequence Array 螺旋矩阵Spiral Matrix 顺时针打印矩阵 Next Permutation Product of Array Except Self 189.rotate-array 283.move-zero Range Sum ...
next_permutation.py - 将数字重新排列为按字典顺序排列的下一个更大的数字排列 permutations2.py - 返回所有可能的唯一排列 3sum_2.py - 查找数组中所有唯一的三元组,其总和为零。 3sum.py - 查找数组中所有唯一的...
最低加油次数 ...Next_permutation Stack, trick trick TOP 类似斐波拉契,一层层处理 字符串处理 TOP 完全背包 dfs Trick TOP next_permutation dfs or stl next_permutation dfs or stl TOP 排序后的字符串作
密码 leetcode回购 树 - - - - 杂凑 - - 二元搜寻 0004_findMedianSortedArrays - SLN 0033_search - SLN 0034_searchRange - SLN 0035_searchInsert - SLN ...0031_nextPermutation - SLN
Permutation 算法也可用于迭代地查找数组的排列。 也可用于迭代查找数组的排列。 13 . 14 . 15 . 16 . 17 . Algorithm to find kth largest element from an unsorted array in linear time. (1) If the number of ...
leetcode中国 LeetCode | LuoGu 题型记录 P1980 计数问题 (数位dp, 朴素算法) P1047 校门外的树 (线段树, ...全排列问题(next_permutation, dfs(最主要需要记住,置位后需要清0(f[i]=0))) P3392 涂国旗(组合) P23
lru cache leetcode LeetCode 这个库用于总结leetcode中遇到的习题 常用数据结构习题总结 1.线性表 解决进度 ...Next Permutation 公式 13 Permutation Sequence 公式 14 Valid Sudoku 15 Trapping Rain W
31.Next_Permutation_下一个排列【LeetCode单题讲解系列】
js js_leetcode题解之31-next-permutation.js
# [LeetCode](https://leetcode.com/problemset/algorithms/) !... Up to date (2016-12-18), there are `447` Algorithms / `13` ...31 | [Next Permutation](https://leetcode.com/problems/next-permutation/)| ...
leetcode_0031_next_permutation.c leetcode_0033_search_rotate.c : binary search, offer11 81 leetcode_0034_first_last_pos.c : binary search leetcode_0035_search_inseart.c : binary search leetcode...
- **Populating Next Right Pointers in Each Node**:连接二叉树每个节点的下一个右侧节点。 - **Convert Sorted List/Array to Binary Search Tree**:将有序列表或数组转换为二叉搜索树。 - **Path Sum II**:...
**1.28 Next Permutation (31)** - **问题描述**:实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 - **解题思路**: - 从后向前找到第一个升序对 (nums[i-1], nums[i])。...
NextPermutation 下一排序 完成 DFS 题目 说明 状态 NumIslands 岛屿数量 完成 DivideAndConquer 题目 说明 状态 MaxSubArray 最大子序和 完成 Back Tracing 题目 说明 状态 GenerateParenthesis 括号生成 完成 ...
lru缓存leetcode 力扣日记 欢迎来到我的 LeetCode 期刊库。 我的每个问题都将包括一个初始计划阶段,在这个阶段我将用我自己的话来...Permutation (Medium) 34. Find First and Last Position of Element in Sorted Arr