algorithm - 检查是否存在任何数字至少出现 array.size()/4 次
问题描述
给定一个未排序的数组,但相同的元素彼此相邻。可以检查数组是否包含至少出现 array.size()/4 次的任何元素?
使用哈希表进行线性扫描是微不足道的,我想知道是否有任何算法的复杂性更好。
谢谢。
解决方案
如果相同的元素总是彼此相邻只是为了遍历并找到具有最大条目数的元素。如果最大值 < array.size()/4 则没有元素满足您的条件。请参见下面带有 2 个 while 循环的示例 java 代码
int index=0, currentSize, maxSize = 0, currentElem;
while (index<array.length){
currentElem = array[index];
currentSize = 1;
index++;
while (index<array.length && currentElem==array[index]){
currentSize++;
index++;
}
if (maxSize<currentSize) {
maxSize = currentSize;
}
}
if (maxSize>=array.length/4) return "Yes";
else return "No";
推荐阅读
- python - 我试图制作一个在 youtube 视频下发送评论的程序,而 send_keys() 问题突然出现
- swift - 如何通过将访问者从表格视图单元格中的文本字段添加到数组中来解决此问题?
- swift - SwiftUI 不从资产加载图像
- javascript - 为什么 `Function.prototype` 在控制台中只返回对 `Function` 的引用?
- python - 将 CSV 转换为 JSON
- reactjs - Redux 表单 this.props.onChange
- java - ObjectBox - ToMany 条件
- javascript - dynamodb 中每个项目的唯一 ID
- sharepoint - 注册以获取共享点中的客户端 ID 和客户端密码
- google-sheets - Google 表格中的动态标签链接