136. 只出现一次的数字【简单】

article/2024/4/13 13:39:51

136. 只出现一次的数字【简单】


题目描述:

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

你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。

示例 1:

输入:nums = [2,2,1]
输出:1

示例 2:

输入:nums = [4,1,2,1,2]
输出:4

示例 3:

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

提示

  • 1 <= nums.length <= 3 * 10^4
  • -3 * 10^4 <= nums[i] <= 3 * 10^4
  • 除了某个元素只出现一次以外,其余每个元素均出现两次。

JAVA代码:

(一)异或方法

异或方法:
(1)a⊕a=0
(2)a⊕0=a
(3)满足交换律和结合律a⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=b)

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

在这里插入图片描述

(二)其他空间复杂度较高的方法

使用Map方法或Set方法,辅助求解

1、Map方法
class Solution {public int singleNumber(int[] nums) {Map<Integer,Integer> map = new HashMap<Integer,Integer>();for(int i = 0;i<nums.length;i++){if(map.containsKey(nums[i])){//map.put(nums[i],1);也可以实现值的替换map.replace(nums[i],2);}else{map.put(nums[i],1);}}//因为没法根据值来找键for(Map.Entry<Integer,Integer> entry:map.entrySet()){if(entry.getValue()==1){return entry.getKey();}}return -1;}
}
2、Set方法
class Solution {public int singleNumber(int[] nums) {Set<Integer> set = new HashSet<Integer>();for(int i = 0;i<nums.length;i++){//因为set是不允许重复if(!set.add(nums[i])){set.remove(nums[i]);}else{set.add(nums[i]);}}Iterator<Integer> it = set.iterator();return it.next();}
}

http://www.ngui.cc/article/show-1927773.html

相关文章

【ScienceAI Weekly】闷声发大财!英伟达医疗业务创收 10 亿美元;马斯克:首位人类脑芯片受试者或已康复

AI for Science 的新成果、新动态、新视角 —— 英伟达的医疗保健业务在 2024 财年创造了 10 亿美元以上的收入 Bioptimus 获得 3500 万美元的种子轮融资 Neuralink 首位人类受试者或已康复 WIVI Vision 获 400 万欧元融资 伊犁川宁生物技术股份有限公司与上海金珵科技有限…

小程序 API 能力汇总——TYML IntersectionObserver API

ty.createIntersectionObserver 创建并返回一个 IntersectionObserver 对象实例。在自定义组件或包含自定义组件的页面中&#xff0c;应使用 this.createIntersectionObserver([options]) 来代替。 使用方式 ty.createIntersectionObserver(instance, [options]); this.cre…

ImportError: cannot import name ‘_update_worker_pids’ from ‘torch._C’

问题描述&#xff1a; 在复现超分辨率算法RNAN&#xff08;EDSR、RCAN同样的环境&#xff09;的时候报错&#xff0c;torch要求是0.4.0版本的。 解决方案&#xff1a; 解决方法1&#xff08;已安装anaconda&#xff09; 1. 打开命令行&#xff08;这个自行查找&#xff09; …

我国聚酯切片制备工艺已经成熟 市场规模逐渐扩大

我国聚酯切片制备工艺已经成熟 市场规模逐渐扩大 聚酯切片化学名称为聚对苯二甲酸乙二醇酯&#xff08;PET&#xff09;&#xff0c;指经过聚合工艺得到的聚酯原料&#xff0c;再通过加工制作成4*5*2毫米左右的片状颗粒。聚酯切片在常温常压下多表现为一种无色透明颗粒&#xf…

AliasRegistry学习

简介 在Spring框架中&#xff0c;AliasRegistry是一个接口&#xff0c;它定义了注册和管理bean别名的方法。别名允许你在Spring容器中为bean定义多个名称&#xff0c;这样你就可以使用这些别名来引用bean。 AliasRegistry接口的主要方法包括&#xff1a; alias(String name,…

现货黄金价格今日行情怎样把握?

由于受到各种经济和政治因素的影响&#xff0c;国际市场上的黄金价格&#xff0c;每天的行情走势都在不断地波动&#xff0c;有时候行情上涨&#xff0c;有时候行情下跌&#xff0c;如果投资者不懂得灵活地应对&#xff0c;在哪一种行情中都有可能亏损&#xff0c;但如果投资者…

突破MPLS,企业更青睐SD-WAN方案

在网络架构领域&#xff0c; SD-WAN方案正逐渐成为企业的首选&#xff0c;逐步取代了传统的MPLS&#xff08;多协议标签交换&#xff09;网络。本文将探讨SD-WAN为何能够突破MPLS&#xff0c;成为企业更受喜爱的网络方案。 1、成本效益&#xff1a; MPLS网络的建设和维护成本较…

前端monorepo大仓共享复杂业务组件最佳实践

一、背景 在 Monorepo 大仓模式中&#xff0c;我们把组件放在共享目录下&#xff0c;就能通过源码引入的方式实现组件共享。越来越多的应用愿意走进大仓&#xff0c;正是为了享受这种组件复用模式带来的开发便利。这种方式可以满足大部分代码复用的诉求&#xff0c;但对于复杂…

外地人能申请天津公租房吗?2024天津积分落户租房积分怎么加?

相关推荐&#xff1a;在天津工作的外地人可以申请天津公共租赁住房吗&#xff1f; 外地人可以申请天津公共租赁住房吗&#xff1f; 2024年定居天津租房如何加分&#xff1f; 根据《天津居住证积分指标及积分表》的规定&#xff0c;在天津租房也可以参加积分结算&#xff0c;每…

程序员金三银四面试全攻略-理论篇

程序员金三银四面试攻略 一、面试技巧分享 自我介绍&#xff1a;在面试开始时&#xff0c;简洁明了地介绍自己的教育背景、工作经验和技能特长。突出自己的优势&#xff0c;与岗位需求紧密结合。非技术性问题&#xff1a;对于面试中的非技术性问题&#xff0c;如职业规划、团…