您当前的位置: 首页 >  leetcode

星许辰

暂无认证

  • 4浏览

    0关注

    466博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

LeetCode_双指针_中等_31.下一个排列

星许辰 发布时间:2021-06-25 10:10:51 ,浏览量:4

目录
  • 1.题目
  • 2.思路
  • 3.代码实现(Java)

1.题目

实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。

示例 1: 输入:nums = [1,2,3] 输出:[1,3,2]

示例 2: 输入:nums = [3,2,1] 输出:[1,2,3]

示例 3: 输入:nums = [1,1,5] 输出:[1,5,1]

示例 4: 输入:nums = [1] 输出:[1]

提示: 1 = 0) { int j = binarySearch(nums, i + 1, nums.length - 1, nums[i]); //交换 nums[i] 和 nums[j] 的值 swap(nums, i, j); } //将 nums[i + 1...nums.length - 1] 反转,即从降序变成升序 reverse(nums, i + 1, nums.length - 1); } //在 nums[left...right](降序) 中查找大于 target 的元素的最大下标 public int binarySearch(int[] nums, int left, int right, int target) { while (left target) { left = mid + 1; } else { right = mid - 1; } } return right; } //将 nums[i...j] 反转 public void reverse(int[] nums, int i, int j) { while (i

关注
打赏
1665627467
查看更多评论
立即登录/注册

微信扫码登录

0.0743s