博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
260. Single Number III
阅读量:5900 次
发布时间:2019-06-19

本文共 811 字,大约阅读时间需要 2 分钟。

一、题目

  1、审题

  

  2、分析

    在线性时间复杂度、常量空间开销的情况下统计出一个整形数组中只出现一次的两个数(其他的数都是出现2次)。

 

二、解答

  1、思路

    ①、对数组所有元素进行异或(^) 操作,得到只出现 1 次的这两个数的异或结果 diff。

    ②、diff &= -diff ,得到只出现一次的两个数的二进制形式的第一个不同的位置 a。

    ③、初始化结果数组{0, 0},遍历数组中的元素,若 a = 1,则与结果数组中第一个元素进行异或;若 a = 0 ,则与第二个元素进行异或。

    ④、返回结果数组。

public int[] singleNumber(int[] nums) {        // Pass 1 :         // Get the XOR of the two numbers we need to find        int diff = 0;        for(int num: nums)            diff ^= num;        // Get its last set bit        diff &= -diff;                // Pass 2 :        int[] rets = {0, 0};        for(int num: nums) {            if((num & diff) == 0)                rets[0] ^= num;            else                 rets[1] ^= num;        }                return rets;    }

 

转载于:https://www.cnblogs.com/skillking/p/9989342.html

你可能感兴趣的文章
Forrester:2011年Q2数据库审计与实时保护市场分析报告
查看>>
美国国防部的LPS便携安全系统
查看>>
工作与生活平衡 -- 别跟自己较劲
查看>>
如何做好基层技术管理工作?
查看>>
大数据和云计算的鞍马情-【软件和信息服务】2014.08
查看>>
苏州FreeNAS+ESXi5数据恢复案例
查看>>
rsync重要功能特性02
查看>>
WCF宿主与服务托管
查看>>
案例导学《系统集成项目管理工程师考试考点分析与真题详解》
查看>>
关于SIEM和LM产品形态的小调查
查看>>
【思想篇】要感谢那些曾经慢待你的人
查看>>
学习沟通技巧--- SOFTEN法则与SOLER法则
查看>>
Windows Server 2008 将计算机加入到指定组织单元
查看>>
Ubuntu系统(六)-安装SSH服务端和客户端及Telnet
查看>>
MongoDB经典面试题集锦
查看>>
四、System Center Virtual Machine Manager 2012 添加Citrix Xenserver 6.0主机
查看>>
Google Glass是工具不是玩具
查看>>
Asp.Net MVC4入门指南(10):第三方控件Studio for ASP.NET Wijmo MVC4 工具应用
查看>>
SharePoint 2010整合Silverlight 4应用 - 任务管理
查看>>
javascript 字符串操作 自定义函数
查看>>