Leetcode 169

来源:互联网 发布:游戏王网络对战平台 编辑:程序博客网 时间:2024/05/01 04:51

Leetcode 169, majority element, 难度 medium

因为这周正好在学分治,所以就做了这道分治的题目,就是不停地把数组分为两半,找到在这两半里面最多的元素,如果在这两半里面最多的元素相等,那这个就是majority,如果不等,那就遍历一边数组check是左边的元素多还是右边的元素多,返回多的元素,这里遍历用了容器里的count函数。
以下是代码:

class Solution {public:    int majorityElement(vector<int>& nums) {        return major1(nums, 0, nums.size() - 1);    }    int major1(vector<int>& nums, int begin, int end) {        if(begin == end) return nums[begin];        if(begin < end) {            int mid = begin + (end - begin) / 2;            int left = major1(nums, begin, mid);            int right = major1(nums, mid + 1, end);            if(left == right) return left;            else{                return count(nums.begin() + begin, nums.begin() + end + 1, left) < count(nums.begin() + begin, nums.begin() + end + 1, right) ? right : left;            }        }    }};
原创粉丝点击