File tree Expand file tree Collapse file tree 1 file changed +44
-0
lines changed Expand file tree Collapse file tree 1 file changed +44
-0
lines changed Original file line number Diff line number Diff line change 1+ class Solution {
2+ public void nextPermutation (int [] nums ) {
3+ if (nums == null || nums .length == 0 ) {
4+ return ;
5+ }
6+
7+ int n = nums .length - 1 , idx = -1 ;
8+
9+ for (int i = n - 1 ; i >= 0 ; i --) {
10+ if (nums [i ] < nums [i + 1 ]) {
11+ idx = i ;
12+ break ;
13+ }
14+ }
15+
16+ if (idx == -1 ) {
17+ reverseArray (nums , 0 , n );
18+ return ;
19+ }
20+
21+ for (int i = n ; i >= 0 ; i --) {
22+ if (nums [i ] > nums [idx ]) {
23+ swap (nums , i , idx );
24+ break ;
25+ }
26+ }
27+
28+ reverseArray (nums , idx + 1 , n );
29+ }
30+
31+ private void reverseArray (int [] nums , int start , int end ) {
32+ while (start < end ) {
33+ swap (nums , start , end );
34+ ++start ;
35+ --end ;
36+ }
37+ }
38+
39+ private void swap (int [] nums , int i , int j ) {
40+ int temp = nums [i ];
41+ nums [i ] = nums [j ];
42+ nums [j ] = temp ;
43+ }
44+ }
You can’t perform that action at this time.
0 commit comments