83 落单的数 II
原题网址:http://www.lintcode.com/zh-cn/problem/single-number-ii/
给出3*n + 1 个的数字,除其中一个数字之外其他每个数字均出现三次,找到这个数字。
给出 [1,1,2,3,3,3,2,2,4,1] ,返回 4
一次遍历,常数级的额外空间复杂度
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
位操作,统计所有数字各个位上数字的和,除以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的更多相关文章
- lintcode 中等题:Singleton number II 落单的数 II
题目 落单的数 II 给出3*n + 1 个的数字,除其中一个数字之外其他每个数字均出现三次,找到这个数字. 样例 给出 [1,1,2,3,3,3,2,2,4,1] ,返回 4 挑战 一次遍历,常数级 ...
- lintcode 落单的数(位操作)
题目1 落单的数 给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字. 链接:http://www.lintcode.com/zh-cn/problem/single ...
- 84 落单的数 III
原题网址:http://www.lintcode.com/zh-cn/problem/single-number-iii/# 给出2*n + 2个的数字,除其中两个数字之外其他每个数字均出现两次,找到 ...
- lintcode 中等题:Single number III 落单的数III
题目 落单的数 III 给出2*n + 2个的数字,除其中两个数字之外其他每个数字均出现两次,找到这两个数字. 样例 给出 [1,2,2,3,4,4,5,3],返回 1和5 挑战 O(n)时间复杂度, ...
- lintcode:落单的数
题目: 落单的数 给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字. 样例 给出 [1,2,2,1,3,4,3],返回 4 挑战 一次遍历,常数级的额外空间复杂度 ...
- [codevs3295]落单的数
题目描述 Description 有n个数(n是奇数),其中n-1个数两两成对,有1个数落单,找出这个数.要求O(n)的时间复杂度,O(1)的空间复杂度 输入描述 Input Description ...
- LeetCode 136. Single Number (落单的数)
Given an array of integers, every element appears twice except for one. Find that single one. Note:Y ...
- LinCode落单的数
easy 落单的数 查看执行结果 60% 通过 给出2*n + 1 个的数字,除当中一个数字之外其它每一个数字均出现两次.找到这个数字. 您在真实的面试中是否遇到过这个题? Yes 例子 给出 [1, ...
- lintcode-83-落单的数 II
83-落单的数 II 给出3*n + 1 个的数字,除其中一个数字之外其他每个数字均出现三次,找到这个数字. 样例 给出 [1,1,2,3,3,3,2,2,4,1] ,返回 4 挑战 一次遍历,常数级 ...
随机推荐
- 《转》python 9 字典,numpy
http://www.cnblogs.com/BeginMan/p/3156960.html 一.映射类型 我理解中的映射类型是:键值对的关系,键(key)映射值(value),且它们是一对多的关系. ...
- Codeforces 479【A】div3试个水
题目链接:http://codeforces.com/problemset/problem/977/A 题意:这个题,题目就是让你根据他的规律玩嘛.末尾是0就除10,不是就-1. 题解:题解即题意. ...
- C#& Screen 类&(&多&屏&幕&开&发)
原文:C#& Screen 类&(&多&屏&幕&开&发) Screen 类 下面的代码示例演示如何使用 Screen 类的各种方法和属性. 该示 ...
- php 执行mysql inset 指令无效
网数据库里插入一条 inset into je_user("name","va") values("df","12"), ...
- JS事件 文本框内容改变事件(onchange)通过改变文本框的内容来触发onchange事件,同时执行被调用的程序。
文本框内容改变事件(onchange) 通过改变文本框的内容来触发onchange事件,同时执行被调用的程序. 如下代码,当用户将文本框内的文字改变后,弹出对话框"您改变了文本内容!&quo ...
- sleep()与wait()的区别
①sleep()实现线程阻塞的方法,我们称之为“线程睡眠”,方式是超时等待,怎么理解?就是sleep()通过传入“睡眠时间”作为方法的参数,时间一到就从“睡眠”中“醒来”: ②wait()方法实现线程 ...
- Spring Boot环境搭建。
1.环境准备. jdk1.8 idea(如果不会激活可以看另外一篇:https://www.cnblogs.com/joeking/p/11119123.html) 2.打开idea 如果是idea的 ...
- css---5 only-child or nth-of-type
1 _nth-child系列 :nth-child(index) <!DOCTYPE html> <html lang="en"> <head> ...
- js清空input file值
项目进行导入操作,如果第一次导入某个文件会触发导入操作,但是第二次导入重复该文件,不会触发操作. 分析了原因,是因为上一次file里选择的文件路径值与本次选择的文件路径值是一样的,值没有改变所以导致f ...
- 【JZOJ6350】考试(test)
description analysis 对于\(n=0\)的点,直接模拟就好了 状压\(DP\),设\(f[i][j][S]\)表示到第\(i\)题.连续\(GG\)了\(j\)题.喝的饮料集合为\ ...