数组]leetcode31:下一个排列(medium)"/>
[数组]leetcode31:下一个排列(medium)
题目:
题解:
- 题解1:直接调用STL算法
next_permutation
即可- 题解2:手动实现STL算法
next_permutation
代码如下:
class Solution {
public://题解1:直接调用STL算法void nextPermutation_1(vector<int>& nums) {next_permutation(nums.begin(),nums.end());}//题解2:手动实现STL算法void nextPermutation(vector<int>& nums){if(nums.size() > 1){int i;for(i = nums.size() - 1; i > 0 && nums[i - 1] >= nums[i]; i--);reverse(nums.begin() + i, nums.end());if(i-- != 0) {//auto it = upper_bound(nums.begin() + i, nums.end(), nums[i]); // 二分查找//swap(nums[i], *it);//手撸二分查找int left = i + 1; //改动int right = nums.size() - 1;while (left <= right) {int mid = (left + right) / 2;if(nums[mid] > nums[i]){right = mid - 1; }else{left = mid + 1;}}//cout<< nums[left]<<endl;swap(nums[i], nums[left]); //改动} }}
};
更多推荐
[数组]leetcode31:下一个排列(medium)
发布评论