力扣刷题第0天:只出现一次的数字

目录

第一部分:题目描述

​第二部分:题目分析

第三部分:解决方法

3.1思路1:    双指针暴力求解

         3.2 思路2:异或运算

第四部分:总结收获


第一部分:题目描述


第二部分:题目分析

     由图片分析可得,该题目对算法时间复杂度有一定的要求时间复杂度为O(N),空间复杂度为O(1),这是关键所在,也就是说只能遍历有限次数组,便可以找到那个单独出现的那个数字。

第三部分:解决方法

3.1思路1:双指针暴力求解

       定义两个整型变量代表指针,利用双层for循环,外层循环i指向每个元素,内层循环j开始从当前元素的下个位置开始遍历整个数组,寻找是否存在与该元素相同的元素。如果发现了一个相同的元素,计数器加1,否则内层循环继续往下遍历,内层循环结束了但是没有发现相同的元素,那么count一直为0,并且i下标对应的元素a[i]就是单独出现的元素,直接返回即可,当内层循环处理一遍之后,继续处理外层循环的下一个元素i+1,直到把每一个元素都查找过。    但是时间复杂度为:O(n^2)不符合要求。


int singleNumber(int* nums, int len) 
{	int i = 0;//1.针对外层循环每个元素,让内层循环依次与之进行对比for (; i < len; i++){int count = 0;//2.内层循环从下一个位置开始,进行比对,同时记录,出现相同的次数for (int j = i+1; j < len; j++){if (nums[i] == nums[j]){count++;	//每出现相同的元素,计数器就会加1}}//3.说明没有找到相同的元素,直接返回下标i对应的元素即可if (count == 0){return nums[i];}	}return -1;  
}

3.2 思路2:异或运算

      异或运算是属于位运算的一种,它是按照位置进行运算的,位与位异或,相同为0,不相同为1,同时,位运算(按位与、按位或、按位异或)是满足交换律和结合律的,因此,位运算它是没有顺序之分的,改变数的运算顺序,并不会改变最后的结果。

        在这道题中,解题的思路在于:两个相同的数异或结果一定是0,0和任何数异或是它本身,因此,我们只需从第一个数字开始依次与该数组剩下的每个数字异或,最后留下来的便是所求的数字了。(双爆胎数字异或结果为0,再与其他数异或,并不会改变这个数,最后只剩下单独出现的那个数字,也就是缺失的数字。)

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

第四部分:总结收获

      在数组的遍历中,可以利用整型变量/下标来代替指针,用于标记元素的位置,这道题引入了双指针思想来通过双层for循环暴力求解问题,这是算法题中一个基本的思想,必须熟练掌握。此外,异或运算具有“消消乐”的特点,需要注意。

        在后续更新中,我会一直写关于OJ题的题解,有兴趣的小伙伴可以关注作者,和作者讨论其他OJ题目,如果觉得内容不错,请给个一键三连吧,蟹蟹你哟!!!制作不易,如有不正之处敬请指出,感谢大家的来访,UU们的观看是我坚持下去的动力, 在时间的催化剂下,让我们彼此都成为更优秀的人吧!!!

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

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

相关文章

lxml 在 Windows 7上安装无法安装怎么办?

lxml 在 Windows 7上安装无法安装怎么办&#xff1f; 要在Windows 7上安装lxml&#xff0c;您可以按照以下步骤进行操作&#xff1a; 安装Python&#xff1a; 如果您的计算机尚未安装Python&#xff0c;请先安装Python。您可以从Python官方网站下载Windows安装程序&#xff0c…

MongoDB聚合运算符:$subtract

MongoDB聚合运算符&#xff1a;$subtract 文章目录 MongoDB聚合运算符&#xff1a;$subtract语法使用举例数值相减日期相减从日期减去毫秒数 $subtract聚合运算符返回两个数值的差值&#xff0c;或者返回两个日期相差的毫秒数&#xff0c;或者日期与一个毫秒数相差的日期。 语法…

知乎广告投放怎么操作?如何开通知乎广告账户?

知乎作为一个汇聚知识精英与行业领袖的问答社区&#xff0c;其独特的平台属性和高质量的用户基础&#xff0c;使之成为品牌广告投放不可忽视的一片蓝海。云衔科技通过专业化的广告开户及代运营服务&#xff0c;助力企业精准触达目标人群&#xff0c;实现品牌传播与商业目标的双…

【源码阅读】Golang中的go-sql-driver库源码探究

文章目录 前言一、go-sql-driver/mysql1、驱动注册&#xff1a;sql.Register2、驱动实现&#xff1a;MysqlDriver3、RegisterDialContext 二、总结 前言 在上篇文章中我们知道&#xff0c;database/sql只是提供了驱动相关的接口&#xff0c;并没有相关的具体实现&#xff0c;具…

2024五一杯数学建模C题思路分享 - 煤矿深部开采冲击地压危险预测

文章目录 1 赛题选题分析 2 解题思路2.1 问题重述2.2 第一问完整思路2.2 二、三问思路更新 3 最新思路更新 1 赛题 C题 煤矿深部开采冲击地压危险预测 煤炭是中国的主要能源和重要的工业原料。然而&#xff0c;随着开采深度的增加&#xff0c;地应力增大&#xff0c;井下煤岩动…

C\#工控行业中的视觉技术栈

在工控行业中&#xff0c;C#作为一种强大的编程语言&#xff0c;其在视觉技术栈中发挥着重要作用。以下是C#在工控行业视觉技术栈中的一些关键应用&#xff1a; 图像采集与处理&#xff1a; C#提供了丰富的图像采集和处理库&#xff0c;如OpenCVSharp、EmguCV等&#xff0c;可…

Git常见指令(初始化仓库,克隆仓库,添加和提交更改,查看状态和历史,分支操作,远程操作,撤销操作,打标签)

目录 1.初始化一个新的仓库2.克隆仓库到本地3.添加和提交更改4.查看状态和历史5.分支操作6.远程操作7.撤销更改8.打标签 1.初始化一个新的仓库 git init这个命令用于在当前目录中初始化一个新的 Git 仓库。执行后&#xff0c;Git 将在当前目录中创建一个新的 .git 子目录&…

Qt 配置 OpenCV

MinGW CMake 下载 OpenCV 源代码 使用 CMake 生成 OpenCV 的 Makefile // 设置源码 Where is the source code: C:\Program Files\OpenCV\source // 生成路径 C:\Program Files\OpenCV\build点击 Configure&#xff0c;设置编译器 Specify the generator for this project:…

键盘更新计划

作为 IT 搬砖人&#xff0c;一直都认为键盘没有什么太大关系。 每次都是公司发什么用什么。 但随着用几年后&#xff0c;发现现在的键盘经常出问题&#xff0c;比如说调节音量的时候通常莫名其妙的卡死&#xff0c;要不就是最大音量要不就是最小音量。 按键 M 不知道什么原因…

Java | Leetcode Java题解之第60题排列序列

题目&#xff1a; 题解&#xff1a; class Solution {public String getPermutation(int n, int k) {int[] factorial new int[n];factorial[0] 1;for (int i 1; i < n; i) {factorial[i] factorial[i - 1] * i;}--k;StringBuffer ans new StringBuffer();int[] valid…

[数据结构]———交换排序

目录 ​编辑 ​编辑 1.交换排序 第一个定义了一个名为Swap的函数 第二个三数取中 2.冒泡排序 代码解析 冒泡排序的特性总结&#xff1a; 3.快速排序 1. hoare版本 2. 挖坑法 代码解析 3. 前后指针版本 代码解析 1.交换排序 基本思想&#xff1a;所谓交换&#xff0…

等级测评等级测评是测评机构依据国家信息安全等级保护制度规定

等级测评 等级测评是测评机构依据国家信息安全等级保护制度规定&#xff0c;按照有关管理规范和技术标准&#xff0c; 对非涉及国家秘密信息系统安全等级保护状况进行检测评估的活动。 主管部门、监管机构进行监督检查 网络安全等级保护测评报告结论有几种&#xff1f; 优…

virtualbox kafka nat + host-only集群 + windows 外网 多网卡

virtualbox kafka nat + host-only集群 + windows 映射访问 kafka集群搭建背景kafka集群搭建 背景 使用virtualbox搭建kafka集群,涉及到不同网络策略的取舍 首先 桥接 网络虽说 啥都可以,但是涉及到过多ip的时候,而且还不能保证使用的ip不被占用,所以个人选择kafka虚拟机…

SpringBoot camunda

1&#xff1a;默认排他网关&#xff0c;表达式 Type:expression:${number%2000} 2: service task (系统自动执行用的最多):常用Delegate expression ${testGateWay} 举例&#xff1a; Component("testGateWay") public class TestGateWay implements JavaDelegate {…

H2数据库常见问题

H2数据库问题1 [90048][90048] Unsupported database file version or invalid file header in file “C:/Users/admin/Desktop/temp/2024.05.01/springboot-h2-mybatisplus/db/firstDb.mv.db” [90048-220] The write format 2 is smaller than the supported format 3 [2.2.…

蓝桥杯练习系统(算法训练)ALGO-952 简易编辑器

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 你要实现一个简易文本编辑器&#xff0c;每个字符是一个整数&#xff0c;程序要完成一下操作&#xff1a;   P 光标左移&…

java-链表排序

需求 思路 排序&#xff1a;讲所有的值都取出来&#xff0c;存储到ArrayList中&#xff0c;然后排序&#xff0c;将排序之后的元素依次使用add方法添加到自定义链表合并排序&#xff1a;先合并&#xff0c;然后调用刚才写的排序算法合并&#xff1a;将表一的头结点作为新链表的…

使用 Docker-Compose 部署 Kafka

使用 Docker-Compose 部署 Kafka 1. Kafka 镜像选择2. 版本选择3. 无密码部署4. 命令行操作 Kafak 生产消息、消费消息1. Kafka 镜像选择 这里使用的是 Docker Hub 上使用最多的镜像:bitnami/kafka,为什么使用这个镜像,看下官方的介绍: Bitnami closely tracks upstream …

开发日志:Kylin麒麟操作系统部署ASP.NET CORE

需求场景&#xff1a; 我需要部署的项目是在Windows上开发的&#xff0c;目标框架为.net core 6.0 因此我们需要先在kylin上部署项目运行所需要的环境。 借助百度词条&#xff0c;先看看Kylin是什么&#xff1a; 服务器资源&#xff1a; 查看系统版本 cat /etc/kylin-releas…

MyBatis 核心配置讲解(下)

大家好&#xff0c;我是王有志&#xff0c;一个分享硬核 Java 技术的互金摸鱼侠。 我们书接上回&#xff0c;继续聊 MyBatis 的核心配置&#xff0c;我们今天分享剩下的 5 项核心配置。 不过正式开始前&#xff0c;我会先纠正上一篇文章 MyBatis 核心配置讲解&#xff08;上&…