LintCode领扣算法问题答案:190. 下一个排列
190. 下一个排列
描述
给定一个若干整数的排列,给出按正数大小进行字典序从小到大排序后的下一个排列。
如果没有下一个排列,则输出字典序最小的序列。
样例 1:
输入:1,2,3
输出:1,3,2
样例 2:
输入:3,2,1
输出:1,2,3
样例 3:
输入:1,1,5
输出:1,5,1
挑战
不允许使用额外的空间。
原题传送门
文章目录
- 190. 下一个排列
- 描述
- 样例 1:
- 样例 2:
- 样例 3:
- 挑战
- 题解
- 最后说两句
- 声明
题解
public class Solution {/*** @param nums: An array of integers* @return: nothing*/public void nextPermutation(int[] nums) {// write your code herefor (int i = nums.length - 2; i >= 0; --i) {if (nums[i] < nums[i + 1]) {for (int j = nums.length - 1; j > i; -- j) {if (nums[j] > nums[i]) {this.swap(nums, i, j);this.reverse(nums, i + 1, nums.length - 1);return;}}}}this.reverse(nums, 0, nums.length - 1);}/*** 交换* @param nums* @param i* @param j*/private void swap(int[] nums, int i, int j) {int temp = nums[i];nums[i] = nums[j];nums[j] = temp;}/*** 反转* @param nums* @param i* @param j*/private void reverse(int[] nums, int i, int j) {for (int x = i; x < (i + j + 1) / 2; ++ x) {swap(nums, x, j - (x - i));}}
}
最后说两句
非常感谢你阅读本文章,如果你觉得本文对你有所帮助,请留下你的足迹,点个赞,留个言,多谢~
作者水平有限,如果文章内容有不准确的地方,请指正。
希望小伙伴们都能每天进步一点点。
声明
本文由二当家的白帽子博客原创,转载请注明来源,谢谢~
LintCode领扣算法问题答案:190. 下一个排列相关推荐
- 【精】LintCode领扣算法问题答案:入门
文章目录 23. 判断数字与字母字符 描述 题解 25. 打印X 描述 题解 37. 反转一个3位整数 描述 题解 145. 大小写转换 描述 题解 366. 斐波纳契数列 描述 题解 454. 矩阵 ...
- LintCode领扣算法问题答案:149. 买卖股票的最佳时机
149. 买卖股票的最佳时机 描述 假设有一个数组,它的第i个元素是一支给定的股票在第i天的价格.如果你最多只允许完成一次交易(例如,一次买卖股票),设计一个算法来找出最大利润. 样例 1: 输入: ...
- LintCode领扣算法问题答案:150. 买卖股票的最佳时机 II
150. 买卖股票的最佳时机 II 描述 给定一个数组 prices 表示一支股票每天的价格. 你可以完成任意次数的交易, 不过你不能同时参与多个交易 (也就是说, 如果你已经持有这支股票, 在再次购 ...
- LintCode领扣算法问题答案:501. 迷你推特
501. 迷你推特 描述 实现一个迷你的推特,支持下列几种方法 postTweet(user_id, tweet_text). 发布一条推特. getTimeline(user_id). 获得给定用户 ...
- 【精】LintCode领扣算法问题答案:1896. 捡胡萝卜
1896. 捡胡萝卜 描述 给定一个n * m 的矩阵 carrot, carrot[i][j] 表示(i, j) 坐标上的胡萝卜数量. 从矩阵的中心点出发,每一次移动都朝着四个方向中胡萝卜数量最多的 ...
- 【精】LintCode领扣算法问题答案:1029. 寻找最便宜的航行旅途(最多经过k个中转站)
1029. 寻找最便宜的航行旅途(最多经过k个中转站) 描述 有n个城市被一些航班所连接.每个航班 (u,v,w) 从城市u出发,到达城市v,价格为w. 给定城市数目 n,所有的航班flights.你 ...
- LintCode领扣算法问题答案:374. 螺旋矩阵
374. 螺旋矩阵 描述 给定一个包含 m x n 个要素的矩阵,(m 行, n 列),按照螺旋顺序,返回该矩阵中的所有要素. 样例 1: 输入:[[ 1, 2, 3 ], [ 4, 5, 6 ], ...
- 【精】LintCode领扣算法问题答案:1084. “马”在棋盘上的概率
1084. "马"在棋盘上的概率 描述 已知一个 NxN 的国际象棋棋盘,棋盘的行号和列号都是从 0 开始.即最左上角的格子记为 (0, 0),最右下角的记为 (N-1, N-1) ...
- 【精】LintCode领扣算法问题答案:306. 商品列表
306. 商品列表: 有一个商品列表,该列表是由L1.L2两个子列表拼接而成.当用户浏览并翻页时,需要从列表L1.L2中获取商品进行展示.展示规则如下: 用户可以进行多次翻页,用offset表示用户已 ...
最新文章
- 基于wayland的linux桌面,揭开Wayland的面纱(二):Wayland应运而生
- UICollectionViewController的用法1
- windbg基本简单步骤
- Python几个简单好用的基础功能
- 【caffe-Windows】cifar实例编译之model的生成
- Strus2第一次课:dom4j操作xml
- 【Hadoop】HIVE 数据表 使用
- UnrealEngine4 PBR Shading Model 概述
- mysql的存储引擎_Mysql数据库3种存储引擎有什么区别?
- 进程调度优先级JAVA_进程调度算法之短进程优先(Java)
- My in 2007
- 面向自动驾驶行业,Imagination推出性能高达600 TOPS的多核AI加速器
- SpringMVC XXX-servlet.xml ApplicationContext.xml
- 如何用阿里云服务器建立一个wordpress网站?
- Linux视频编解码库,Ubuntu 18.04 FFMPEG最新版本安装总结
- 从零到无学单片机——画原理图、PCB
- 【算法】Leetcode438. 找到字符串中所有字母异位词(每日一题)
- Laravel log channel 分组配置
- 分享一个很香的k8s.gcr.io Docker镜像拉取方法
- 一次性能优化引发的思考