Next Permutation

来源:互联网 发布:淘宝秋冬裙子 编辑:程序博客网 时间:2024/06/07 10:46
import java.util.Arrays;public class Solution {    public void nextPermutation(int[] nums) {        if (nums == null || nums.length <= 1)            return;        int i = nums.length - 1;        while (i > 0) {            if (nums[i] > nums[i - 1])                break;            i--;        }        if (i != 0) {            swap(nums, i - 1);        }        reverse(nums, i);    }    public void swap(int[] nums, int i) {        for (int k = nums.length - 1; k > i; k--) {            if (nums[k] > nums[i]) {                int temp = nums[k];                nums[k] = nums[i];                nums[i] = temp;                break;            }        }    }    public void reverse(int[] nums, int j) {        int k = nums.length - 1;        int temp;        while (j < k) {            temp = nums[j];            nums[j] = nums[k];            nums[k] = temp;            j++;            k--;        }    }    public static void main(String[] args) {        int[] nums = {5, 3, 4, 2, 1};        new Solution().nextPermutation(nums);        System.out.println(Arrays.toString(nums));    }}

[参考]
https://discuss.leetcode.com/topic/14124/sharing-my-clean-and-easy-understand-java-code-with-explanation

0 0
原创粉丝点击