当前位置: 首页 > 编程日记 > 正文

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(线段树+扫描线+离散化)

扫描线&#xff1a;http://www.cnblogs.com/scau20110726/archive/2013/04/12/3016765.html 看图&#xff0c;图中的数字是横坐标离散后对应的下标&#xff0c;计算时左端点不变&#xff0c;右端点加1&#xff0c;所以总的更新的区间是l到r-1。 也可以理解为1代表的是&#xff…

UI设计比较流行的插画类型和运用

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

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个最大元素

背景 为什么你要加入一个技术团队&#xff1f;如何加入 LSGO 软件技术团队&#xff1f;我是如何组织“算法刻意练习活动”的&#xff1f;为什么要求团队的学生们写技术Blog 题目英文 Find the kth largest element in an unsorted array. Note that it is the kth largest el…

热修复测试过程注意事项

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

LeetCode实战:存在重复元素

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

oracle exec 和 call 区别

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

html简单响应式滚动条置顶

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

UI设计培训之:5个小技巧快速学会PS抠图

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

AIX VNC setup

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

历史 history

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

LeetCode实战:Nim 游戏

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

python值得报班学习吗

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

LeetCode实战:2的幂

背景 为什么你要加入一个技术团队&#xff1f;如何加入 LSGO 软件技术团队&#xff1f;我是如何组织“算法刻意练习活动”的&#xff1f;为什么要求团队的学生们写技术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 暴力枚举题&#xff0c;加上一些剪枝。 &#xff08;原谅我卑劣地提交了两个答案特判&#xff09; #include<iostream> #include<cstdio> #include<cstring> #include<vector> #include<algorit…

cocos2d 0.99.5版本屏幕默认是横屏,怎么修改为竖屏呢?

在RootViewController.m文件里面&#xff0c;修改如下代码#elif GAME_AUTOROTATION kGameAutorotationUIViewController // // EAGLView will be rotated by the UIViewController // // Sample: Autorotate only in landscpe mode // // return YES for th…

学习java三个技巧要知道!

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

LeetCode实战:格雷编码

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

Programmer of Practice Manual

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

改善C#程序的建议3:在C#中选择正确的集合进行编码

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

Python工程师求职必知的经典面试题

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

LeetCode实战:二叉树中的最大路径和

背景 为什么你要加入一个技术团队&#xff1f;如何加入 LSGO 软件技术团队&#xff1f;我是如何组织“算法刻意练习活动”的&#xff1f;为什么要求团队的学生们写技术Blog 题目英文 Given a non-empty binary tree, find the maximum path sum. For this problem, a path i…

为Visual Studio添加配色方案

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

黑色星期五阿里云向海淘输出双11技术

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

专业的java培训机构是否靠谱,对比一下就知道了!

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

LeetCode实战:环形链表 II

背景 为什么你要加入一个技术团队&#xff1f;如何加入 LSGO 软件技术团队&#xff1f;我是如何组织“算法刻意练习活动”的&#xff1f;为什么要求团队的学生们写技术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不仅要加密你的文件&#xff0c;而且窃取并删除它们&#xff0c;一个名为DynA-Crypt的新勒索软件被GData公司的恶意软件分析师Karsten Hahn发现&#xff0c;DynA-Crypt不仅能加密你的数据&#xff0c;而且试图从受害者的计算机窃取大量信息。虽然…

【Postman】6 Postman 发送post请求-Json格式

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