【LeetCode每日一题】——136.只出现一次的数字

news2024/9/19 10:47:40

文章目录

  • 一【题目类别】
  • 二【题目难度】
  • 三【题目编号】
  • 四【题目描述】
  • 五【题目示例】
  • 六【解题思路】
  • 七【题目提示】
  • 八【时间频度】
  • 九【代码实现】
  • 十【提交结果】

一【题目类别】

  • 数组

二【题目难度】

  • 简单

三【题目编号】

  • 136.只出现一次的数字

四【题目描述】

  • 给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
  • 你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。

五【题目示例】

  • 示例 1 :

    • 输入:nums = [2,2,1]
    • 输出:1
  • 示例 2 :

    • 输入:nums = [4,1,2,1,2]
    • 输出:4
  • 示例 3 :

    • 输入:nums = [1]
    • 输出:1

六【解题思路】

  • 这道题如果用哈希表做就很简单了,但是不符合题目要求的时间和空间复杂度
  • 通过这个题可以学习到一个新的知识点:位运算。学过计算机组成原理应该都明白,首先有些性质我们要明白:
    • a ⊕ 0 = a a \oplus0 = a a0=a:任何数和0做异或运算,结果仍然是原来的数
    • a ⊕ a = 0 a \oplus a = 0 aa=0:任何数和其自身做异或运算,结果是0
    • a ⊕ b ⊕ a = b ⊕ a ⊕ a = b ⊕ ( a ⊕ a ) = b ⊕ 0 = b a \oplus b \oplus a=b\oplus a\oplus a=b\oplus (a\oplus a)=b\oplus 0 = b aba=baa=b(aa)=b0=b:异或运算满足交换律和结合律
  • 通过以上性质就可以在题目要求的时空复杂度下完成此算法
  • 首先定义数字0(res)
  • 然后用0去异或数组的每一个值(从头到尾)
  • 所有重复的数字都被过滤掉了
  • 遍历完后只剩下出现一次的元素
  • 最后返回结果即可

七【题目提示】

  • 1 < = n u m s . l e n g t h < = 3 ∗ 1 0 4 1 <= nums.length <= 3 * 10^4 1<=nums.length<=3104
  • − 3 ∗ 1 0 4 < = n u m s [ i ] < = 3 ∗ 1 0 4 -3 * 10^4 <= nums[i] <= 3 * 10^4 3104<=nums[i]<=3104
  • 除 了 某 个 元 素 只 出 现 一 次 以 外 , 其 余 每 个 元 素 均 出 现 两 次 。 除了某个元素只出现一次以外,其余每个元素均出现两次。

八【时间频度】

  • 时间复杂度: O ( n ) O(n) O(n),其中 n n n为数组长度
  • 空间复杂度: O ( 1 ) O(1) O(1)

九【代码实现】

  1. Java语言版
package Array;

/**
 * @Author: IronmanJay
 * @Description: 136.只出现一次的数字
 * @CreateTime: 2022-11-21  09:19
 */
public class p136_SingleNumber {

    public static void main(String[] args) {
        int[] nums = {2, 2, 1};
        int res = singleNumber(nums);
        System.out.println("res = " + res);
    }

    public static int singleNumber(int[] nums) {
        int res = 0;
        for (int i = 0; i < nums.length; i++) {
            res ^= nums[i];
        }
        return res;
    }

}
  1. C语言版
#include<stdio.h>

int singleNumber(int* nums, int numsSize)
{
	int res = 0;
	for (int i = 0; i < numsSize; i++)
	{
		res ^= nums[i];
	}
	return res;
}

/*主函数省略*/

十【提交结果】

  1. Java语言版
    在这里插入图片描述

  2. C语言版
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/22317.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]SSM计算机毕业设计风景区管理系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

再学DataX

一、DataX简介 DataX官网文档&#xff1a;https://github.com/alibaba/DataX/blob/master/introduction.md DataX 是一个异构数据源离线同步工具&#xff0c;致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同…

MyBatis基于XML的使用——动态sql

1、动态sql 动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它 类似的框架&#xff0c;你应该能理解根据不同条件拼接 SQL 语句有多痛苦&#xff0c;例如拼接时要确保不能忘记添加必要的空格&#xff0c;还要注意去掉列表最后一个列名的逗号。 利用动态 SQL&#…

14服务-ClearDiagnosticlnformation

诊断协议那些事儿 诊断协议那些事儿专栏系列文章&#xff0c;本文介绍存储数据传输服务下的14服务ClearDiagnosticlnformation&#xff0c;客户端使用ClearDiagnosticlnformation服务清除一个或多个服务器存储器中的诊断信息。 关联文章&#xff1a;$19服务:DTCStatusMask和s…

CockroachDB-读和写

本文知识点来源于官网地址https://www.cockroachlabs.com/docs/stable/architecture/reads-and-writes-overview.html 查询执行 当CRDB执行查询时&#xff0c;集群将请求路由到包含相关数据的范围的Leaseholder。如果查询涉及多个范围&#xff0c;则请求将发送给多个Leasehol…

求实数的整数次幂(循环版)(高效)(位运算解题)

求实数的整数次幂(循环版)(高效) (10 分) 原理图&#xff1a; 请编写函数&#xff0c;用循环语句以最快的方法求任意实数的任意整数次幂。 函数原型 double Power(double x, int n); 说明&#xff1a;参数 x 为底数&#xff0c;n 为指数。若参数正确&#xff0c;则函数值为…

智能驾驶开启产业新赛道:资本扎堆布局车规级高精定位

2022年被称为高阶智能驾驶元年的背后&#xff0c;新的产业链正在悄然发展。 车规级高精定位便是其中之一。2022年10月&#xff0c;主业聚焦于动力总成测试的上海华依科技集团股份有限公司&#xff08;以下简称“华依科技”&#xff0c;688071.SH&#xff09;&#xff0c;发布公…

漫画风格迁移神器 AnimeGANv2:快速生成你的漫画形象

生成你的漫画形象&#xff01; 漫画风格迁移神器 AnimeGANv2 文章目录生成你的漫画形象&#xff01; 漫画风格迁移神器 AnimeGANv2快速在线生成你的漫画形象AnimeGAN 简要介绍与其他动漫风格迁移模型的效果对比AnimeGANv2 的优点AnimeGANv2 风格多样化AnimeGANv2 网络结构快速生…

基于stm32单片机的水位检测自动抽水系统

资料编号&#xff1a;106 下面是相关功能视频演示&#xff1a; 106-基于stm32单片机的水位检测自动抽水系统Proteus仿真&#xff08;源码仿真全套资料&#xff09;功能介绍&#xff1a; 使用滑动变阻器模拟水位监测器&#xff0c;通过改变电压值表示水位的变化。stm32通过ADC…

【前端】从 0 到 1 实现一个网站框架(一、注册 [1] )

Hi~你好呀&#xff0c;等你很久啦~ 我是 LStar&#xff0c;一枚来自北京的初二女生&#xff0c;2020 年年初加入 CSDN。 话不多说&#xff0c;直入主题~&#xff08;我现在看两年多前我 11 岁那会发的文章&#xff0c;越看越想笑。为了不让四年后 18 岁的我看着这篇文章露出 …

超详细的mysql多表操作教程

目录 外键约束 概念 特点 操作 多表联合查询 概念 操作 多表操作总结 外键约束 概念 特点 定义一个外键时&#xff0c;需要遵守下列规则&#xff1a; 主表必须已经存在于数据库中&#xff0c;或者是当前正在创建的表。 必须为主表定义主键。 主键不能包含空值&#xf…

967亿销售额!博世解码智能汽车新蓝图

随着新一轮科技革命和产业变革的深化&#xff0c;在低碳化、电动化和智能化的推动下&#xff0c;处于变革关键时期的新能源汽车产业&#xff0c;正逐步由“政策驱动”转向“市场驱动”&#xff0c;智能化、网联化成为新趋势。 据中国汽车工业协会统计&#xff0c;今年我国新能…

通过 Traefik Hub 暴露家里的网络服务

Traefik Hub 简介 &#x1f4da;️Reference: 你的云原生网络平台 -- 发布和加固你的容器从未如此简单。 Traefik Hub 为您在 Kubernetes 或其他容器平台上运行的服务提供一个网关。 Traefik Hub 定位&#xff1a; 云原生网络平台 它有 2 大核心功能&#xff0c;我这次体验感…

pytorch深度学习实战lesson23

第二十三课 AlexNet AlexNet是在2012年被发表的一个金典之作&#xff0c;并在当年取得了ImageNet最好成绩&#xff0c;也是在那年之后&#xff0c;更多的更深的神经网路被提出&#xff0c;比如优秀的vgg,GoogleLeNet. 其官方提供的数据模型&#xff0c;准确率达到57.1%,top 1-5…

认识计算机中的简单指令集

我们现在有了一个新的寄存器&#xff0c;叫做指令寄存器。它包含一个字节&#xff0c;不同的内容表示控制部分的不同操作模式。也被称为指令代码。指令寄存器是一个字节&#xff0c;因此可能有多达256条不同的指令。所有指令都涉及在总线上移动字节。指令将导致字节进出RAM&…

【JavaEE】PCB和进程调度的基本过程

文章目录什么是进程PCB的组成PID内存指针文件描述符表并行和并发进程调度相关属性进程的状态优先级上下文进程的记账信息什么是进程 进程是正在运行的程序的实例&#xff08;an instance of a computer program that is being executed&#xff09; 进程&#xff08;process&am…

《爱的四十条法则》

《爱的四十条法则》 [土]艾丽芙沙法克 作者用别样的手法间接向我们阐述了爱的四十条法则&#xff0c;每一条都会触及不同阶段的灵魂&#xff0c;我仅将文中感触较深的摘录如下&#xff1a; 1.尽管有人这样说&#xff0c;但是爱绝对不是来的快&#xff0c;去的也快的甜蜜感觉而…

长尾分布系列论文解析(二)Delving into Deep Imbalanced Regression

大纲引言回归问题中的长尾分布LDSFDS实验和结果总结引言 本文是长尾分布系列论文解析的第二篇&#xff0c;前情提要详见长尾分布系列论文解析&#xff08;一&#xff09;Decoupling Representation and Classifier for Long-Tailed Recognition&#xff0c;本篇要介绍的是回归任…

弹性力学之边界条件

作者&#xff1a;张伟伟&#xff0c;来源&#xff1a;力学酒吧 弹性力学基本方程包括平衡方程、几何方程和广义胡克定律&#xff0c;其中平衡方程和几何方程都属于微分方程。我们知道&#xff0c;在求解微分方程时&#xff0c;会出现积分常数&#xff0c;只有确定了积分常数&a…

JS —— js中的节流与防抖

文章目录 前言一、节流 1.什么是节流2.做节流可解决什么问题3.如何做节流二、防抖 1.什么是防抖2.做防抖可解决什么问题3.如何做防抖总结前言 最近有同学问到节流与防抖的相关知识点&#xff0c;于是乎&#xff0c;四处查资料&#xff0c;找一找&#xff0c;看一看&#xff0c…