面试56题:

题目:数组中数字出现的次数

题:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。

解题思路:

方法一:异或运算,详见《剑指offer》P274

代码:

# -*- coding:utf-8 -*-
class Solution:
# 返回[a,b] 其中ab是出现一次的两个数字
def FindNumsAppearOnce(self, array):
# write code here
if len(array)<2:
return
resultEOR=0
for i in array:
resultEOR =resultEOR^ i index=self.FindFirstBit(resultEOR) res1,res2=0,0
for j in array:
if self.IsBit(j,index):
res1^=j
else:
res2^=j
return [res1, res2] def FindFirstBit(self,num):
'''
用于在整数num的二进制表示中找到最右边是1的位
'''
indexBit=0
while(num&1==0 and indexBit<32):
num=num>>1
indexBit+=1
return indexBit def IsBit(self,num,indexBit):
'''
用于判断在num的二进制表示中从右边起的indexBit位是否为1
'''
num = num >> indexBit
return (num&1)

方法二:利用python自带的counter库

# -*- coding:utf-8 -*-
class Solution:
# 返回[a,b] 其中ab是出现一次的两个数字
def FindNumsAppearOnce(self, array):
# write code here
from collections import Counter res=Counter(array).most_common()[-2:]
return list(map(lambda x:x[0],res))

最新文章

  1. ASP.NET Core应用针对静态文件请求的处理[5]: DefaultFilesMiddleware中间件如何显示默认页面
  2. Ionic2系列——在Ionic2中使用ECharts
  3. checkbox做全选按钮
  4. angurlarjs学习笔记
  5. Java正则抓取email
  6. Android刷机教程
  7. linux的sysctl基本配置
  8. CentOS6.x安装配置nginx
  9. 基于Open vSwitch搭建虚拟路由器
  10. ACM题目————数素数
  11. C# 之 HttpWebRequest类
  12. rfid 门卡系统和人体红外感应开发
  13. myEclipse中的web项目直接引入到eclipse中运行
  14. 前端跨域之html5 XMLHttpRequest Level2
  15. Linq 标准查询操作符三
  16. c# 大数据量比较时-方案
  17. 将当天时间转换为unix时间戳
  18. 201521123049 《JAVA程序设计》 第3周学习总结
  19. unity3d-游戏实战突出重围,整合游戏
  20. 对gulp的理解和使用(一)

热门文章

  1. Codeforces Round #277 (Div. 2)---A. Calculating Function (规律)
  2. gdb 详解
  3. iOSXib布局后代码修改约束的值
  4. mysql日期函数 和sql语句扩展information_schema show processlist;
  5. All in All - poj 1936 (子串)
  6. python笔记1,语法,函数,类和实例,异常
  7. 第一百七十二节,jQuery,动画效果
  8. vim-addon-manager【转】
  9. ios -为什么用WKWebView加载相同的html文本,有时展示的内容却不一样。
  10. 10道mysql查询语句面试题