数组中只出现一次的数字

数组中只出现一次的数字

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
如果数组中有三个一样的数字,你就废了
点赞 回复 分享
发布于 2020-10-13 18:16
直接使用hashmap也可以 思路是一样的,先入map,已经存在key就删掉,不存在就put ,最后取map中剩下的
点赞 回复 分享
发布于 2020-08-16 22:40

相关推荐

05-12 17:00
门头沟学院 Java
king122:你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞 评论 收藏
分享
评论
47
收藏
分享

创作者周榜

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