数组中只出现一次的数字

数组中只出现一次的数字

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

相关推荐

用户64975461947315:这不很正常吗,2个月开实习证明,这个薪资也还算合理,深圳Java好多150不包吃不包住呢,而且也提前和你说了没有转正机会,现在贼多牛马公司骗你说毕业转正,你辛辛苦苦干了半年拿到毕业证,后面和你说没hc了😂
点赞 评论 收藏
分享
评论
47
收藏
分享

创作者周榜

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