LeetCode实战:只出现一次的数字
背景
- 为什么你要加入一个技术团队?
- 如何加入 LSGO 软件技术团队?
- 我是如何组织“算法刻意练习活动”的?
- 为什么要求团队的学生们写技术Blog
题目英文
Given a non-empty array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
Example 1:
Input: [2,2,1]
Output: 1
Example 2:
Input: [4,1,2,1,2]
Output: 4
题目中文
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 1:
输入: [2,2,1]
输出: 1
示例 2:
输入: [4,1,2,1,2]
输出: 4
算法实现
方式一:利用“哈希”的方法。
public class Solution
{public int SingleNumber(int[] nums){HashSet<int> h = new HashSet<int>();for (int i = 0; i < nums.Length; i++){if (h.Contains(nums[i])){h.Remove(nums[i]);}else{h.Add(nums[i]);}}return h.ElementAt(0);}
}
方式二:利用位运算的方法。
A: 0 0 0 0 1 1 0 0
B: 0 0 0 0 0 1 1 1A^B: 0 0 0 0 1 0 1 1
B^A: 0 0 0 0 1 0 1 1A^A: 0 0 0 0 0 0 0 0
A^0: 0 0 0 0 1 1 0 0A^B^A: = A^A^B = B = 0 0 0 0 0 1 1 1
"异或"操作满足交换律和结合律。
public class Solution
{public int SingleNumber(int[] nums){int result = 0;for (int i = 0; i < nums.Length; i++){result ^= nums[i];}return result;}
}
实验结果
方式一:利用“哈希”的方法。
- 状态:通过
- 16 / 16 个通过测试用例
- 执行用时: 136 ms, 在所有 C# 提交中击败了 98.86% 的用户
- 内存消耗: 26.4 MB, 在所有 C# 提交中击败了 5.34% 的用户
方式二:利用位运算的方法。
- 状态:通过
- 16 / 16 个通过测试用例
- 执行用时: 144 ms, 在所有 C# 提交中击败了 91.76% 的用户
- 内存消耗: 25.4 MB, 在所有 C# 提交中击败了 11.39% 的用户
相关图文
1. “数组”类算法
- LeetCode实战:三数之和
- LeetCode实战:最接近的三数之和
- LeetCode实战:求众数
- LeetCode实战:缺失的第一个正数
- LeetCode实战:快乐数
- LeetCode实战:寻找两个有序数组的中位数
- LeetCode实战:盛最多水的容器
- LeetCode实战:删除排序数组中的重复项
- LeetCode实战:搜索旋转排序数组
- LeetCode实战:螺旋矩阵
- LeetCode实战:螺旋矩阵 II
2. “链表”类算法
- LeetCode实战:两数相加
- LeetCode实战:删除链表的倒数第N个节点
- LeetCode实战:合并两个有序链表
- LeetCode实战:合并K个排序链表
- LeetCode实战:两两交换链表中的节点
- LeetCode实战:旋转链表
- LeetCode实战:环形链表
3. “栈”类算法
- LeetCode实战:有效的括号
- LeetCode实战:最长有效括号
- LeetCode实战:逆波兰表达式求值
4. “队列”类算法
- LeetCode实战:设计循环双端队列
- LeetCode实战:滑动窗口最大值
- LeetCode实战:整数反转
- LeetCode实战:字符串转换整数 (atoi)
5. “递归”类算法
- LeetCode实战:爬楼梯
6. “字符串”类算法
- LeetCode实战:反转字符串
- LeetCode实战:翻转字符串里的单词
- LeetCode实战:最长公共前缀
- LeetCode实战:字符串相加
- LeetCode实战:字符串相乘
7. “树”类算法
- LeetCode实战:相同的树
- LeetCode实战:对称二叉树
- LeetCode实战:二叉树的最大深度
- LeetCode实战:将有序数组转换为二叉搜索树
8. “哈希”类算法
- LeetCode实战:两数之和
9. “搜索”类算法
- LeetCode实战:搜索二维矩阵
10. “动态规划”类算法
- LeetCode实战:最长回文子串
- LeetCode实战:最大子序和
11. “回溯”类算法
- LeetCode实战:全排列
12. “数值分析”类算法
- LeetCode实战:回文数
- LeetCode实战:x 的平方根
相关文章:

610D - Vika and Segments(线段树+扫描线+离散化)
扫描线:http://www.cnblogs.com/scau20110726/archive/2013/04/12/3016765.html 看图,图中的数字是横坐标离散后对应的下标,计算时左端点不变,右端点加1,所以总的更新的区间是l到r-1。 也可以理解为1代表的是ÿ…

UI设计比较流行的插画类型和运用
在当代平面设计中,插画是颇为经常使用的展现性元素,是视觉转达的紧张对象。插画在设计作品中,每每用来指导、开导和出现消息,更有针对性地、视觉化地同用户举行交换。真正高效的插画必然是有针对性的,易于辨认的&#…

poj 2362 Square
#include <iostream> //参照poj 1011 sticks#include <algorithm>using namespace std;int sticks[20],visited[20];int flag,total;int t,seg;int cmp(const void* a,const void* b){return (*(const int*)b)-(*(const int *)a);}void solve(int k,int…

Java BIO、NIO、AIO
同步与异步 同步与异步的概念, 关注的是 消息通信机制 同步是指发出一个请求, 在没有得到结果之前该请求就不返回结果, 请求返回时, 也就得到结果了.比如洗衣服, 把衣服放在洗衣机里, 没有洗好之前我们一直看着, 直到洗好了才拿出来晾晒. 异步是指发出一个请求后, 立刻得到了回…

LeetCode实战:数组中的第K个最大元素
背景 为什么你要加入一个技术团队?如何加入 LSGO 软件技术团队?我是如何组织“算法刻意练习活动”的?为什么要求团队的学生们写技术Blog 题目英文 Find the kth largest element in an unsorted array. Note that it is the kth largest el…

热修复测试过程注意事项
软件测试行是近几年比较火热的技术岗位,想要学习软件测试的同学有很多,今天小编给你分析一下关于热修复测试过程注意事项的相关内容,如果你在一次测试中脱颖而出那将来的你一定很精彩! 基于tinker实际测试过程中遇到的问题,小编简…

LeetCode实战:存在重复元素
背景 为什么你要加入一个技术团队?如何加入 LSGO 软件技术团队?我是如何组织“算法刻意练习活动”的?为什么要求团队的学生们写技术Blog 题目英文 Given an array of integers, find if the array contains any duplicates. Your function…

oracle exec 和 call 区别
转自:http://helloaq.iteye.com/blog/221614 exec 和 call 执行一个procedure时, exec是sqlplus的命令,只能在sqlplus中使用。 call是sql命令,任何工具都可以使用转载于:https://www.cnblogs.com/zerocc/archive/2011/07/27/21189…

html简单响应式滚动条置顶
简单响应式滚动条置顶 一般的,让页面出现滚动条的常见方法有: overflow:auto||overflow:scroll 或者overflow-x水平滚动条和overflow-y垂直滚动条那么现在要实现这样的一个效果: 直接在body中给一个header,后面一个Group盒子&…

UI设计培训之:5个小技巧快速学会PS抠图
一听到PS抠图,我们大家心里是不是产生了退却心理,害怕它过于复杂的操作。 那么现在有一种简单方法教给大家,如何在10分钟内快速学会ps抠图。 而你所需要准备的就是给自己10分钟的尝试时间。 你没有尝试过某件事情,就不要轻易说它难…

AIX VNC setup
1. 下载VNC for AIX虽然标明是for AIX51的,但AIX53和AIX61仍可用。 2. 安装RPM: rpm -Uhv vnc-3.3.3r2-3.aix5.1.ppc.rpm 3.编辑配置文件: # which vncserver/usr/bin/X11/vncserver #chmod 777 /usr/binX11/vncserver vi /usr/bin/X11/vncserver 更改前…

历史 history
题目描述 历史学家小A正在研究一个奇怪的王国的历史。当前阶段的任务是研究该国的交通。 根据这个奇怪的王国的史书记载,史书开始记载前这个王国有 n 个城市(城市从 0 开 始标号) ,但所有城市之间都没有道路相连。 …

LeetCode实战:Nim 游戏
背景 为什么你要加入一个技术团队?如何加入 LSGO 软件技术团队?我是如何组织“算法刻意练习活动”的?为什么要求团队的学生们写技术Blog 题目英文 You are playing the following Nim Game with your friend: There is a heap of stones on…

python值得报班学习吗
python值得报班学习吗?最近有很多想要学习Python的同学都会问到这个问题,Python在近几年的发展前景是非常不错的,想要学会Python编程语言,建议还是报班学习,来看看下面的详细介绍吧。 python值得报班学习吗?首先Python值不…

LeetCode实战:2的幂
背景 为什么你要加入一个技术团队?如何加入 LSGO 软件技术团队?我是如何组织“算法刻意练习活动”的?为什么要求团队的学生们写技术Blog 题目英文 Given an integer, write a function to determine if it is a power of two. Example 1: …

P1214 等差数列
https://www.luogu.org/problem/show?pid1214#sub 暴力枚举题,加上一些剪枝。 (原谅我卑劣地提交了两个答案特判) #include<iostream> #include<cstdio> #include<cstring> #include<vector> #include<algorit…

cocos2d 0.99.5版本屏幕默认是横屏,怎么修改为竖屏呢?
在RootViewController.m文件里面,修改如下代码#elif GAME_AUTOROTATION kGameAutorotationUIViewController // // EAGLView will be rotated by the UIViewController // // Sample: Autorotate only in landscpe mode // // return YES for th…

学习java三个技巧要知道!
java一直是IT行业发展前景非常不错的一门编程语言,学起来是相对有点困难的,尤其是零基础学员,要想学好java技术,一定要知道这三个技巧,来看看下面的详细介绍就知道了。 学习java三个技巧要知道! 1. 树立学习的信心 很多…

LeetCode实战:格雷编码
背景 为什么你要加入一个技术团队?如何加入 LSGO 软件技术团队?我是如何组织“算法刻意练习活动”的?为什么要求团队的学生们写技术Blog 题目英文 The gray code is a binary numeral system where two successive values differ in only o…

Programmer of Practice Manual
这是我以前再读研究生的时候写的东东,希望搞计算机的同学,教计算机本科生学习技术的文章(非算法类)粘在这里纪念一下。 大一寒假 结构化编程基础: 图书:《How to C》 实践过程:完成课后的习题&a…

改善C#程序的建议3:在C#中选择正确的集合进行编码
原文:改善C#程序的建议3:在C#中选择正确的集合进行编码要选择正确的集合,我们首先要了解一些数据结构的知识。所谓数据结构,就是相互之间存在一种或多种特定关系的数据元素的集合。结合下图,我们看一下对集合的分类。 集合分类 …

Python工程师求职必知的经典面试题
最近几年,学习Python语言的同学越来越多,学成之后大家对于后期的面试都遇到了很多难题,小编这次为大家整理了一份关于Python工程师求职必知的经典面试题!希望能够帮助到正在找Python工作的同学们。 Python工程师求职必知的经典面试题…

LeetCode实战:二叉树中的最大路径和
背景 为什么你要加入一个技术团队?如何加入 LSGO 软件技术团队?我是如何组织“算法刻意练习活动”的?为什么要求团队的学生们写技术Blog 题目英文 Given a non-empty binary tree, find the maximum path sum. For this problem, a path i…

为Visual Studio添加配色方案
看到网上有一些教程,他们的代码截图,不是VS默认的白底黑字,觉得挺好看,就也把自己的VS鼓捣了一把: 使用的是现成的配色方案,试了好几种,就觉得这个看着舒服son-of-obsidian.vssettings 你可以去…

黑色星期五阿里云向海淘输出双11技术
本文讲的是"黑色星期五"阿里云向海淘输出双11技术【IT168资讯】11月27日零点,“黑色星期五”正式到来,虽然远在中国的消费者无法参与海外的实体抢购,但电商平台却给了他们从地球另一端参与“大抢购”的机会。随着近年海淘市场的不断…

专业的java培训机构是否靠谱,对比一下就知道了!
java在IT行业的火热是有目共睹的,所以市面上有很多机构都抓住了这点,开设了java培训课程,想要找到一个适合自己的java培训机构,多进行对比就知道了! 专业的java培训机构是否靠谱,对比一下就知道了!专业的Java培训机构靠…

LeetCode实战:环形链表 II
背景 为什么你要加入一个技术团队?如何加入 LSGO 软件技术团队?我是如何组织“算法刻意练习活动”的?为什么要求团队的学生们写技术Blog 题目英文 Given a linked list, return the node where the cycle begins. If there is no cycle, re…

.NET中使用OracleHelper
以前一直使用MSSQL,数据库操作类也是自己写的.现在项目使用Oracle,数据库操作类用的是MICROSOFT的DAAB中的OracleHelper.实际使用过程中,发现坛内少有此方面使用经验的贴子,故在这里把我使用中的一点经验用几个例子说明一下,希望起到抛砖引玉的作用. 查询数据方面: 1.简单的SQL…

新勒索软件DynA-Crypt不仅要加密你的文件,而且窃取并删除它们
本文讲的是新勒索软件DynA-Crypt不仅要加密你的文件,而且窃取并删除它们,一个名为DynA-Crypt的新勒索软件被GData公司的恶意软件分析师Karsten Hahn发现,DynA-Crypt不仅能加密你的数据,而且试图从受害者的计算机窃取大量信息。虽然…

【Postman】6 Postman 发送post请求-Json格式
一、post请求说明 使用postman发送一个post请求,在上文中测试流程中提到的4个要素:URL、请求方式、请求头部信息及body数据。 body中设置的请求参数,常见的有如下三种: 1、x-www-from-urlencoded格式 2、form data格式 3、Json格式…