现在有一个包含 nn 个整数的数组 numnum, 请输出任意一个至少出现了三次的数字,如果不存在任何一个数字出现了三次及以上,则输出 -1
时间: 2024-10-14 10:07:47 浏览: 14
这是一个常见的查找算法问题,通常可以使用哈希表或者频率统计的方法来解决。以下是步骤:
1. 创建一个空的哈希表(如Python中的字典或Java中的HashMap),用于存储每个数字及其出现的次数。
2. 遍历输入数组`numnums`,对于每一个元素,检查它是否已经在哈希表中。如果不在,添加到哈希表并设置计数为1;如果已在哈希表中,将其计数加一。
3. 遍历结束后,遍历哈希表,找到那些计数大于等于3的数字。如果有这样的数字,返回该数字。如果没有找到任何计数大于或等于3的数字,返回-1。
以下是伪代码示例:
```python
def findThreeTimes(numnums):
counts = {} # 使用字典作为哈希表
for num in numnums:
if num in counts:
counts[num] += 1
else:
counts[num] = 1
for num, count in counts.items():
if count >= 3:
return num
return -1
```
相关问题
3.编写一个函数,接收一个字符串,统计其中数字字符个数及字母字符个数。函数原型为:void fun(const char *str,int* char Ner_N);
好的,我来编写这个函数。根据题目描述,我们需要遍历整个字符串,统计其中数字字符和字母字符的个数,并将它们分别存储到两个指针所指向的变量中。
以下是我编写的代码:
```c++
void fun(const char *str, int* charNum, int* numNum) {
int len = strlen(str);
*charNum = 0;
*numNum = 0;
for (int i = 0; i < len; i++) {
if (isalpha(str[i])) {
(*charNum)++;
} else if (isdigit(str[i])) {
(*numNum)++;
}
}
}
```
首先,我们定义了两个指针参数`charNum`和`numNum`,用于存储字母字符和数字字符的个数。为了避免指针未初始化的问题,我们将它们初始化为0。
接下来,我们使用`strlen`函数获取字符串的长度,以便后续的遍历操作。
然后,我们使用一个循环遍历整个字符串。对于每个字符,我们使用`isalpha`和`isdigit`函数判断它是字母字符还是数字字符,并将相应的计数器加1。
最后,我们将计数器的值存储到指针所指向的变量中。
希望这个函数能够满足你的需求!
阅读全文