原题网址:http://www.lintcode.com/zh-cn/problem/single-number-ii/

给出3*n + 1 个的数字,除其中一个数字之外其他每个数字均出现三次,找到这个数字。

您在真实的面试中是否遇到过这个题?

Yes
样例

给出 [1,1,2,3,3,3,2,2,4,1] ,返回 4

挑战

一次遍历,常数级的额外空间复杂度

标签

 
非挑战版AC代码:
思路依旧是先排序,再遍历。每隔两个数(每三个数)做一次减法,若差值不为零返回被减数,一直遍历到第n-1个数,若一直无输出,说明最后一个元素是落单的数,将该值return出去。
 
 class Solution {
public:
/**
* @param A: An integer array
* @return: An integer
*/
int singleNumberII(vector<int> &A) {
// write your code here
if (A.empty())
{
return NULL;
}
int size=A.size();
sort(A.begin(),A.end());
for (int i=;i<size-;i+=)
{
if (A[i]-A[i+]!=)
{
return A[i];
}
}
return A[size-];
}
};

挑战:一次遍历,常数级的额外空间复杂度

参考: https://blog.csdn.net/wangyuquanliuli/article/details/46637377

https://blog.csdn.net/zaqwsx20/article/details/52823538?utm_source=itdadao&utm_medium=referral

C++中位运算的使用方法

位操作,统计所有数字各个位上数字的和,除以3取余就是落单数在这个位上的值。

 class Solution {
public:
/**
* @param A: An integer array
* @return: An integer
*/
int singleNumberII(vector<int> &A) {
// write your code here
int buf[]={}; //int类型32个位;
for (int i=;i<(int)A.size();i++) //计算数组中所有元素各个位的和(二进制),存放在数组buf中;
{
addBuf(A[i],buf);
}
int result=;
for (int j=;j<;j++)
{
int val=buf[j]%; //各个位的和对3取余数,val值非0即1;
result=(val<<j|result); //由数组恢复成整数(注意是二进制运算),j是第几位,所以需要左移j;
} //或运算保证之前的结果不丢失;
return result;
} void addBuf(int x,int *buf)
{
for (int i=;i<;i++)
{
buf[i]=buf[i]+(x>>i&);
}
}
};

83 落单的数 II的更多相关文章

  1. lintcode 中等题:Singleton number II 落单的数 II

    题目 落单的数 II 给出3*n + 1 个的数字,除其中一个数字之外其他每个数字均出现三次,找到这个数字. 样例 给出 [1,1,2,3,3,3,2,2,4,1] ,返回 4 挑战 一次遍历,常数级 ...

  2. lintcode 落单的数(位操作)

    题目1 落单的数 给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字. 链接:http://www.lintcode.com/zh-cn/problem/single ...

  3. 84 落单的数 III

    原题网址:http://www.lintcode.com/zh-cn/problem/single-number-iii/# 给出2*n + 2个的数字,除其中两个数字之外其他每个数字均出现两次,找到 ...

  4. lintcode 中等题:Single number III 落单的数III

    题目 落单的数 III 给出2*n + 2个的数字,除其中两个数字之外其他每个数字均出现两次,找到这两个数字. 样例 给出 [1,2,2,3,4,4,5,3],返回 1和5 挑战 O(n)时间复杂度, ...

  5. lintcode:落单的数

    题目: 落单的数 给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字. 样例 给出 [1,2,2,1,3,4,3],返回 4 挑战 一次遍历,常数级的额外空间复杂度 ...

  6. [codevs3295]落单的数

    题目描述 Description 有n个数(n是奇数),其中n-1个数两两成对,有1个数落单,找出这个数.要求O(n)的时间复杂度,O(1)的空间复杂度 输入描述 Input Description ...

  7. LeetCode 136. Single Number (落单的数)

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

  8. LinCode落单的数

    easy 落单的数 查看执行结果 60% 通过 给出2*n + 1 个的数字,除当中一个数字之外其它每一个数字均出现两次.找到这个数字. 您在真实的面试中是否遇到过这个题? Yes 例子 给出 [1, ...

  9. lintcode-83-落单的数 II

    83-落单的数 II 给出3*n + 1 个的数字,除其中一个数字之外其他每个数字均出现三次,找到这个数字. 样例 给出 [1,1,2,3,3,3,2,2,4,1] ,返回 4 挑战 一次遍历,常数级 ...

随机推荐

  1. PAT L2-019. 悄悄关注 /// map set

    https://www.patest.cn/contests/gplt/L2-019 题目大意: 新浪微博上有个“悄悄关注”,一个用户悄悄关注的人,不出现在这个用户的关注列表上,但系统会推送其悄悄关注 ...

  2. js实现图片资源、blob、base64的各种场景转换

    文件转babase64 function getImgToBase64(url,callback){//将图片转换为Base64 var canvas = document.createElement ...

  3. 2019牛客暑期多校训练营(第八场)D-Distance 定期重构

    题目传送门 题意: 在一个三维空间中,给出q次操作,每次操作可以在空间中加上一个固定点,或者询问一个点,对于一个询问操作,输出距离这个点最近的固定点的曼哈顿距离. 思路: 官方题解:先假设所有询问都在 ...

  4. c_数据结构_二叉树的遍历实现

    #include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 #define OVERFLOW -2 #d ...

  5. mysql双主热备

    先搭建mysql主从模式,主从请参考mysql 主从笔记 然后在在配置文件里添加如下配置 1 log_slave_updates= #双主热备的关键参数.默认情况下从节点从主节点中同步过来的修改事件是 ...

  6. mysql主从同步的键值冲突问题的解决方法

    转自https://njs375666635.iteye.com/blog/2242067 多主互备和主从复制有一些区别,因为多主中都可以对服务器有写权限,所以设计到自增长重复问题 出现的问题(多主自 ...

  7. [JZOJ4616] 【NOI2016模拟7.12】二进制的世界

    题目 题目大意 给你一个数列,每个数为[0,65535][0,65535][0,65535]内的整数. 给定一个位运算操作optoptopt,是andandand.ororor.xorxorxor中的 ...

  8. 解析Spring第一天

    目的:了解spring框架中的注解 前言:同样是使用idea创建一个普通的maven工程(如何创建一个普通的Maven工程可以参考mybatis入门第一天的详解). 项目结构: 代码编辑: 在项目中引 ...

  9. Apache Flink 进阶(三):Checkpoint 原理解析与应用实践

    大家好,今天我将跟大家分享一下 Flink 里面的 Checkpoint,共分为四个部分.首先讲一下 Checkpoint 与 state 的关系,然后介绍什么是 state,第三部分介绍如何在 Fl ...

  10. css3技巧——产品列表之鼠标滑过效果translateY(三)

    <div class="main"> <div class="view view-tenth"> <figure> < ...