Skip to content

Commit 375a504

Browse files
committed
update
1 parent e1abdd3 commit 375a504

2 files changed

Lines changed: 57 additions & 0 deletions

File tree

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
class Solution:
2+
def findKthLargest(self, nums: List[int], k: int) -> int:
3+
nums.sort()
4+
return nums[-k]
5+
class Solution:
6+
def findKthLargest(self, nums, k):
7+
# convert the kth largest to smallest
8+
return self.findKthSmallest(nums, len(nums)+1-k)
9+
10+
def findKthSmallest(self, nums, k):
11+
if nums:
12+
pos = self.partition(nums, 0, len(nums)-1)
13+
if k > pos+1:
14+
return self.findKthSmallest(nums[pos+1:], k-pos-1)
15+
elif k < pos+1:
16+
return self.findKthSmallest(nums[:pos], k)
17+
else:
18+
return nums[pos]
19+
20+
# choose the right-most element as pivot
21+
def partition(self, nums, l, r):
22+
low = l
23+
while l < r:
24+
if nums[l] < nums[r]:
25+
nums[l], nums[low] = nums[low], nums[l]
26+
low += 1
27+
l += 1
28+
nums[low], nums[r] = nums[r], nums[low]
29+
return low

Array/031_Next Permutation.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
class Solution:
2+
def nextPermutation(self, nums: List[int]) -> None:
3+
"""
4+
Do not return anything, modify nums in-place instead.
5+
"""
6+
right = len(nums) - 1
7+
8+
# find longest non-increasing suffix from rightmost
9+
while right >= 1 and nums[right-1] >= nums[right]:
10+
right -= 1
11+
if right == 0: # while nums is descending
12+
return nums.reverse()
13+
14+
# find pivot
15+
pivot = right - 1
16+
# find rightmost succesor which > pivot
17+
for i in range(len(nums)-1, pivot, -1):
18+
if nums[i] > nums[pivot]:
19+
successor = i
20+
break
21+
# swap pivot and successor
22+
nums[pivot], nums[successor] = nums[successor], nums[pivot]
23+
# reverse suffix
24+
l, r = pivot+1, len(nums)-1
25+
while l < r:
26+
nums[l], nums[r] = nums[r], nums[l]
27+
l += 1
28+
r -= 1

0 commit comments

Comments
 (0)