11.18 找出成对的数

发布于 2 天前  4 次阅读


#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想出来的,太垃了,数字一大就用不了

届ける言葉を今は育ててる
最后更新于 2024-11-19