首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

每日一题:数组中重复数字(C语言C++)

题目描述 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。...请找出数组中任意一个重复数字。 示例 : 输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 3 思路分析 首先想到的是暴力法—两个for循环实现,缺点很明显:用时过多。...再进一步可以先排序数组然后一次for循环,容易找出所有的重复元素以及重复的次数,用时依旧较长。...重复操作1, 直到number[i]== i, 则继续操作下一个位置的元素, 或者numbers[i] == numbers[numbers[i],元素重复。...代码实现 //#include //C语言 #include using namespace std; //2020.05.22 int findRepeatNumber

3.1K20

C语言单身狗问题

一.单身狗问题初阶 1.问题描述 一个数组中只有一个数字是出现一次,其他所有数字都出现了两次.编写一个函数,找出这个只出现一次的数字....进阶思路: 在C语言中有一个异或(^)逻辑运算符,我们可以利用它的自反性质来找出"单身狗". 如果有对异或(^)还不是很了解的朋友可以先移步这篇博客,了解一下关于异或的一些性质,有助于理解后面的操作....【C语言】异或(^)操作符详解 先将文章里面的部分内容截出方便我们后续使用: 异或的运算法则(部分): 接下来我们画图来解释一下异或操作的步骤: 可以发现,凡是出现过两次的数字,两两异或后都变成了0,而唯一的只出现了一次的数字...,与0异或的结果仍然是它本身,这说明整个数组相异或的结果恰好就是我们要的"单身狗"....二.单身狗问题进阶 1.问题描述 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次.编写一个函数,找出这个两个只出现一次的数字.

10910
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    数字分类 C语言

    给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: A1​ = 能被 5 整除的数字中所有偶数的和; A2​ = 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n1​−n2​...+n3​−n4​⋯; A3​ = 被 5 除后余 2 的数字的个数; A4​ = 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位; A5​ = 被 5 除后余 4 的数字中最大数字。...数字间以空格分隔。 输出格式: 对给定的 N 个正整数,按题目要求计算 A1​~A5​ 并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。...若分类之后某一类不存在数字,则在相应位置输出 N。...,后来经过各种问题排查,发现了输入的第一个数字是分类数字的数目。

    16810

    C语言——oj刷题——单身狗1

    题目: 在一个整型数组中,只有一个数字出现一次,其他数组都是成对出现的,请找出那个只出现一次的数字。...我们可以遍历整个数组并将所有数字进行异或运算,最终得到的结果就是只出现一次的数字。...然后,我们使用一个循环遍历整个数组,并将每个数字与 result 进行异或运算。由于成对出现的数字会相互抵消,所以最终只有出现一次的数字会留下来。...最后,我们在 main 函数中创建一个示例数组,并调用 findSingleNumber 函数来找到只出现一次的数字,并将结果打印到控制台。...当我们编译并运行上述代码时,输出将是: The single number is: 5 这样,我们就成功地找到了只出现一次的数字。 希望这篇博客能够帮助你理解如何用C语言解决这个问题!

    9410

    C语言——oj刷题——单身狗2

    题目名称: 寻找只出现一次的两个数字 题目内容: 在一个数组中,只有两个数字出现了一次,其他所有数字都出现了两次。本篇博客将介绍如何编写一个函数来找出这两个只出现一次的数字。...具体步骤如下: 遍历整个数组,将所有数字进行异或运算。 异或运算具有交换律和结合律的性质,所以最终的结果将是两个只出现一次的数字的异或结果。 在异或结果中找到任意一个为1的位,记为bit。...再次遍历整个数组,将数组中所有数字的bit位为1的进行异或运算,得到的结果即为其中一个只出现一次的数字。 将得到的结果与异或结果进行异或运算,得到的结果即为另一个只出现一次的数字。...下面是使用上述思路编写的C代码示例: #include void findSingleNumbers(int arr[], int n) { int xorResult =...在函数内部,我们使用异或运算来找到只出现一次的两个数字。最后,我们打印出结果。 希望这篇博客对你理解如何找出一个数组中只出现一次的两个数字有所帮助。如果你有任何问题或需要进一步的解释,请随时向我提问。

    7510

    C语言】猜数字游戏

    游戏要求: 电脑自动生成1~100的随机数 玩家猜数字,猜数字的过程中,根据猜测数据的大小给出大了或小了的反馈,直到猜对,游戏结束 1....随机数生成 想完成猜数字游戏,首先得产生随机数,那怎么产生随机数呢?...1.1 rand C语言提供了一个函数叫rand,这函数是可以生成随机数的,函数原型如下: int rand (void); rand函数会返回⼀个伪随机数,这个随机数的范围是在0~RAND_MAX之间...1.2 srand C语言中又提供了一个函数叫srand,用来初始化随机数的生成器的,srand的原型如下: void srand (unsigned int seed); 程序中在调用rand函数之前先调用...在C语言中有一个函数叫time,就可以获得这个时间,time函数原型如下: time_t time (time_t* timer); time函数会返回当前的日历时间,其实返回的是1970年1月1日0时

    7210

    数字游戏(C语言实现)

    自我介绍:一个脑子不好的大一学生,c语言接触还没到半年,若涉及到效率等问题,各位都可以在评论区提出见解,谢谢啦 注:该文章会对我的下一篇文章:扫雷游戏打下一定基础; 该文章所写代码猜数字的范围为1~100...3.猜数字需要产生随机数:该处需要用到下面几种函数rand,srand,time,下面我会给详细介绍。...2.详细步骤 1.菜单的生成: void caidan() { printf("***********************\n"); printf("***请选择一个数字:****\n");...} while (input); //因为玩家如果退出游戏,就会选择0,所有while的条件直接选成input(玩家的选择)就好 return 0; } 3.随机数的生成: 1.rand函数: C语言提供了一个函数叫...//不要忘了头文件 void game() { ; } void caidan() { printf("***********************\n"); printf("***请选择一个数字

    16110
    领券