Skip to content

Commit b010096

Browse files
authored
Update next-permutation.py
1 parent 0dd659b commit b010096

File tree

1 file changed

+37
-12
lines changed

1 file changed

+37
-12
lines changed

Python/next-permutation.py

+37-12
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,47 @@
22
# Space: O(1)
33

44
class Solution(object):
5-
# @param {integer[]} nums
6-
# @return {void} Do not return anything, modify nums in-place instead.
7-
def nextPermutation(self, num):
5+
def nextPermutation(self, nums):
6+
"""
7+
:type nums: List[int]
8+
:rtype: None Do not return anything, modify nums in-place instead.
9+
"""
810
k, l = -1, 0
9-
for i in xrange(len(num) - 1):
10-
if num[i] < num[i + 1]:
11+
for i in reversed(xrange(len(nums)-1)):
12+
if nums[i] < nums[i+1]:
1113
k = i
12-
13-
if k == -1:
14-
num.reverse()
14+
break
15+
else:
16+
nums.reverse()
1517
return
1618

17-
for i in xrange(k + 1, len(num)):
18-
if num[i] > num[k]:
19+
for i in reversed(xrange(k+1, len(nums))):
20+
if nums[i] > nums[k]:
1921
l = i
22+
break
23+
nums[k], nums[l] = nums[l], nums[k]
24+
nums[k+1:] = nums[:k:-1]
25+
26+
27+
# Time: O(n)
28+
# Space: O(1)
29+
class Solution2(object):
30+
def nextPermutation(self, nums):
31+
"""
32+
:type nums: List[int]
33+
:rtype: None Do not return anything, modify nums in-place instead.
34+
"""
35+
k, l = -1, 0
36+
for i in xrange(len(nums)-1):
37+
if nums[i] < nums[i+1]:
38+
k = i
2039

21-
num[k], num[l] = num[l], num[k]
22-
num[k + 1:] = num[:k:-1]
40+
if k == -1:
41+
nums.reverse()
42+
return
2343

44+
for i in xrange(k+1, len(nums)):
45+
if nums[i] > nums[k]:
46+
l = i
47+
nums[k], nums[l] = nums[l], nums[k]
48+
nums[k+1:] = nums[:k:-1]

0 commit comments

Comments
 (0)