int(vector<int>& nums, int low, int high) { int x = nums[low]; int i = low; int j = high-1; while(i<j) { while(i<j&&nums[j]<=x) j--; if(i<j) nums[i]=nums[j]; while(i<j&&nums[i]>=x) i++; if(i<j) nums[j]=nums[i]; } nums[i]=x; return i; }
FindKthNumber
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
intfindKthLargest(vector<int>& nums, int k){ intbegin = 0, end = nums.size(); int target_num = 0; while (begin <= end){ int pos = partition(nums, begin, end); if(pos == k-1){ target_num = nums[pos]; break; } elseif(pos > k-1){ end = pos; } else{ begin = pos + 1; } } return target_num; }
近期评论