专栏首页架构说LeetCode第三题:下一个排列

LeetCode第三题:下一个排列

一、题目描述

实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。

如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。

必须原地修改,只允许使用额外常数空间。

以下是一些例子,输入位于左侧列,其相应输出位于右侧列。

1,2,3 → 1,3,2

3,2,1 → 1,2,3

1,1,5 → 1,5,1

二、举例

三、解题思路

复杂度分析

时间复杂度:O(n),在最坏的情况下,只需要对整个数组进行两次扫描。

空间复杂度:O(1)

所有教程都不会复杂的语言特性,大家无须担心没有学过相关语法,算法思想才是最重要的!,风格可以风趣,认真的。本文所有代码均在leetcode进行过测试运行。

四、参考代码

五、回顾

这题目比较难于理解,从题目要求,到思路。

我以为是个全排列问题。

六、 举一反三

全排列

本文分享自微信公众号 - 架构说(JiaGouS),作者:程序员小王

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • leetcode第513题-找树左下角的值

    Given a binary tree, find the left most value in the last row of the tree.

    程序员小王
  • 搜索二维矩阵 II

    编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:

    程序员小王
  • 实现多态必须满足什么条件

    3 虚函数机制 virtual mechanism 先看代码: class A { public: virtual void print() { cout...

    程序员小王
  • 基于Keras的DCGAN实现

    生成对抗网络(Generative Adversarial Network,简称GAN)是非监督式学习的一种方法,通过让两个神经网络相互博弈的方式进行学习。

    卡尔曼和玻尔兹曼谁曼
  • [AWR报告]SQL*Net message to client等待事件

    注意这里的信息是从实例起来的汇总,同时由于SID是可以复用的,所以查看出来的SID并不代表上次的语句是这个等待

    bsbforever
  • 八百元八核的服务器?二手服务器搭建指南

    当你在花近万元剁手i7 5960x时,有没有想过,在华强北的某个角落,有一群人靠几百块收来的二手服务器配件,搭建了一台性能同等,甚至更强的服务器! 首先,在看此...

    FB客服
  • 利用软件和bat修复服务器和物理机之间的文件复制功能

    IIS7服务器监控工具该软件风格简约,操作简单,删除系统缓存,重启服务器,修改服务器账号密码,修复服务器复制功能等,也可以一键开启关闭MYSQL和503错误的监...

    it妹
  • 聊聊HystrixPropertiesStrategy

    hystrix-core-1.5.12-sources.jar!/com/netflix/hystrix/strategy/properties/Hystrix...

    codecraft
  • 除了获取 MAC 地址还能干啥

    Web 页面获取 MAC 地址的设计思路是比较简单的,只需要在本地模拟一个 HTTP 服务器,然后让 Web 页面通过 Ajax 来请求 HTT...

    码农UP2U
  • 创业新机遇?信用需求推动美国替代评分市场崛起

    大数据文摘

扫码关注云+社区

领取腾讯云代金券