给array of integers. 
裡面有一个数字是单独出现  其他都会出现两次(而且一起出现)
ex: [1,2,2,3,3]
要判断哪个数字是单独出现的. 
以这个例子的话就是 1
LZ 一开始先说了用HashMap 去记出现几次
面试官说有没有不用额外空间的方式
我说 那就用XOR 去算吧   剩下来的那个就是单独出现的了  複杂度是O(N)
面试官说可以,但是希望再想其他方式可以优化的 比如说O(logN)複杂度
看到logN就想到binary serach了
不过一时没有想到怎麽个search法
面试官给了提示才推出来的
结论就是用index是基数或偶数 来判断 search砍半时应该往前找或往后找
//XOR版本

class Solution {
public:
int singleNumber(vector<int>& nums) {
int length = nums.size();
int num = ;
for(int i = ;i < length;i++)
num ^= nums[i];
return num;
}
}; class Solution{
public:
int singleNumber(vector<int>& nums){
return single_core(nums,,nums.size()-);
}
int single_core(vector<int> nums,int start,int end){
if(start == end)
return nums[start];
int length = end - start + ;
int mid = length/;
if((length/)% == ){
if(nums[i] == nums[i-])
return single_core(nums,start,mid);
if(nums[i] == nums[i+])
return single_core(nums,mid,end);
}
else{
if(nums[i] == nums[i-])
return single_core(nums,mid+,end);
if(nums[i] == nums[i+])
return single_core(nums,start,mid-);
}
}
}

偶数:12233、22331

奇数:2233441、1223344

那个单独的数一定是在奇数个中

single number和变体的更多相关文章

  1. [LeetCode] Single Number III 单独的数字之三

    Given an array of numbers nums, in which exactly two elements appear only once and all the other ele ...

  2. 【LeetCode】Single Number I & II & III

    Single Number I : Given an array of integers, every element appears twice except for one. Find that ...

  3. [OJ] Single Number II

    LintCode 83. Single Number II (Medium) LeetCode 137. Single Number II (Medium) 以下算法的复杂度都是: 时间复杂度: O( ...

  4. 实现Promise的first等各种变体

    本篇文章主要是想通过ES6中Promise提供的几个方法,来实现诸如first.last.none.any等各种变体方法! 在标准的ES6规范中,提供了Promise.all和Promise.race ...

  5. 136. Single Number唯一的数字

    [抄题]: Given an array of integers, every element appears twice except for one. Find that single one. ...

  6. 136. Single Number唯一的一个只出现了一次的数字

    [抄题]: Given a non-empty array of integers, every element appears twice except for one. Find that sin ...

  7. [LeetCode] Single Number II 单独的数字之二

    Given an array of integers, every element appears three times except for one. Find that single one. ...

  8. [LeetCode] Single Number 单独的数字

    Given an array of integers, every element appears twice except for one. Find that single one. Note:Y ...

  9. LeetCode Single Number I / II / III

    [1]LeetCode 136 Single Number 题意:奇数个数,其中除了一个数只出现一次外,其他数都是成对出现,比如1,2,2,3,3...,求出该单个数. 解法:容易想到异或的性质,两个 ...

随机推荐

  1. Spring依赖包

    spring框架jar包 1.下载spring源包spring地址:http://www.springsource.org/download我下的是spring-framework-3.1.0.REL ...

  2. java自动生成代码

    看到这个标题,如果你以为真的可以完全自动生成,那你就太Naive啦 我这里想介绍的是,利用模板生成我们需要的代码 一.模板 首先来说说模板,常见的java模板有:FreeMarker.Velocity ...

  3. AutoMapper在项目中的应用

    一.先说说DTO DTO是个什么东东? DTO(Data Transfer Object)就是数据传输对象,说白了就是一个对象,只不过里边全是数据而已. 为什么要用DTO? 1.DTO更注重数据,对领 ...

  4. SSM整合的配置文件

    一.spring-web.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&q ...

  5. JVM复习--新生代GC

    在复习Java内存机制的过程中有一些新问题,自问自答,做个记录.新生代是java堆内存的一部分.堆内存分新生代和老生代两大块,也有把堆内存分为新生代老生代永久代(持久代)三块的说法.(不过这种说法应该 ...

  6. Linux命令行介绍

    一.Linux命令行结尾的提示符有“#”和“$”两种不同的符号,代码如下所示: [root@localhost ~]# ls anaconda-ks.cfg Desktop Documents min ...

  7. CSS计数器(序列数字字符自动递增)详解———张鑫旭

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=4303 一.挖坟不可耻 ...

  8. wagon-maven-plugin实现自动打包部署到服务器

    1.在maven中添加依赖 <!-- https://mvnrepository.com/artifact/org.codehaus.mojo/wagon-maven-plugin --> ...

  9. JS 正则截取字符串

    1.js截取两个字符串之间的内容: varstr = "aaabbbcccdddeeefff"; str = str.match(/aaa(\S*)fff/)[1]; alert( ...

  10. 从零开始学习html(十四)单位和值

    一.颜色值 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <tit ...