剑指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;
            }
        }
    }
}
全部评论

相关推荐

ResourceUt...:你是我见过最美的牛客女孩
晒一下我的毕业照
点赞 评论 收藏
分享
每晚夜里独自颤抖:这个在牛客不是老熟人了吗
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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