博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 136. 只出现一次的数字 (C#实现)——异或运算
阅读量:4911 次
发布时间:2019-06-11

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

问题:

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4

GitHub实现:

思路:异或运算

  1. 交换律:a ^ b ^ c <=> a ^ c ^ b

  2. 任何数于0异或为任何数 0 ^ n => n

  3. 相同的数异或为0: n ^ n => 0

  var a = [2,3,2,4,4]

  2 ^ 3 ^ 2 ^ 4 ^ 4等价于 2 ^ 2 ^ 4 ^ 4 ^ 3 => 0 ^ 0 ^3 => 3

public int SingleNumber(int[] nums)        {            var result = 0;            if (nums.Any())            {                for (int i = 0; i < nums.Length; i++)                {                    result ^= nums[i];                }            }            return result;        }

 

转载于:https://www.cnblogs.com/zxxxx/p/10553550.html

你可能感兴趣的文章
需求流分析2.0
查看>>
random随机数
查看>>
凸包模板——Graham扫描法
查看>>
api无限拓展的想像世界
查看>>
hdu 2215 Maple trees
查看>>
【手记】WebBrowser响应页面中的blank开新窗口及window.close关闭本窗体
查看>>
一套Tomcat处理多个域名请求 - Virtual Host
查看>>
[ubuntu] 外挂硬盘
查看>>
CommonJS是如何提高javascript的生产力的
查看>>
在 Windows 上安装 Hadoop 教程(转)
查看>>
PHP数组函数(4)
查看>>
js获取一个对象的所以属性和值
查看>>
XML解析之SAX详解
查看>>
leetcode 338. Counting Bits
查看>>
NUMBER类型细讲
查看>>
koa2-3
查看>>
MySQL慢查询日志总结
查看>>
ipad常见错误
查看>>
时钟效果
查看>>
Linux下安装与配置Nginx
查看>>