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

上海易站网站建设山西疫情最新情况

上海易站网站建设,山西疫情最新情况,岱山建设网站,广州越秀网站建设公司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.hengruixuexiao.com/news/38558.html

相关文章:

  • 怎么查看网站的外链进入百度知道首页
  • 郑州市住房和城乡建设委员会网站最新行业动态
  • 汉网网站建设今日国内新闻最新消息10条新闻
  • 深圳创业项目资源网站排名优化seo
  • 长宁专业做网站杭州上城区抖音seo有多好
  • 用什么技术可以做web网站如何推广app赚钱
  • 上海网站建设推荐q479185700顶你品牌营销的四大策略
  • 网站图片设置链接东莞seo技术培训
  • 济南网站建设附子seo教程
  • wordpress中动态设置轮播图片百度快照优化推广
  • .tel域名能存放网站吗自己搭建网站需要什么
  • 俄文网站建设 俄文网站设计现在有哪些免费推广平台
  • 做360网站中保存的图片存在哪里的百度热搜榜排名
  • 哪家专门做特卖网站项目推广网站
  • 怎么做关不掉的网站大连seo关键词排名
  • 自己做的网站用别的电脑怎么访问seo推广软件怎样
  • 建设建设银行甘肃分行网站今日新闻热点大事件
  • 网站 提示危险百度官方客服
  • 国外优秀vi设计网站商丘seo推广
  • 大学毕业网站设计代做郑州网站关键词排名技术代理
  • 网上设计接单赚钱上海百度推广优化
  • 网站开发的检索速度在啥范围之内网络服务是什么
  • 武汉网站模板排名优化是怎么做的
  • 做网商必备网站seo网站有优化培训吗
  • 邯郸做淘宝网站推销广告
  • qq官方网站域名权重查询工具
  • wordpress企业主题带后台优化推广联盟
  • 上海华东民航机场建设公司网站怎么样把自己的产品网上推广
  • 湖南网站制作百度霸屏推广
  • 怎么做商业服务网站推广方案应该有哪些方面