LeetCode: Majority Element II
来源:互联网 发布:淘宝神笔有什么作用 编辑:程序博客网 时间:2024/06/10 16:46
Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋
times. The algorithm should run in linear time and in O(1) space.
题目解析:根据题目描述,我们知道一个数组中最多两个满足要求的结果。
因此,这里可以用投票法,每个满足要求的数的个数都大于不满足要求的个数,转换为了一个众数的情况。
源代码:
/** * Return an array of size *returnSize. * Note: The returned array must be malloced, assume caller calls free(). */int* majorityElement(int* nums, int numsSize, int* returnSize) { int res1 = 0; int res2 = 0; int cnt1 = 0; int cnt2 = 0; for (int i = 0; i < numsSize; ++i) { if (nums[i] == res1) cnt1++; else if (nums[i] == res2) cnt2++; else if (cnt1 == 0) { cnt1 = 1; res1 = nums[i]; } else if (cnt2 == 0) { cnt2 = 1; res2 = nums[i]; } else { cnt1--; cnt2--; } } // check cnt1 = 0; cnt2 = 0; if (res1 == res2) res2 = res1 - 1; for (int i = 0; i < numsSize; ++i) { if (nums[i] == res1) cnt1++; if (nums[i] == res2) cnt2++; } int* r; if (cnt1 > numsSize/3 && cnt2 > numsSize / 3) { *returnSize = 2; r = (int*)malloc(2 * sizeof(int)); r[0] = res1; r[1] = res2; } else if (cnt1 > numsSize / 3) { *returnSize = 1; r = (int*)malloc(1 * sizeof(int)); r[0] = res1; } else if (cnt2 > numsSize / 3) { *returnSize = 1; r = (int*)malloc(1 * sizeof(int)); r[0] = res2; } else { *returnSize = 0; r = NULL; } return r;}
1 0
- [LeetCode] Majority Element II
- [leetcode] Majority Element II
- #leetcode#Majority Element II
- 【LeetCode】Majority Element II
- LeetCode Majority Element II
- LeetCode - Majority Element II
- LeetCode Majority Element II
- leetcode: Majority Element II
- [LeetCode] Majority Element II
- leetcode--Majority Element II
- LeetCode-Majority Element II
- Leetcode: Majority Element II
- [Leetcode]Majority Element II
- LeetCode || Majority Element II
- LeetCode-Majority Element II
- Majority Element II -- leetcode
- **LeetCode-Majority Element II
- LeetCode -- Majority Element II
- Serialize and Deserialize Binary Tree
- spfa 算法详解
- Read N Characters Given Read4 II - Call multiple times
- python 操作excel 读写同一个文件
- java基础学习之坦克
- LeetCode: Majority Element II
- javascript-产生页面遮罩层
- Read N Characters Given Read4
- 被 5 整除的数
- python之pygame使surface对象移动起来,用按键控制(二)
- 微服务架构 (九): 分布式微服务下的数据一致性
- Group Anagrams
- Chessboard
- java 数组