数组中只出现一次的数字

数组中只出现一次的数字

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

Java 实现
1、Arrays.sort 数组排序
2、使用栈进行从小到大入栈,一样的则弹出,不一样则入栈
3、取栈中剩余的元素

//num1,num2分别为长度为1的数组。传出参数
//将num1[0],num2[0]设置为返回结果
import java.util.Arrays;
import java.util.Stack;
public class Solution {
    public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
      Arrays.sort(array);
      Stack<Integer>sta = new Stack<Integer>();


      for(int i=0; i<array.length; i++){
          if(sta.empty() || sta.peek()!=array[i]) {
              sta.push(array[i]);
          }else if(sta.peek() == array[i]) {
              sta.pop();
          }
      }

      num1[0] = sta.pop();
      num2[0] = sta.pop();
  }
}
全部评论
用排序时间复杂度要O(nlogn),可能更多情况还是使用遍历数组O(n)的方法好一些
1 回复 分享
发布于 2020-03-25 16:42
直接使用hashmap也可以 思路是一样的,先入map,已经存在key就删掉,不存在就put ,最后取map中剩下的
点赞 回复 分享
发布于 2020-08-16 22:40
如果数组中有三个一样的数字,你就废了
点赞 回复 分享
发布于 2020-10-13 18:16

相关推荐

不愿透露姓名的神秘牛友
11-26 15:46
已编辑
字节国际 电商后端 24k-35k
点赞 评论 收藏
分享
10-09 19:35
门头沟学院 Java
洛必不可达:java的竞争激烈程度是其他任何岗位的10到20倍
点赞 评论 收藏
分享
oppo 应用软开 22*15+0.5*12
拿到了ssp完美:真的坎坷,但是你至少拿到这么多offer了!
点赞 评论 收藏
分享
评论
47
收藏
分享
牛客网
牛客企业服务