当前位置: 首页 > news >正文

上海湖南网站建设网站建设 电话咨询

上海湖南网站建设,网站建设 电话咨询,设计模板选项是用来,wordpress 模型开发leetcode原题链接:下一个排列 题目描述 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如,arr [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。整数数组的 下一个排列 是指其…

        leetcode原题链接:下一个排列

题目描述

      整数数组的一个 排列  就是将其所有成员以序列或线性顺序排列。

  • 例如,arr = [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3][1,3,2][3,1,2][2,3,1] 。
  • 整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。更正式地,如果数组的所有排列根据其字典顺序从小到大排列在一个容器中,那么数组的 下一个排列 就是在这个有序容器中排在它后面的那个排列。如果不存在下一个更大的排列,那么这个数组必须重排为字典序最小的排列(即,其元素按升序排列)。
  • 例如,arr = [1,2,3] 的下一个排列是 [1,3,2] 。
  • 类似地,arr = [2,3,1] 的下一个排列是 [3,1,2] 。
  • 而 arr = [3,2,1] 的下一个排列是 [1,2,3] ,因为 [3,2,1] 不存在一个字典序更大的排列。

      给你一个整数数组 nums ,找出 nums 的下一个排列。

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

示例 1:

输入:nums = [1,2,3]
输出:[1,3,2]

示例 2:

输入:nums = [3,2,1]
输出:[1,2,3]

示例 3:

输入:nums = [1,1,5]
输出:[1,5,1]

提示:

  • 1 <= nums.length <= 100
  • 0 <= nums[i] <= 100

解题方法

    1. 从右边向左,寻找第一个降序的数字j,对应的波峰为i (j=i-1)。

    2. 再从右向左,找到第一个比j大的元素位置k(这个k必然存在,因为nums[j]>nums[i])。

    3. 交换nums[j]和nums[k]。

    4. 对[j+1, n-1]区间的元素从小到大排序,此时只需要反转下数字即可reverse。

C++代码

#include <iostream>
#include <vector>
#include <algorithm> // std::reverse()class Solution {
public:void nextPermutation(std::vector<int>& nums) {int n = nums.size();if (n == 0) {return;}// 1.从右边向左,寻找第一个将序的数字j,对应的波峰为iint i = n - 1; //从右向左寻找第一个波峰的位置while (i > 0 && nums[i] <= nums[i - 1]) { //比较num[i]和num[i-1]的值,所以这里i--;}if (i == 0) { //i到了最左边,说nums[0]是最大值,此时没有更大的值,则返回最小值(因为数组本身已经是最大值)std::reverse(nums.begin(), nums.end());return;}int j = i - 1; //j指向第一个波峰左边的位置// 2.再从右向左,找到第一个比j大的元素位置k(这个k必然存在,因为nums[j]>nums[i])int k = n - 1;while (k >= i && nums[k] <= nums[j]) {k--;}// 3. 交换nums[j]和nums[k]std::swap(nums[j], nums[k]);// 4. 对[j+1, n-1]区间的元素从小到大排序,此时只需要反转下数字即可reversestd::reverse(nums.begin() + j + 1, nums.end());}
};

http://www.yayakq.cn/news/786099/

相关文章:

  • 网站备案号找回密码长沙网站优化厂家
  • 昆明网站建设一条龙服务整合营销案例
  • 湖北智能网站建设找哪家阿里巴巴外贸圈论坛
  • 网站开发 图片储存和狗狗做电影网站
  • 江西省网站建设公司大连建网站网站制作
  • 建立网站需要多少钱责任y湖南岚鸿联系自己怎么申请免费网站
  • 东莞seo建站推广费用网站建设的定位是什么
  • 西青网站文化建设推广软文模板
  • 如何在旅游网站上做攻略设计建设网站公司网站
  • php 网站模板长沙创建一个网站需要多少钱
  • 网站改造设计方案手机网页编辑软件
  • gta5办公室网站建设中动态表情包在线制作
  • 网站服务器做缓存吗凡科怎么样
  • 浏览器的网站企查查免费下载安装
  • 网站的电子画册怎么做网站icp备案证书下载
  • 怎么给自己的网站做排名礼品定制
  • 锦州网站建设信息花西子网络营销案例分析
  • 秀山网站建设wordpress m1
  • 关键词优化教程东莞长尾seo
  • 手机ftp传网站文件做中英文网站的
  • 做企业平台网站成本做网站找哪个公司好
  • 网站建设费属于宣传费吗外贸网站源码多语言
  • 哪个网站的排行榜权威网站开发合同编号如何编写
  • 第二课强登陆网站新型智库建设的意见做个网页大概多少钱
  • 深圳网站建设微赢天下电脑软件应用商店哪个好
  • 建设银行培训网站如何注销网站
  • 东莞网站制作咨询祥奔科技北京网站排名优化
  • 附近那里有做网站的哪里做网站的比较多
  • 网站服务器ipwordpress h5自适应
  • 网站系统名称wordpress禁止新建