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

网站关键字设置格式谷歌商店下载官方正版

网站关键字设置格式,谷歌商店下载官方正版,河北省建设项目信息网站,餐厅网站建设文案书题意 找到下一个permutation是什么,对于一个数组[1,2,3],下一个排列就是[1, 3, 2] 链接 https://leetcode.com/problems/next-permutation/ 思考 首先任何一个permutation满足一个性质,从某个位置往后一定是降序。…

题意

找到下一个permutation是什么,对于一个数组[1,2,3],下一个排列就是[1, 3, 2]

链接

https://leetcode.com/problems/next-permutation/

思考

首先任何一个permutation满足一个性质,从某个位置往后一定是降序
比如[2,1,4,3]这么一个排列,3和4之间是没有办法交换的了,因为此时已经达到了[2,1]开头的最大值,只能改变1才能够变成一个更大排列。

解法

所以步骤分为三步:
记n为num.size();

  1. 从右往左找,找到位置i,使得nums[i-1] < nums[i]
  2. 此时nums[i-1]是我需要交换的其中元素,我需要在下标区间[i, nums.size()-1]中找到最后一个大于nums[i-1]的元素,和nums[i-1]交换
  3. 把[i,n]这个区间的元素升序排列

解法

//最终优化版本
int i = nums.size() - 1;
while( i > 0 && nums[i-1] >= nums[i]) i--;
if (i == 0) {reverse(nums.begin(), nums.end());return;
}
int l = i;
int r = nums.size() - 1;
int t = nums[i-1];
//二分找到最后一个严格大于nums[i-1]的值
while(l < r) {int mid = l + (r - l)+1 / 2;if(nums[mid] > t) {l = mid;} else {r = mid - 1;}
}
//这里不需要判断答案是否存在,因为while( i > 0 && nums[i-1] >= nums[i]) i--;已经保证了二分一定有值,至少有一个元素是比nums[i-1]要大//交换两个数
swap(nums[i-1], nums[l]);
//把从第i位开始的数字到末尾升序排列
reverse(nums.begin()+i, nums.end());

算法复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( 1 ) O(1) O(1)

//没有用二分的版本
class Solution {
public:void nextPermutation(vector<int>& nums) {int i = nums.size()-2;for(; i >= 0; i--) {if(nums[i] < nums[i+1])break;}if (i == -1) {return reverse(nums.begin(),nums.end());}int j = nums.size()-1;for(; j >= 0; j--) {if(nums[j] > nums[i]) {swap(nums[j], nums[i]);break;}}return reverse(nums.begin()+i+1, nums.end());}
};

算法复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( 1 ) O(1) O(1)

http://www.dinnco.com/news/34346.html

相关文章:

  • 网站建设详细的步骤有哪些搜索网站排行榜
  • 用psd做的买书网站sem搜索
  • 北京网站建设方案外包电影站的seo
  • 荆门做网站的公司周口搜索引擎优化
  • 宿迁网站推广公司aso排名服务公司
  • 手机网站开发目的营销 推广
  • 做设计 素材网站有哪广东seo推广哪里好
  • 北京医疗网站建设公司女教师遭网课入侵视频大全
  • 京东上怎样做网站广告软文小故事800字
  • 公司网站数媒设计制作seo优化在线诊断
  • 有专门做预算的网站没营销课程培训都有哪些
  • wordpress登陆帐号报错404seo托管公司
  • 网站开发前台 后台技术百度识图网页版 在线
  • 网站开发研究综述通过百度指数不能判断出
  • 哈尔滨市建设工程质量安全站淘宝关键词排名查询网站
  • 四网合一网站建设软文推广发稿平台
  • 做货品批发的网站都有哪些全球网站排名查询
  • 黑群晖做网站抖音seo排名系统
  • 招投标网站的建设制作优化大师官方网站
  • 优化企业网站torrentkitty磁力搜索引擎
  • 网站规划与设计范文产品推广渠道有哪些
  • 怎么去掉网站首页尾缀网站建设公司哪家好?该如何选择
  • 武昌网站建设seo搜索引擎优化关键词
  • 网站建设存在的问题关键词优化意见
  • 集宁做网站优秀的软文广告欣赏
  • 网站建设攻略百度开发平台
  • 有口碑的企业网站建设交换链接的方法
  • 厚街网站建设报价推广网站怎么制作
  • 潍坊设计网站长春seo优化企业网络跃升
  • 长沙营销网站建设2022年新闻热点事件