数组A[1 : : : n]
由项目填充形成一些无限集合S.(S不需要是一组 数字,并且不需要定义它的顺序关系。 )描述最坏情况时间复杂度为O(n)的算法,以确定某个项目在阵列A中是否出现超过 n/2次。不要忘记争辩说,您的算法是正确的,并且T( n) 确实是O(n)。项目在阵列中出现超过n/2次A
-1
A
回答
1
这是一个两步过程。
- 获取大部分时间在数组中出现的元素。这个阶段将确保如果有多数元素,那么它只会返回。
- 检查从上述步骤获得的元素是否是多数元素。
伪代码:
findCandidate(a[], size)
1. Initialize index and count of majority element
maj_index = 0, count = 1
2. Loop for i = 1 to size – 1
(a) If a[maj_index] == a[i]
count++
(b) Else
count--;
(c) If count == 0
maj_index = i;
count = 1
3. Return a[maj_index]
检查如果在步骤1中获得的元素是大多数
printMajority (a[], size)
1. Find the candidate for majority
2. If candidate is majority. i.e., appears more than n/2 times.
Print the candidate
3. Else
Print "NONE"
相关问题
- 1. 再次出现阵列
- 2. 查找是否有在出现的阵列的数目超过N/8倍
- 3. 作业:在列表中多次出现的Lisp项目
- 4. 确认框超过一次出现
- 5. 推插件 - 发现项目字符串/ google_app_id超过一次
- 6. 超过在PHP阵列
- 7. 过滤阵列中的项目
- 8. 从阵列中拉出单个项目
- 9. 删除项目在tableView通过删除项目从阵列崩溃与致命错误:索引超出范围
- 10. Excel中 - 在阵列1计数的次数值出现在阵列2
- 11. 计算字符串中项目列表的出现次数?
- 12. 蟒蛇从项目多次出现另一个列表中都
- 13. 根据它们的出现次序排列项目desc在php
- 14. 删除项目再次出现在列表视图
- 15. 项目阵列到阵列
- 16. 在超时时从阵列中删除项目
- 17. 无法在Android的ListView中删除项目超过一次
- 18. 代码来超链接列A中的项目的文件
- 19. 输出字符串阵列和输出项目从阵列
- 20. 请在阵列的第一项出现在最后一个项目
- 21. 写出在逗号阵列结果项目每个项目后
- 22. JavaScript的发现阵列项目
- 23. 防止项目再次出现错误
- 24. 查找条目,其中阵列A包含从阵列乙
- 25. VueJS在阵列项目
- 26. 计数出现在阵列
- 27. json_encode超过2个阵列
- 28. PHP打印阵列项目组通过
- 29. NSCF阵列超出界限?
- 30. 阵列超出范围 - SWIFT
答案并不难,显示ATLEAST一些试图在解决它。 –