首页 > 代码库 > 第15题:单独的数字
第15题:单独的数字
给定一个数组,除了一个数出现1次之外,其余数都出现3次。找出出现一次的数。
如:{1, 2, 1, 2, 1, 2, 7}, 找出7.
格式:
第一行输入一个数n,代表数组的长度,接下来一行输入数组A[n],(输入的数组必须满足问题描述的要求),最后输出只出现一次的数。
要求:
你的算法只能是线性时间的复杂度,并且不能使用额外的空间哦~
样例输入
4 0 0 0 5
样例输出
5
问题解析:
其实这题不难(尽管“不能使用额外的空间”),主要原理就是遍历数组中有没有与其重复的数字,判断有没有重复的原理就是设置一个计数器,具体看代码及注释。
#include <stdio.h> int main() { int i,j,n,A[10000],count = 0; //count为计数器 scanf("%d",&n); //为n赋值 for(i = 0;i < n;i++) //为数组赋值 scanf("%d",&A[i]); for(i = 0;i < n;i++) //第一层循环:读取每个数,与后面数值作比较 { for(j = 0;j < n;j++) //第二次循环:读取i后面的数 { if(A[i] == A[j]) //判断外层数是否与内层数相等 count++; //若相等则将+1 } if(count == 1) //若计数器==1(也就是数组中只有其本身) { printf("%d\n",A[i]); //输出此数并结束 return 0; } count = 0; } return 0; }
如果看不懂欢迎留言提问或者留下邮箱!!!o(∩_∩)o
(需要邀请码的请留言)
第15题:单独的数字
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。