题解 | #数组中只出现一次的两个数字#

数组中只出现一次的两个数字

http://www.nowcoder.com/practice/389fc1c3d3be4479a154f63f495abff8

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 排序
     * @param array int整型一维数组 
     * @return int整型一维数组
     */
    public int[] FindNumsAppearOnce (int[] array) {
        // write code here
        int[] arr = new int[2];
        //排序,比较
        Arrays.sort(array);//排序
        //第一个和第二个相比较,如果不相等,则arr[0]只出现一次
        if(array[0] != array[1]){
            arr[0] = array[0];
        }
        
        int length = array.length;   
        //倒数第一个和倒数第二个相比较,如果不相等,则arr[length-1]只出现一次
        if(array[length-2] != array[length-1]){
            if(arr[0] == 0){
                arr[0] = array[length-1];
            }else{
                arr[1] = array[length-1];
                Arrays.sort(arr);
                return arr;
            }
        }
        //遍历,从第二个到倒数第二个开始遍历,如果与相邻的前后两个比较都不相等,则该数只出现一次
        for(int i = 1;i<length-1;i++){
            if(array[i] != array[i-1] && array[i] != array[i+1]){
                if(arr[0] == 0){
                    arr[0] = array[i];
                }else{
                    arr[1] = array[i];
                    Arrays.sort(arr);
                    return arr;
                }
            }
        }
        
        return null;
    }
}
全部评论

相关推荐

10-22 19:44
门头沟学院 Java
面了100年面试不知...:那我得去剪个头
点赞 评论 收藏
分享
LZStarV:冲就好了,就算真的是字节也冲,面评脏了大不了等三四个月就淡了,而且等到那个时候实力进步了选择还多,何必拘泥于字节
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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