c – 在数组中查找对
发布时间:2020-12-16 07:22:03 所属栏目:百科 来源:网络整理
导读:所以我要做的是创建一个代码来查找数组中的数字对.当存在一对数字时,下面的代码可以很好地工作. #includestdio.hmain(){ int arr[10],i,j,pairs = 0; int n; scanf("%d",n); for(i = 0; in; i++) { scanf("%d",arr[i]); } for(i = 0; in; i++) { for(j = i+1
所以我要做的是创建一个代码来查找数组中的数字对.当存在一对数字时,下面的代码可以很好地工作.
#include<stdio.h> main() { int arr[10],i,j,pairs = 0; int n; scanf("%d",&n); for(i = 0; i<n; i++) { scanf("%d",&arr[i]); } for(i = 0; i<n; i++) { for(j = i+1; j<n; j++) { if(arr[i] == arr[j]) { pairs++; } } } printf("%d",pairs); } 我想做它,以便当有3个相同的元素时它可以工作. 谢谢. 解决方法
在这里,您将逐个比较每个元素与其他元素,这就是为什么您得到答案为4.
要计算三个或三个以上的对,一种方法可能是对数组进行排序,然后计算该元素已发生的次数,如果频率大于2,则意味着它形成一对. #include<stdio.h> main() { int arr[10],pairs = 0,count=0,prev_element=0; int n; scanf("%d",&arr[i]); } // You need to sort the array here. prev_element = arr[0]; count=1; for(i = 1; i<n; i++) { if(prev_element==arr[i]) { count++; } else { if(count>=2) pairs+=count/2; else { prev_element=arr[i]; count=1; } } } printf("%d",pairs); } 这也将减少代码的时间复杂度.以前,时间复杂度为O(n2),但现在它也将变为O(n). 这里,首先计算每个元素发生的次数,如果出现的次数大于2,则元素将形成一对,否则不会. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |