思路:

  1. 对数组进行排序
  2. 当索引为0或者array.length-1时
    1)若array[0]!=array[1],array[0]为目标值
    2)若array[len-1]!=array[len-2],array[len-1]为目标值
  3. 对于其他索引,判断条件为当前值与前后两个值都不相等。
    注意:此题使用的时间换空间,也可使用HashMap集合做。
    import java.util.*;
    public class Solution {
      /**
       * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
       *
       * 
       * @param array int整型一维数组 
       * @return int整型一维数组
       */
      public int[] FindNumsAppearOnce (int[] array) {
          // write code here
          Arrays.sort(array);//排序
          int[] res=new int[2];//返回数组
          ArrayList<Integer> list=new ArrayList<>();//暂时存储目标值
          int len=array.length;
          //情况1:开头
          if(array[0]!=array[1]){
              list.add(array[0]);
          }
          //情况2:末尾
          if(array[len-1]!=array[len-2]){
              list.add(array[len-1]);
          }
          //情况3:中间
          for(int i=1;i<len-1;i++){
              if(array[i]!=array[i-1] && array[i]!=array[i+1]){
                  list.add(array[i]);
              }
              if(list.size()==2){
                  break;
              }
          }
          //按升序输出数组
          for(int i=0;i<2;i++){
              if(list.get(0)>list.get(1)){
                  res[0]=list.get(1);
                  res[1]=list.get(0);
              }else{
                  res[0]=list.get(0);
                  res[1]=list.get(1);
              }
          }
          return res;
      }
    }