第九周LeetCode
来源:互联网 发布:淘宝详情页模板图 编辑:程序博客网 时间:2024/05/29 12:52
题目
难度 Easy
Majority Element
Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.You may assume that the array is non-empty and the majority element always exist in the array.
实现思路
这个题是书上的习题的简单一点的版本,可以用分治法做。先将数组分成两半,A1和A2,因为主元素出现次数多于n/2,即使分成两半,主元素还是在新的分组中占主导。如果A1的主元素和A2的主元素相同,那么返回A1或A2的主元素;如果A1和A2的主元素不同,就遍历一次数组,看哪个主元素的数量多,就返回哪个。算法的时间复杂度为O(nlogn)。
实现代码
int majorityElement(vector<int>& nums) { //终止递归 if (nums.size() == 1) return nums[0]; //将数组等分成两半 vector<int> v1(nums.begin(), nums.begin()+nums.size()/2); vector<int> v2(nums.begin()+nums.size()/2, nums.end()); int majEle1 = majorityElement(v1); int majEle2 = majorityElement(v2); //如果两半中主元素相等,任意返回一个主元素 if (majEle1 == majEle2) { return majEle1; // 否则遍历数组,看哪个主元素出现的次数更多 } else { int count1=0,count2=0; for (int i = 0; i < nums.size(); i++) { if (nums[i] == majEle1) { count1++; } else if (nums[i] == majEle2) { count2++; } } if (count1>count2) { return majEle1; } else { return majEle2; } }}
阅读全文
0 0
- leetcode-python 第九周
- leetcode-第九周
- 第九周leetcode题
- 第九周LeetCode
- 第九周LeetCode
- [leetcode]第九周作业
- LeetCode题解 第九周
- Leetcode 算法习题 第九周
- 第九周LeetCode算法题两道
- leetcode【第九周】矩阵元素置零
- 第九周:[Leetcode]93. Restore IP Addresses
- 第九周:[Leetcode]523. Continuous Subarray Sum
- 第九周:[Leetcode]494. Target Sum
- Leetcode算法课程第九周(补)
- leetcode第九周解题总结(Bit Manipulation位运算)
- 第九周 leetcode 72. Edit Distance(Hard)
- Leetcode 718. Maximum Length of Repeated Subarray(第九周作业)
- LeetCode 第九题, Palindrome Number
- AndroidStudio gradle配置
- Ubantu安装boost库
- 关于在运行qt的程序时提示无法定位程序输入点_ZdaPvj于动态链接库Qt5Cored.dll”的解决办法
- 子类继承父类时,创建对象,构造方法的调用问题
- 斐波那契三种求法
- 第九周LeetCode
- python _缺省参数及赋值
- 加法编程
- cocos mac 环境问题记录
- 文献阅读--A systematic approach to identify novel cancer drug targets using machine learning, inhibitor
- 电脑登录云主机服务器
- ResNet--Deep Residual Learning for Image Recognition
- 常见的内联和块状元素
- 循环语句的使用