zoukankan      html  css  js  c++  java
  • 【剑指offer】数组中只出现一次的数字

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

    思路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

  • 相关阅读:
    卡特兰数
    Tree
    关于树上DP的转移方式与复杂度证明
    Tarjan进阶
    排队
    Perm 排列计数
    [bzoj1227]虔诚的墓主人
    [BZOJ1195]最短母串
    ValueError: Variable vgg_16/conv1/conv1_1/weights already exists, disallowed
    《链家网技术架构的演进之路》读后感
  • 原文地址:https://www.cnblogs.com/singular/p/10204181.html
Copyright © 2011-2022 走看看