问题:发现2件事
请尽可能简单地解决问题,不要使用指针或任何高级容器,如哈希表、对或映射(我是一个初学者)
{1, 2, 8, 2, 5, 0, 5}
答案是2和2(元素2
和5
都出现两次,但2
是最小的)
这里是代码,但它只找到最高出现的权利。
int A[] = {1, 2, 8, 2, 5, 0, 5};
int N = 7;
int maxCount = 0;
int minMode = 0;
for (int i = 0; i <= N - 1; i++) {
int count = 0;
for (int j = 0; j <= N - 1; j++) {
if (A[i] == A[j])
count++;
}
if (count >= maxCount)
{
maxCount = count;
minMode = A[i];
}
}
cout << maxCount << " " << minMode << endl;
这个问题是O(n),但不使用结构,它就变成了O(n²)。
下面是一个简单的O(N²)解决方案:
int main(){
int A[7] = {1, 2, 8, 2, 5, 0, 5};
int value, occurrences;
int maxValue = 99999999, maxOccurrences = 0;
for(int i = 0; i < 7; i++){
value = A[i]; occurrences = 0;
for(int j = 0; j < 7; j++) if(A[j] == value) occurrences++;
if(occurrences > maxOccurrences){
maxValue = value; maxOccurrences = occurrences;
}
else if(occurrences == maxOccurrences){
if(value < maxValue) {
maxValue = value;
maxOccurrences = occurrences;
}
}
}
cout<<maxValue<<" occurs "<<maxOccurrences<<" times"<<endl;
}
我们将maxValue初始化为一个非常大的数字,只是为了帮助实现这样一个事实,即如果两个数字出现的次数相同,将选择最低的一个。
问题内容: 在Javascript中,我试图获取数字值的初始数组并计算其中的元素。理想情况下,结果将是两个新数组,第一个数组指定每个唯一元素,第二个数组包含每个元素出现的次数。但是,我愿意接受有关输出格式的建议。 例如,如果初始数组为: 然后将创建两个新的数组。第一个将包含每个唯一元素的名称: 第二个将包含元素在初始数组中出现的次数: 因为数字5在初始数组中出现3次,所以数字2出现5次,而9和4都
问题内容: 我正在寻找一种确定JavaScript数组中哪个元素的出现次数最多的优雅方法(mode)。 例如,在 该元素是最常见的元素。 问题答案: 这只是模式。这是一个 快速的,未优化的 解决方案。它应该是O(n)。
我想在“价格”数组中找到最高的元素,然后在“字母”数组中打印相应的元素 我需要一些关于我能做什么的建议。我尝试过输出字母[索引],但由于我认为的范围,我遇到了一个错误。我对编码很陌生,所以这真的困扰着我。
问题内容: 我只需要找到1D中最小的第n个元素。 例如: 我想获得第五个最小的元素,所以我想要的输出是。 我当前的解决方案是这样的: 但是,找到5个最小的元素然后再选择最大的元素对我来说似乎很笨拙。有更好的方法吗?我是否缺少一个可以实现目标的功能? 有些问题的标题与此相似,但我没有看到任何答案。 编辑: 我本来应该提到它,但是性能对我来说很重要。因此,虽然不错的解决方案对我来说不起作用。 结果:
问题 怎样找出一个序列中出现次数最多的元素呢? 解决方案 collections.Counter 类就是专门为这类问题而设计的, 它甚至有一个有用的 most_common() 方法直接给了你答案。 为了演示,先假设你有一个单词列表并且想找出哪个单词出现频率最高。你可以这样做: words = [ 'look', 'into', 'my', 'eyes', 'look', 'into',