• LeetCode第三十一题-下一个排列


    Next Permutation

    问题简介:给定一个数组,将数字重新排列到字典上的下一个更大的数字排列,当没有这种排列方式时,即将数组升序排列

    举例:

    1.

    给定数组[1,2,4,3,0]

    结果数组[1,3,0,2,4]

    解释:可以倒序看给定数组,在数字4处遇见更小的数值2时,从数组末尾处向前找打第一个比2大的数字,即3,交换两个数字,这时数组为[1,3,4,2,0],然后在交换后的数字2处往后进行反转,这时数组为[1,3,0,2,4]

    2.

    给定数组[5,4,3,1,0]

    结果数组[0,1,3,4,5]

    解释:当原数组为降序排列时,将数组反转即升序排列

    注:

    1.要求使用恒定的空间

    2.不需要返回值,结果即为原数组nums

    解法一:

    当数组只有0或一个元素时即不处理数组.将数组从后向前遍历,将当前索引i处数值与i-1处相比,当遇到小于当前值时,记录i,当i为0时即为降序排序只要反转数组即可,当i不为0时,进行处理,交换倒序第一个大于i-1处的值,从i处开始反转数组

    复杂度分析:

    时间复杂度:o(n)都是单层遍历

    空间复杂度:o(1)使用的恒定空间

    小白刷题之路,请多指教— — 要么大器晚成,要么石沉大海

  • 相关阅读:
    linux 网络编程比较好的文章
    linux 命令
    感冒了
    aa
    111
    仿京东(我的商城)鼠标上去弹出层效果
    仿汽车之家搜索页价格签区间(鼠标拖拽同时tip提示)
    关于DW 打不开后缀名为.ftl的文件 配置方法
    客户端与服务器段的交互 通过json
    jquery 阻止事件冒泡
  • 原文地址:https://www.cnblogs.com/lalalaczq/p/10817995.html
Copyright © 2020-2023  润新知