- 1.题目
- 2.思路
- 3.代码实现(Java)
实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。
示例 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
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?