1053:交换一次的先前排列

This commit is contained in:
轩辕龙儿 2023-04-03 21:02:56 +08:00
parent e3696d1972
commit 1c8185c292
2 changed files with 113 additions and 0 deletions

View File

@ -0,0 +1,73 @@
////给你一个正整数数组 arr可能存在重复的元素请你返回可在 一次交换交换两数字 arr[i] arr[j] 的位置后得到的按字典序排列小于
//arr 的最大排列
//
// 如果无法这么操作就请返回原数组
//
//
//
// 示例 1
//
//
//输入arr = [3,2,1]
//输出[3,1,2]
//解释交换 2 1
//
//
// 示例 2
//
//
//输入arr = [1,1,5]
//输出[1,1,5]
//解释已经是最小排列
//
//
// 示例 3
//
//
//输入arr = [1,9,4,6,7]
//输出[1,7,4,6,9]
//解释交换 9 7
//
//
//
//
// 提示
//
//
// 1 <= arr.length <= 10
// 1 <= arr[i] <= 10
//
//
// Related Topics 贪心 数组 👍 117 👎 0
package leetcode.editor.cn;
// 1053:交换一次的先前排列
public class PreviousPermutationWithOneSwap {
public static void main(String[] args) {
Solution solution = new PreviousPermutationWithOneSwap().new Solution();
}
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public int[] prevPermOpt1(int[] arr) {
int size = arr.length;
for (int i = size - 1; i > 0; i--) {
if (arr[i] < arr[i - 1]) {
int j = size - 1;
while (arr[j] >= arr[i - 1] || arr[j] == arr[j - 1]) {
j--;
}
int tmp = arr[i - 1];
arr[i - 1] = arr[j];
arr[j] = tmp;
break;
}
}
return arr;
}
}
//leetcode submit region end(Prohibit modification and deletion)
}

View File

@ -0,0 +1,40 @@
<p>给你一个正整数数组 <code>arr</code>(可能存在重复的元素),请你返回可在&nbsp;<strong>一次交换</strong>(交换两数字 <code>arr[i]</code><code>arr[j]</code> 的位置)后得到的、按字典序排列小于 <code>arr</code> 的最大排列。</p>
<p>如果无法这么操作,就请返回原数组。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre>
<strong>输入:</strong>arr = [3,2,1]
<strong>输出:</strong>[3,1,2]
<strong>解释:</strong>交换 2 和 1
</pre>
<p><strong>示例 2</strong></p>
<pre>
<strong>输入:</strong>arr = [1,1,5]
<strong>输出:</strong>[1,1,5]
<strong>解释:</strong>已经是最小排列
</pre>
<p><strong>示例 3</strong></p>
<pre>
<strong>输入:</strong>arr = [1,9,4,6,7]
<strong>输出:</strong>[1,7,4,6,9]
<strong>解释:</strong>交换 9 和 7
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= arr.length &lt;= 10<sup>4</sup></code></li>
<li><code>1 &lt;= arr[i] &lt;= 10<sup>4</sup></code></li>
</ul>
<div><div>Related Topics</div><div><li>贪心</li><li>数组</li></div></div><br><div><li>👍 117</li><li>👎 0</li></div>