给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. python 历险记(六)— python 对正则表达式的使用(上篇)

    目录 引言 什么是正则表达式? 正则表达式有什么用? 正则表达式的语法及使用实例 正则表达式语法有哪些? 这些正则到底该怎么用? 小结 参考文档 系列文章列表 引言 刚接触正则表达式,我也曾被它们天书 ...

  2. jdk源码->集合->HashMap

    一.hash算法 1.1 hash简介 hash,一般翻译为散列,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出值就是散列值,这种转换是一种压缩映射,也就是散列的空间小于输入的空间, ...

  3. Linux常用基本命令(软链接与硬链接 )

    硬链接:相当于文件的多个入口,作用:备份文件,创建快照等 软链接:相当于windows的快捷方式 命令格式: ln option 源文件 目标文件 -s: 创建软链接 1,创建硬链接: ghostwu ...

  4. php pdo对象使用详解: 连接数据库与exec方法

    要使用pdo,首先需要开启pdo扩展,我这里已经开启了mysql的pdo扩展 ghostwu@dev:~$ php -m | grep pdo pdo_mysql ghostwu@dev:~$ 1,连 ...

  5. linux系统编程:read,write与lseek的综合应用

    这个实例根据命令行参数进行相应的读学操作: 用法: usage:./io file {r<length>|R<length>|w<string>|s<offs ...

  6. 正则表达式 ?P<name>

    import re # 将匹配的数字乘以 2 def double(matched): value = int(matched.group('value')) return str(value * 2 ...

  7. Code Signal_练习题_variableName

    Correct variable names consist only of English letters, digits and underscores and they can't start ...

  8. instanceof与constructor的区别

    名词介绍 instanceof 的作用是判断实例对象是否为构造函数的实例,实际上判断的是实例对象的__proto__属性与构造函数的prototype属性是否指向同一引用: constructor 的 ...

  9. vue-scroller记录滚动位置

    问题描述: 列表页进入详情页,或者tab页切换,然后再返回列表页,希望能切换到之前滚动位置 解决问题思路: 切换到其他页面前记录位置,返回列表页的时候返回位置.这就需要借助vue-router的bef ...

  10. 【代码笔记】iOS-UIActionSheet字体的修改

    一,效果图. 二,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController : UIVi ...