博客
关于我
leetcode题解136-只出现一次的数字
阅读量:792 次
发布时间:2023-01-31

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

问题描述

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

示例 1:

输入: [2,2,1]

输出: 1

示例 2:

输入: [4,1,2,1,2]

输出: 4

解题思路

本题需要使用到异或运算符,异或运算符是比较两个数的二进制位,相同为0,不同为1,因此异或运算符具有以下性质

1.交换律:a ^ b ^ c <=> a ^ c ^ b
2.任何数于0异或为任何数 0 ^ n => n
3.相同的数异或为0: n ^ n => 0
本题中除了某一个元素以外,其他元素都是成对出现的,由性质1,异或运算符可以交换,因此,相同的元素可以看成是相邻的,由性质3,相同的树异或为0,所以除了单独出现的元素外,其他所有元素的异或结果为0,由性质2,把所有元素互相异或,得到结果即为单独出现的那个元素的值

代码实现

class Solution {       public int singleNumber(int[] nums) {           int result=nums[0];        //将数组中所有元素进行异或,得到的结果即为单独出现的元素值        for(int i=1;i

转载地址:http://nhgyk.baihongyu.com/

你可能感兴趣的文章
leaflet接入土地资源(leaflet篇.55)
查看>>
leaflet接入天地图(经纬度投影256)(leaflet篇.24)
查看>>
leaflet点采集与点编辑(leaflet篇.5)
查看>>
leaflet聚合图(leaflet篇.11)
查看>>
leaflet自定义地图样式地图(插件实现)(leaflet篇.18)
查看>>
leaflet虚线(leaflet篇.60)
查看>>
leaflet蜂巢图(leaflet篇.15)
查看>>
leaflet轨迹线(leaflet篇.58)
查看>>
leaflet面采集与面编辑(leaflet篇.7)
查看>>
leaflet饼状图(leaflet篇.74)
查看>>
LeakCanary使用,案例静态Toast引起的内存泄漏
查看>>
Leapin' Lizards
查看>>
learn c++(vector and array)
查看>>
Learning both Weights and Connections for Efficient Neural Networks
查看>>
Learning English With Our Team
查看>>
Learning jQuery, 4th Edition 勘误表
查看>>
Learning XNA 4.0 第三章(结尾)
查看>>
Leedcode3- Max Points on a Line 共线点个数
查看>>
LeetCode OJ:Merge k Sorted Lists(归并k个链表)
查看>>
leetcode Plus One
查看>>