public void nextPermutation(int[] nums) {
		if (nums == null || nums.length == 0) {
			return;
		}

		int i = nums.length - 1;
		while (i >= 1 && nums[i] <= nums[i - 1]) {
			i--;
		}

		if (i != 0) {
			for (int j = nums.length - 1; j >= i; j--) {
				if (nums[i - 1] < nums[j]) {
					int k = nums[i - 1];
					nums[i - 1] = nums[j];
					nums[j] = k;
					break;
				}
			}
		}

		int p = i;
		int q = nums.length - 1;
		while (p < q) {
			int x = nums[p];
			nums[p] = nums[q];
			nums[q] = x;
			p++;
			q--;
		}
	}