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. 下一个排列相关推荐

  1. 【精】LintCode领扣算法问题答案:入门

    文章目录 23. 判断数字与字母字符 描述 题解 25. 打印X 描述 题解 37. 反转一个3位整数 描述 题解 145. 大小写转换 描述 题解 366. 斐波纳契数列 描述 题解 454. 矩阵 ...

  2. LintCode领扣算法问题答案:149. 买卖股票的最佳时机

    149. 买卖股票的最佳时机 描述 假设有一个数组,它的第i个元素是一支给定的股票在第i天的价格.如果你最多只允许完成一次交易(例如,一次买卖股票),设计一个算法来找出最大利润. 样例 1: 输入: ...

  3. LintCode领扣算法问题答案:150. 买卖股票的最佳时机 II

    150. 买卖股票的最佳时机 II 描述 给定一个数组 prices 表示一支股票每天的价格. 你可以完成任意次数的交易, 不过你不能同时参与多个交易 (也就是说, 如果你已经持有这支股票, 在再次购 ...

  4. LintCode领扣算法问题答案:501. 迷你推特

    501. 迷你推特 描述 实现一个迷你的推特,支持下列几种方法 postTweet(user_id, tweet_text). 发布一条推特. getTimeline(user_id). 获得给定用户 ...

  5. 【精】LintCode领扣算法问题答案:1896. 捡胡萝卜

    1896. 捡胡萝卜 描述 给定一个n * m 的矩阵 carrot, carrot[i][j] 表示(i, j) 坐标上的胡萝卜数量. 从矩阵的中心点出发,每一次移动都朝着四个方向中胡萝卜数量最多的 ...

  6. 【精】LintCode领扣算法问题答案:1029. 寻找最便宜的航行旅途(最多经过k个中转站)

    1029. 寻找最便宜的航行旅途(最多经过k个中转站) 描述 有n个城市被一些航班所连接.每个航班 (u,v,w) 从城市u出发,到达城市v,价格为w. 给定城市数目 n,所有的航班flights.你 ...

  7. LintCode领扣算法问题答案:374. 螺旋矩阵

    374. 螺旋矩阵 描述 给定一个包含 m x n 个要素的矩阵,(m 行, n 列),按照螺旋顺序,返回该矩阵中的所有要素. 样例 1: 输入:[[ 1, 2, 3 ], [ 4, 5, 6 ], ...

  8. 【精】LintCode领扣算法问题答案:1084. “马”在棋盘上的概率

    1084. "马"在棋盘上的概率 描述 已知一个 NxN 的国际象棋棋盘,棋盘的行号和列号都是从 0 开始.即最左上角的格子记为 (0, 0),最右下角的记为 (N-1, N-1) ...

  9. 【精】LintCode领扣算法问题答案:306. 商品列表

    306. 商品列表: 有一个商品列表,该列表是由L1.L2两个子列表拼接而成.当用户浏览并翻页时,需要从列表L1.L2中获取商品进行展示.展示规则如下: 用户可以进行多次翻页,用offset表示用户已 ...

最新文章

  1. 基于wayland的linux桌面,揭开Wayland的面纱(二):Wayland应运而生
  2. UICollectionViewController的用法1
  3. windbg基本简单步骤
  4. Python几个简单好用的基础功能
  5. 【caffe-Windows】cifar实例编译之model的生成
  6. Strus2第一次课:dom4j操作xml
  7. 【Hadoop】HIVE 数据表 使用
  8. UnrealEngine4 PBR Shading Model 概述
  9. mysql的存储引擎_Mysql数据库3种存储引擎有什么区别?
  10. 进程调度优先级JAVA_进程调度算法之短进程优先(Java)
  11. My in 2007
  12. 面向自动驾驶行业,Imagination推出性能高达600 TOPS的多核AI加速器
  13. SpringMVC XXX-servlet.xml ApplicationContext.xml
  14. 如何用阿里云服务器建立一个wordpress网站?
  15. Linux视频编解码库,Ubuntu 18.04 FFMPEG最新版本安装总结
  16. 从零到无学单片机——画原理图、PCB
  17. 【算法】Leetcode438. 找到字符串中所有字母异位词(每日一题)
  18. Laravel log channel 分组配置
  19. 分享一个很香的k8s.gcr.io Docker镜像拉取方法
  20. 一次性能优化引发的思考

热门文章

  1. Aptana配置出错的各种解决方法
  2. 电脑钢琴 - 光良童话
  3. Netkiller Developer 手札之前言
  4. 开源的在线MIDI编辑器signal
  5. 如何一步一步提高图像分类准确率?
  6. 腾讯出品的软件有哪些?这6款软件你都知道吗?
  7. b站前端校招面试题分享
  8. 一个CSDN程序员苦逼的一天又一天——part2
  9. springboot的学习记录
  10. Django Model 2.数据库—多表查询