File tree 1 file changed +44
-0
lines changed
solution/0215.Kth Largest Element in an Array
1 file changed +44
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public:
3
+ int findKthLargest (vector<int >& nums, int k) {
4
+ --k ;
5
+ int ii = 0 , jj = nums.size ()-1 ;
6
+ int i, j ;
7
+ while (true )
8
+ {
9
+ i = ii, j = jj ;
10
+ if (i + 63 < j)
11
+ {
12
+ const int mid = i + (j-i)/2 ;
13
+ if (nums[j] >= nums[mid] && nums[j] <= nums[i]
14
+ || nums[j] <= nums[mid] && nums[j] >= nums[i])
15
+ {
16
+ swap (nums[i], nums[j]) ;
17
+ }
18
+ else if (nums[mid] >= nums[i] && nums[mid] <= nums[j]
19
+ || nums[mid] <= nums[i] && nums[mid] >= nums[j])
20
+ {
21
+ swap (nums[i], nums[mid]) ;
22
+ }
23
+ }
24
+ while (i < j)
25
+ {
26
+ while (i < j && nums.at (i) >= nums.at (j))
27
+ --j ;
28
+ swap (nums[i], nums[j]) ;
29
+ while (i < j && nums.at (i) >= nums.at (j))
30
+ ++i ;
31
+ swap (nums[i], nums[j]) ;
32
+ }
33
+
34
+ if (i > k)
35
+ jj = i-1 ;
36
+ else if (i < k)
37
+ ii = i+1 ;
38
+ else
39
+ return nums[k] ;
40
+ }
41
+
42
+ return nums.at (k) ;
43
+ }
44
+ };
You can’t perform that action at this time.
0 commit comments