【发布时间】:2021-03-11 01:07:40
【问题描述】:
任何帮助将不胜感激。在下面的这段代码中,我知道我们需要使用“j=i+1”,因为原始数组和重复数组中的相同元素不应被记录为重复元素。但是,假设在第二个循环中,当 i=2,所以 j=3,那么循环将从第三个元素开始运行,对吗?它将如何将数组中的第二个元素与副本中的第一个元素进行比较?它不会因为它是 j+1 而错过副本中的第一个元素吗? 请向我解释一下,我是编程初学者。还有,为什么要使用count++? 有人可以向我解释一下吗...?
#include <stdio.h>
#define MAX_SIZE 100 // Maximum array size
int main()
{
int arr[MAX_SIZE];
int i, j, size, count = 0;
/* Input size of array */
printf("Enter size of the array : ");
scanf("%d", &size);
/* Input elements in array */
printf("Enter elements in array : ");
for(i=0; i<size; i++)
{
scanf("%d", &arr[i]);
}
/*
* Find all duplicate elements in array
*/
for(i=0; i<size; i++)
{
for(**j=i+1**; j<size; j++)
{
/* If duplicate found then increment count by 1 */
if(arr[i] == arr[j])
{
**count++;**
break;
}
}
}
printf("\nTotal number of duplicate elements found in array = %d", count);
return 0;
}
【问题讨论】:
-
... 数组... 第 0 步:对数组进行排序
-
@pmg 你是什么意思
-
抱歉简洁了。我的意思是,如果您遇到涉及数组的问题,首先要做的就是对数组进行排序。排序为
O(n.logn);即使不是绝对需要,也不会对问题的其余部分产生太大影响……如果您在O(n)中找到解决方案,则可以删除排序 -
如果对数组进行排序,所有重复项都会相邻。这将简化计数。
-
@pmg:“对数组排序”对于询问简单循环和
count++的人来说是一个高级概念。教学需要教给学生与他们已经知道的东西相邻的东西,而不是超出他们目前可见的东西。
标签: arrays c duplicates