Advertisement
Guest User

Untitled

a guest
May 25th, 2019
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.67 KB | None | 0 0
  1. /*
  2. 快排的思想,找到中位数上的数字,当数字左边数均小于,右边数均大于,位置在中间时,则是majority
  3. */
  4. class Solution {
  5. public:
  6. int majorityElement(vector<int>& nums) {
  7. int length = nums.size();
  8. int low = 0;
  9. int high = length - 1;
  10. while (low <= high) {
  11. int base = nums[low];
  12. int i = low;
  13. int j = high;
  14. while (i < j) {
  15. while (i< j && nums[j] >= base) j--;
  16. if (i < j) nums[i] = nums[j];
  17. while (i < j && nums[i] <= base) i++;
  18. if (i < j) nums[j] = nums[i];
  19. if (i == j && i == (length-1) / 2) return base;
  20. }
  21. nums[i] = base;
  22. if (i < length / 2) low = i + 1;
  23. else high = i -1;
  24. }
  25. return 0;
  26. }
  27. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement