只出现一次的数字算法(leetcode第136题)

题目描述:

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

算法一:hash表

思路:

用hash表记录数出现的次数,之后遍历一次,查找次数为1的数,输出

易错点:nums[i]可能出现负数,但arr下标不能为负数,故要进行讨论

代码实现:
int singleNumber(int* nums, int numsSize) {int arr[200000]={0};//hash表int i;for(i=0;i<numsSize;i++){if(nums[i]<0) arr[nums[i]+10000]++;//负数下标,让负数向右偏移10000(防止覆盖原正数)else arr[nums[i]]++;}for(i=0;i<numsSize;i++){//分正负讨论if(nums[i]<0){//只出现一次-->跳出循环if(arr[nums[i]+10000]==1) break;}else{if(arr[nums[i]]==1) break;}}return nums[i];
}

算法二:位运算

思路:

0和任何数异或运算得到那个数本身

相同的两个数做异或运算得0

偶次会消掉,只留下奇次

代码实现:
int singleNumber(int* nums, int numsSize) {int ret=0;for(int i=0;i<numsSize;i++) ret^=nums[i];return ret;
}

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

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

相关文章

【Vue】将官方路由管理器 vue-router 库引入 Vue 项目的三种方法

前言 Vue Router 是 Vue.js 的官方路由管理器。它可以帮助我们在 Vue 应用中实现页面之间的跳转和导航&#xff0c;并且提供了一些高级功能&#xff0c;如路由参数、路由嵌套、路由守卫等。 Vue Router 的主要作用是将不同的组件映射到不同的 URL&#xff0c;并根据 URL 的变化…

人、机不同在于变与多

人擅长变&#xff0c;如变模态、变尺度&#xff0c;而机器侧重多&#xff0c;如多模态、多尺度。 人类擅长变化的能力是由于我们的大脑和思维能力的灵活性所决定的。我们可以通过学习和适应&#xff0c;改变我们的态度、行为方式和观点&#xff0c;以适应不同的情境和环境。例如…

图像识别经典轻量级网络模型总结梳理、原理解析与优劣对比分析

在前面的很多博文中&#xff0c;我们不止一次提到过&#xff0c;在实际业务项目开发过程中&#xff0c;我们会经常使用到轻量级的网络模型&#xff0c;本文主要是总结梳理前面经常使用到的一些轻量级的图像识别模型。 【MobileNetv1】 MobileNetv1 是一种轻量级的卷积神经网络&…

python字符串格式化--数字精度控制和快速写法

数字精度控制 我们可以使用m.n来控制数字的宽度和精度&#xff1a; m是宽度&#xff0c;设置必须为数字&#xff0c;且如果设置的数字小于本身&#xff0c;则不生效n控制小数点精度&#xff0c;必须为数字&#xff0c;会进行四舍五入 示例&#xff1a; 5d&#xff1a;是将宽…

PYthon数据分析学前导语

文章目录 1.学习计划1.1 第一阶段&#xff1a;数据分析阶段1.2 第二阶段&#xff1a;可视化阶段1.3 第三阶段&#xff1a;项目实战阶段 2. 相关工具库的安装2.1.Pandas与Numpy的安装2.2 matplotlib, seaborn, Pyecharts的安装 1.学习计划 欢迎开始Python数据分析系列博客的学习…

删除误提交的 git commit

背景描述 某次的意外 commit 中误将密码写到代码中并且 push 到了 remote repo 里面, 本文将围绕这个场景讨论如何弥补. 模拟误提交操作 在 Gitee 创建一个新的 Repo, clone 到本地 git clone https://gitee.com/lpwm/myrepo.git创建两个文件, commit 后 push 到 remote 作…

docker 手工redis7.x cluster

IP端口192.168.0.816379/6380192.168.0.826379/6380192.168.0.1146379/6380 mdkir /data/{6379,6380}cat <<END> /data/6379.conf # 端口号 port 6379# 设置客户端连接后进行任何其他指定前需要使用的密码 #requirepass 123456 ## 当master服务设置了密码保护时(用re…

【教程】Conda更换镜像源安装pytorch

Windows下Conda安装pytorch换源 我们直接从conda官方或pytorch官方安装pytorch时&#xff0c;由于服务器在国外&#xff0c;速度很慢&#xff0c;或者无法下载/中断&#xff0c;这时候换上国内的镜像源会快很多。 这里给出更换阿里源的例子&#xff0c;其他国内源同理。 配置…

个人作品集

个人作品集 封面设计 排版设计 3D建模 Pr剪辑 个人剪辑作品 场景搭建

Azure Machine Learning - 使用 Azure OpenAI 服务生成文本

使用 Azure OpenAI 服务生成文本 关注TechLead&#xff0c;分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验&#xff0c;同济本复旦硕&#xff0c;复旦机器人智能实验室成员&#xff0c;阿里云认证的资深架构师&#xff0c;项目管理专业人士&…

JavaScript 基础

JavaScript 是什么 一门语言一门脚本语言一门运行在浏览器中由浏览器解释执行的语言 JavaScript 语法特性 基于对象和事件驱动的解释型松散型语言 基于对象&#xff1a;我们在js当中要操作的一切的目标&#xff08;字符串、数组、浏览器、div…&#xff09;都是以对象的方式存…

金蝶云星空单据编辑界面,不允许批量填充操作

文章目录 金蝶云星空单据编辑界面&#xff0c;不允许批量填充操作案例演示开发设计测试 金蝶云星空单据编辑界面&#xff0c;不允许批量填充操作 案例演示 售后单&#xff0c;明细信息单据体&#xff0c;物料编码字段禁止批量填充。 开发设计 编写表单插件&#xff0c;在Be…

案例052:用于日语词汇学习的微信小程序

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

iOS不越狱自动挂机

自动挂机在电脑上或者安卓手机上都相对容易&#xff0c;而在不越狱的iOS设备上还是有点难度的。 此方法不是我原创&#xff0c;详情见&#xff1a; 【苹果党福音&#xff0c;ios也能用的挂机脚本】 https://www.bilibili.com/video/BV1sv4y1P7TL/?share_sourcecopy_web&v…

菜鸟学习日记(python)——条件控制

Python 中的条件语句是通过一条或多条语句的执行结果&#xff08;True 或者 False&#xff09;来决定执行的代码块。 它的一般格式为&#xff1a;if...elif...else if condition1: #条件1CodeBlock1 #代码块1 elif condition2:CodeBlock2 else:CodeBlock3 如果con…

win10的激活和使用问题

Win10专业版如何激活 Win10专业版如何激活 - 知乎 使用这方法成功了。 win10连上wifi却不能上网的问题解决方法&#xff1a;https://jingyan.baidu.com/article/c85b7a644c2996003bac958a.html 一&#xff1a;先改ipv4自动手动的&#xff0c;不行 二&#xff1a;把无线网卡…

利大于弊:物联网技术对电子商务渠道的影响

For Better or For Worse: Impacts of IoT Technology in e-Commerce Channel 物联网技术使用传感器和其他联网设备来手机和共享数据&#xff0c;并且被视为一种可以为供应链成员带来巨大的机会的突破性技术。本文的研究背景是&#xff1a;一个提供物联网基础设备的电子商务平…

CentOS最小化安装后怎么转图形界面/可视化桌面?

文章目录 1、命令行和图形界面切换方式一方式二 2、最小化安装转桌面1-设置网络2-测试网络3-更新文件4-安装图形5-查看默认6-设置默认 界面效果参考视频 1、命令行和图形界面切换 如果安装的是最小化&#xff0c;那么init 5 (进入图像化桌面)命令是无效的 方式一 1.如果在命…

初学Python基础后,如何制定学习计划?

如果你是Python小白&#xff0c;学完基础语法是个了不起的成就&#xff0c;但是接下来应该干嘛呢&#xff1f;你应该学习哪些内容&#xff1f;你应该如何规划你的Python学习路线&#xff1f; 其实这些问题的答案都取决于你的个人目标和兴趣。你想要用Python做什么&#xff1f;…

1.vue学习笔记(vue简介+API风格+开发前的准备)

1.介绍 1.一款用于构建用户页面的JavaScript框架 2.基于HTML、CSS、JavaScript 3.官方文档&#xff1a;cn.vuejs.org2.渐进式框架 1.注重灵活性/可被逐步集成 根据需求场景&#xff1a;1.无需构建步骤&#xff0c;渐进式增强静态的HTML2.在任何页面中作为Web Components嵌入&…