37.数组中只出现一次的数字
2016-05-11 21:14
113 查看
数组中只出现一次的数字
参与人数:2603时间限制:1秒空间限制:32768K
本题知识点: 数组
算法知识视频讲解
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
这道题思路想出来后就很简单了,可是我却写错了一个地方,导致调试了很久。。
参与人数:2603时间限制:1秒空间限制:32768K
本题知识点: 数组
算法知识视频讲解
题目描述
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。这道题思路想出来后就很简单了,可是我却写错了一个地方,导致调试了很久。。
// 37.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <vector> using namespace::std; class Solution { public: void FindNumsAppearOnce(vector<int> data, int* num1, int *num2) { if (data.size() < 2) return; int divideNum = 0; for (int i = 0; i < data.size(); i++) { divideNum ^= data[i]; } unsigned int bit = 0; while (((divideNum & 1) == 0) && (bit < 8 * sizeof(int))) { divideNum = divideNum >> 1; bit++; } *num1 = *num2 = 0; for (int i = 0; i < data.size(); i++) { if (IsBit(data[i], bit)) { *num1 = *num1 ^ data[i]; } else { *num2 = *num2 ^ data[i]; } } } bool IsBit(int num, int index) { num = num >> index; return (num & 1); } bool isZero(int num, unsigned int index) { num = num >> index; return (num & 1); } }; int _tmain(int argc, _TCHAR* argv[]) { vector<int> test; test.push_back(2); test.push_back(4); test.push_back(3); test.push_back(6); test.push_back(3); test.push_back(2); test.push_back(5); test.push_back(5); Solution s; int num1, num2; s.FindNumsAppearOnce(test, &num1, &num2); return 0; }
if (IsBit(data[i], bit))我写成了
if (IsBit(*num1, bit))吸取教训!
相关文章推荐
- MySQL
- Unity特效与UI遮挡的问题
- windows下python抓取bing每日背景图设置为桌面背景
- 五虎棋
- Cocos2d-x 3.9 + VS2012 + BabeLua 如何搭建cocos2dx lua环境
- (4.1.23.13)自定义控件三部曲之动画篇(十一)——layoutAnimation与gridLayoutAnimation
- MySQL快速入门(二)
- 防止头文件多次引入
- 209. Minimum Size Subarray Sum 【M】【35】
- 地铁译:Spark for python developers --- 搭建Spark虚拟环境 4
- jQuery中获取特定顺序子元素(子元素种类不定)的方法
- php数据库访问
- 系统学习Linux系统第一天:5-11
- 1002 写出这个数 (20)
- 百度之星 2015资格赛 列变位法解密【字符串】
- 剑指offer—调整数组顺序
- git的学习笔记(使用远程仓库)
- weblogic,Jboss 不支持Jmxproxybeat
- Python greenlet
- 递减剔除数组元素算法