31. 下一个排列

  1. class Solution {
  2. public void nextPermutation(int[] nums) {
  3. if (nums == null || nums.length == 0)
  4. return ;
  5. int i = nums.length - 2;
  6. while (i >= 0 && nums[i] >= nums[i + 1])
  7. --i;
  8. if (i >= 0) {
  9. int j = nums.length - 1;
  10. while (j > i && nums[j] <= nums[i])
  11. --j;
  12. int temp = nums[i];
  13. nums[i] = nums[j];
  14. nums[j] = temp;
  15. }
  16. i = i + 1;
  17. int j = nums.length - 1;
  18. while (i < j) {
  19. int temp = nums[i];
  20. nums[i] = nums[j];
  21. nums[j] = temp;
  22. ++i;
  23. --j;
  24. }
  25. }
  26. }