#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
void find(int* in, int size) {
int count[89] = { 0 }; // 统计 0 到 88 的计数
for (int i = 0; i < size; i++) {
count[in[i]]++;
}
}
for (int i = 0; i < 89; i++) {
if (count[i] == 2) {
printf("%d\n", i); // 输出出现两次的数字
}
}
}
int main() {
int in[10] = { 1, 2, 3, 4, 5, 6, 7, 88, 88 };
find(in, 10); // 传递数组大小
return 0;
}
//能不能有更好的方法,让count不遍历89次循环?
这种可以说是很好的方法了,别看是count[in[i]],实际上,只有count初始化的内存比较大
//因为要将in里面数据最大的数包含在内,这可不是数组下标从0开始的问题了!这里必须最少89,而不是88
至于循环来计数,只需要 i < sizeof(in)/4 就行了
如何省去这一步:for (int i = 0; i < 89; i++) {
只是为了输出成对的数字,竟然去遍历89次循环,实在得不尝失!
for (int i = 0; i < 9; i++) {
count[in[i]]++;
if (count[in[i]] == 2) {
printf("%d", in[i]);
}
}
这样,便可一石二鸟
//这个ai想出来的,太垃了,数字一大就用不了
Comments NOTHING