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

福泉市自己的网站莆田网站制作方案定制

福泉市自己的网站,莆田网站制作方案定制,建立专业的官方网站,网站建设宣传视频教程这道题本来想直接暴力回溯的,但是想了下还是算了,自己想这个思路完全想不出来,直接去看灵神的题解了,感觉还是很好懂的,强烈推荐去看看他的题解。 我们先讨论最一般的情况:对于一组排列,我们要找…


这道题本来想直接暴力回溯的,但是想了下还是算了,自己想这个思路完全想不出来,直接去看灵神的题解了,感觉还是很好懂的,强烈推荐去看看他的题解。
我们先讨论最一般的情况:对于一组排列,我们要找到它的下一个排列,就需要从右往左遍历,找到第一个小于右边相邻元素的位置。例如,对于排列[3, 5, 1, 4, 2, 6, 1],我们要找下一个大于当前数的排列(nums[i] < nums[i + 1]),我们就需要找到元素2的位置i,它是从右往左数,第一个小于右边相邻元素的数,此时我们还不能简单地将26简单交换位置就草草了事,因为如果输入是[3, 5, 1, 4, 2, 6, 0],将26交换位置将得到[3, 5, 1, 4, 6, 2, 0],显然,下一个排列应当为[3, 5, 1, 4, 6, 0, 2]。因此,在找到i之后,我们可以得到如下性质:从i + 1到数组的最后一个元素,这段数字应当是降序排列的,这是因为i是从右往左数第一个小于右侧相邻元素的值,从i + 1到数组的倒数第二个元素,每一个元素都大于等于右边相邻的元素,从而形成降序排列。我们还需要寻找一个元素nums[j],使得nums[j]恰好为大于nums[i]的元素中的最小值,从右往左数,第一个大于nums[i]的元素就是nums[j],对于输入[3, 5, 1, 4, 2, 6, 0]nums[i] == 2nums[j] == 6,我们将其位置交换得到[3, 5, 1, 4, 6, 2, 0]。此时还没有得到下一个排列,因为[i + 1, end)这个区间是降序排列的,我们仍需要对其进行逆转为升序排列使其变得更小,最终得到下一个排列,因此我们通过reverse(nums.begin() + i + 1, nums.end());来实现反转,从而得到下一个排列。
下面再来讨论特殊情况,当原排列已经是最大的排列,不可能得到更大的排列时,我们需要将其转化为最小的排列,最大的排列一定是从头到尾都降序排列,我们将其逆转,得到升序排列,此时一定是最小的排列。
综上所述,如果我们能找到符合条件的i,那么我们还需要进行第二步操作,找到符合条件的j,进行交换,如果找不到,就直接执行第三步操作。第三步,将指定范围内的排列逆序。最终得到下一个排列。

class Solution {
public:void nextPermutation(vector<int>& nums) {int n = nums.size();//1.从右往左寻找第一个小于右侧相邻元素的数int i = n - 2;while(i >= 0 && nums[i] >= nums[i + 1])i--;//2.如果找到了,那么一定满足i >= 0,如果不满足,则跳过第2步//此时从i + 1到末尾一定是单调递减的,因为i是从右往左数第一个小于右侧相邻元素的值if(i >= 0){int j = n - 1;while(nums[j] <= nums[i])j--;swap(nums[i], nums[j]);   //交换i和j的位置,数值已经变大,但是可能不是最接近原数的下一个排列}//3.如果存在对应的i,则此阶段需要进行最后的微调,由于[i + 1, end)这个区间是降序排列的//我们仍需要对其进行逆转为升序排列使其变得更小//如果没有找到合适的i,则说明原来的排列已经是最大值,我们需要将其逆序排列得到最小值reverse(nums.begin() + i + 1, nums.end());}
};

文章转载自:

http://X1LURNDi.kbhrq.cn
http://Dpv6cTNx.kbhrq.cn
http://iN6bvtB8.kbhrq.cn
http://UTlbUpaE.kbhrq.cn
http://062ITfFI.kbhrq.cn
http://2uBXLw0h.kbhrq.cn
http://Irg44CBw.kbhrq.cn
http://kQxLyHwe.kbhrq.cn
http://sw3EqYiT.kbhrq.cn
http://4hO27hs3.kbhrq.cn
http://2o20FWFl.kbhrq.cn
http://cmwifWmR.kbhrq.cn
http://lImx8oRg.kbhrq.cn
http://cHNx58C0.kbhrq.cn
http://yy7GHgXM.kbhrq.cn
http://3y1H9mCo.kbhrq.cn
http://4Upw48KY.kbhrq.cn
http://kQevh2ST.kbhrq.cn
http://tyaC1Hpn.kbhrq.cn
http://AdeQ472a.kbhrq.cn
http://HQbf8b4D.kbhrq.cn
http://tkWQ31n4.kbhrq.cn
http://G0WDpq8V.kbhrq.cn
http://5lDwEyJV.kbhrq.cn
http://aNZDNr3p.kbhrq.cn
http://12Efr3VX.kbhrq.cn
http://dQuE3RTl.kbhrq.cn
http://IO9IatIo.kbhrq.cn
http://S9BGGiG9.kbhrq.cn
http://4ZPIEIPt.kbhrq.cn
http://www.dtcms.com/wzjs/603711.html

相关文章:

  • jsp做手机网站网站源码生成器
  • 商城移动端网站开发网站点击量在哪里看
  • 百度商桥网站代码去哪里添加网络优化工作内容
  • 品牌网站设计流程北京梵客装饰公司地址电话
  • 专做特产的网站wordpress .mo文件编辑
  • 有必要自建网站做导购吗广东省建设安全监督站的网站
  • 建筑网站大图wordpress数据承载能力
  • 怎么做虚拟的网站电子商务网站建设的可行性分析包括
  • 韩国的汽车设计网站门户网站系统业务流程图
  • 我想自己创建购物网站深圳网站设计公司电话
  • 赣县企业网站建设网页的构成
  • 网站出现用户名密码提示网站后台管理模板psd
  • 公司网站被侵权wordpress的md
  • 用wordpress制作网站哪里有网站建设联系方式
  • 哪个推广网站好东莞网站建设 食品厂
  • 网站建设技术难题手机制作网站的软件有哪些东西
  • 福建建设工程交易网站手机上怎么安装wordpress
  • 寿光shengkun网站建设营销型网站建设优化建站
  • wordpress企业网站DIY合作网站登录制作
  • 西安网站建设公司十强网站备案幕布照片怎么算合格
  • 网站网站开发犯法吗网站搭建流程图
  • wordpress网站配置北京互联网公司招聘信息
  • 建设企业网站的重要性酷家乐在线设计网页版
  • 在网站底部给网站地图做链接徐州不锈钢网架公司
  • 网站建设制作哪家便宜短视频素材下载网站 免费
  • 电子商务网站建设的必要性做任务免费得晋江币网站
  • 上海wordpress网站建设网站制作的费用
  • 百度不收录的网站wordpress主题后台设置
  • wordpress要懂php沈阳网络优化公司哪家好
  • 直播网站开发报价wordpress仿凡客商城主题