码迷,mamicode.com
首页 > 编程语言 > 详细

【剑指offer】数组中只出现一次的数字

时间:2019-01-01 11:01:55      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:ash   term   使用   Once   时间   mina   返回结果   solution   http   

题目:一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。

思路1:使用HashMap存上所有的数字,数字作为Key,Value为对应的出现次数。这种做法可以拓展到查找出现N次的数字。时间复杂服为O(N)+O(1) (建立Map的时间以及查找时间)

 1 import java.util.HashMap;
 2 import java.util.Map;
 3 //num1,num2分别为长度为1的数组。传出参数
 4 //将num1[0],num2[0]设置为返回结果
 5 import java.util.Arrays;
 6 
 7 public class Solution {
 8     public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
 9         Map<Integer, Integer> map = new HashMap<Integer, Integer>();
10         for(Integer i : array){
11             if(map.containsKey(i)){
12                 map.put(i, map.get(i)+1);
13             }else{
14                 map.put(i, 1);
15             }
16         }
17         
18         boolean flag = false;
19         for(Integer key : map.keySet()){
20             
21             if(map.get(key)==1){
22                 if(flag){
23                     num2[0] = key;
24                     break;
25                 }
26                 num1[0] = key;
27                 flag = true;
28             }
29         }
30     }
31 
32 }

思路2:骚操作 https://www.nowcoder.com/questionTerminal/e02fdb54d7524710a7d664d082bb7811

 

【剑指offer】数组中只出现一次的数字

标签:ash   term   使用   Once   时间   mina   返回结果   solution   http   

原文地址:https://www.cnblogs.com/singular/p/10204181.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!