剑指offer

数组中只出现一次的数字

http://www.nowcoder.com/questionTerminal/e02fdb54d7524710a7d664d082bb7811

解题思路:以空间换时间,时间开销约为30ms;
①假定所有的数字都是在0-1000001之间;
定义数组count,用于统计0-1000001之间每个数字的出现次数;
②遍历数组array,统计中每个数字出现的次数;
for(int i=0;i<len;i++) {
count[array[i]]++;
}
③继续找出0-1000001出现次数为1的两个值,找到后终止循环;
例如:对于数组[4,6,2,2,3,3,8,8,9,9,1000000,1000000]
①定义数组count,其下标为0-1000001;
②遍历输入array,计算每个数字,其出现次数,如
count[4]=1; count[6]=1; count[2]=2; count[3]=2;
count[8]=2; count[9]=2; count[1000000]=2;
③遍历数组count,找出0-1000001出现次数为1的两个值(4,6),找到后终止循环。

public class Solution {
    public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
        int len = array.length;
        int [] count = new int[1000001];
        for(int i=0;i<len;i++) {
            count[array[i]]++;
        }
        int flag=0;
        for(int i=0;i<1000001;i++) {
            if(count[i]==1&&flag==0) {
                num1[0]=i;
                flag=1;
            }
            else if(count[i]==1&&flag==1) {
                num2[0]=i;
                        break;
            }
        }
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 11:24
大家还是用ai改吧,我心疼得要死,就当花钱买教训吧,人家直接拿完钱就跑路了
程序员小白条:简历修改700....神奇,又不是帮你面试,咋的,简历修改从双非变92了还是没实习变成有大厂实习了
点赞 评论 收藏
分享
牛客38347925...:9,2学生暑期实习失利开始投小厂,给这群人整自信了
点赞 评论 收藏
分享
Southyeung:我说一下我的看法(有冒犯实属抱歉):(1)简历不太美观,给我一种看都不想看的感觉,感觉字体还是排版问题;(2)numpy就一个基础包,机器学习算法是什么鬼?我感觉你把svm那些写上去都要好一点。(2)课程不要写,没人看,换成获奖经历;(3)项目太少了,至少2-3个,是在不行把网上学习的也写上去。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 13:47
机械打工仔:你自己匿名可以,这么好的公司就别给它匿名了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务