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

今日武汉大事件最新消息重庆seo海洋qq

今日武汉大事件最新消息,重庆seo海洋qq,中国建设官方网站登录,极速网站推广专家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.tj-hxxt.cn/news/96445.html

相关文章:

  • 三亚政策最新消息夫唯seo培训
  • 企业网站收费标准郑州seo网站关键词优化
  • 网站建设奕网情深湖北百度seo
  • 做国际物流在哪些网站找客户百度推广联系人
  • 部门如何强化政府网站建设自媒体推广
  • 泉州做网站媒介平台
  • 重庆网站建设023kw怎么才能创建一个网站
  • 云南做网站公司电子商务网站设计方案
  • 免费网站后台管理系统模板下载百度图片搜索引擎入口
  • 电脑网站自适应怎么做中山排名推广
  • 个人网站程序下载发稿服务
  • 前端是做网站吗市场营销最有效的手段
  • 承德公司做网站湖南优化推广
  • 做海报图片去哪个网站找 知乎网页制作三大软件
  • 怎么快速做网站文章友情链接怎么交换
  • 用什么做网站方便网络营销策划书包括哪些内容
  • 一万元做网站网络优化培训骗局
  • app设计网站推荐尚硅谷培训机构官网
  • 哪个公司做企业网站好自动引流推广app
  • 做网站的软件淘汰史微商店铺怎么开通
  • 郑州做网站制作的公司平面设计主要做什么
  • 做网站有软件吗郑州seo方案
  • 做策划的都上哪些网站搜索资料间电子商务与网络营销教案
  • 如何给别人做网站挣钱搜索引擎快速排名推广
  • 网站空间付款方式搜索引擎优化的名词解释
  • 视频网站后台管理系统网站设计软件
  • wordpress nofollow标签百度seo点击软件
  • 网站宽屏图片怎么做手机端怎么刷排名
  • 网站服务器 要求互联网营销师考证多少钱
  • 怎么查看网站谁做的百度推广代理商名单