当前位置: 首页 > news >正文

Python每日一练(20230515) 只出现一次的数字 I\II\III

目录

1. 只出现一次的数字 Single Number

2. 只出现一次的数字 II Single Number II

3. 只出现一次的数字 III Single Number III

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


leetcode题号: 136, 137, 260

1. 只出现一次的数字 Single Number

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

说明:

你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

示例 1:

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

示例 2:

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

代码1: 用哈希表计数

def singleNumber(nums):hash_map = {}for num in nums:if num in hash_map:hash_map[num] += 1else:hash_map[num] = 1for num, count in hash_map.items():if count == 1:return numreturn 0if __name__ == '__main__':nums = [2, 2, 1]print(singleNumber(nums))nums = [4, 1, 2, 1, 2]print(singleNumber(nums))

代码2: 异或运算

def singleNumber(nums):res = 0for num in nums:res ^= numreturn resif __name__ == '__main__':nums = [2, 2, 1]print(singleNumber(nums))nums = [4, 1, 2, 1, 2]print(singleNumber(nums))

代码3: 算术运算

def singleNumber(nums):hash_map = {}sum1, sum2 = 0, 0for num in nums:if num in hash_map:hash_map[num] += 1else:hash_map[num] = 1sum1 += numfor num, count in hash_map.items():sum2 += 2 * numreturn sum2 - sum1if __name__ == '__main__':nums = [2, 2, 1]print(singleNumber(nums))nums = [4, 1, 2, 1, 2]print(singleNumber(nums))

输出:

1
4


2. 只出现一次的数字 II Single Number II

给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。

示例 1:

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

示例 2:

输入:nums = [0,1,0,1,0,1,99]
输出:99

提示:

  • 1 <= nums.length <= 3 * 10^4
  • -2^31 <= nums[i] <= 2^31 - 1
  • nums 中,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次

进阶:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

代码1: 用哈希表计数

def singleNumber(nums):hash_map = {}for num in nums:if num in hash_map:hash_map[num] += 1else:hash_map[num] = 1for num, count in hash_map.items():if count == 1:return numreturn 0if __name__ == '__main__':nums = [2, 2, 3, 2]print(singleNumber(nums))nums = [0, 1, 0, 1, 0, 1, 99]print(singleNumber(nums))

代码2: 位运算

def singleNumber(nums):res = 0for i in range(64):sum = 0for num in nums:sum += (num >> i) & 1if sum % 3 != 0:res |= 1 << ireturn resif __name__ == '__main__':nums = [2, 2, 3, 2]print(singleNumber(nums))nums = [0, 1, 0, 1, 0, 1, 99]print(singleNumber(nums))

 代码3: 算术运算

def singleNumber(nums):nums_set = set(nums)sum1 = sum(nums)sum2 = 3 * sum(nums_set)return (sum2 - sum1) // 2if __name__ == '__main__':nums = [2, 2, 3, 2]print(singleNumber(nums))nums = [0, 1, 0, 1, 0, 1, 99]print(singleNumber(nums))

输出:

3
99


3. 只出现一次的数字 III Single Number III

给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。

进阶:你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?

示例 1:

输入:nums = [1,2,1,3,2,5]
输出:[3,5]
解释:[5, 3] 也是有效的答案。

示例 2:

输入:nums = [-1,0]
输出:[-1,0]

示例 3:

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

提示:

  • 2 <= nums.length <= 3 * 10^4
  • -2^31 <= nums[i] <= 2^31 - 1
  • 除两个只出现一次的整数外,nums 中的其他数字都出现两次

代码1: 用哈希表计数

def singleNumber(nums):m, res = {}, []for num in nums:m[num] = m.get(num, 0) + 1for num, count in m.items():if count == 1:res.append(num)return resif __name__ == '__main__':nums = [1, 2, 1, 3, 2, 5]print(singleNumber(nums))nums = [-1, 0]print(singleNumber(nums))nums = [0, 1]print(singleNumber(nums))

代码2: 位运算分组异或

def singleNumber(nums):xor = 0for num in nums:xor ^= nummask = 1while (xor & mask) == 0:mask <<= 1a, b = 0, 0for num in nums:if num & mask != 0:a ^= numelse:b ^= numreturn [a, b]if __name__ == '__main__':nums = [1, 2, 1, 3, 2, 5]print(singleNumber(nums))nums = [-1, 0]print(singleNumber(nums))nums = [0, 1]print(singleNumber(nums))

输出:

[3 5]
[-1 0]
[1 0]


🌟 每日一练刷题专栏 🌟

持续,努力奋斗做强刷题搬运工!

👍 点赞,你的认可是我坚持的动力! 

🌟 收藏,你的青睐是我努力的方向! 

评论,你的意见是我进步的财富!  

 主页:https://hannyang.blog.csdn.net/

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏

相关文章:

Python每日一练(20230515) 只出现一次的数字 I\II\III

目录 1. 只出现一次的数字 Single Number 2. 只出现一次的数字 II Single Number II 3. 只出现一次的数字 III Single Number III &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 leetcod…...

基于【EasyDL】【图像分类】实现农作物病害识别小程序

内容、数据集来源:基于飞桨的农作物病害智能识别系统 - 飞桨AI Studio 项目背景 联合国粮食及农业组织的一份报告表明&#xff0c;每年农业生产的自然损失中有三分之一以上是由农业病虫害造成的&#xff0c;使这些成为当前影响农业生产和农业生产的最重要因素。需要考虑的农业…...

元宇宙又“死”了!Epic老板:你当6亿用户是摆设?

“扎克伯格花了数年时间试图让Metaverse成为现实&#xff0c;但现在它已被AI取代&#xff0c;并走向科技创意的坟墓。”一篇表达“元宇宙已死”的文章近期在推特上引发热议&#xff0c;而游戏制作公司Epic Games CEO Tim Sweeney的还击更是让这个话题热上加热。 “搞一次在线守…...

阶段小结2022

工作马上一年&#xff0c;对于一年工作能力提升可能逐步在提升&#xff0c;业务能力也在慢慢提升&#xff0c;虽然没有一年前想象的飞起状态&#xff0c;但是刚接触这一行&#xff0c;希望越来越好。 之前每次的遇到的问题其实都会在笔记或者博客中记录&#xff0c;但是没有整体…...

linux0.12-8-11-vsprintf.c

[383页] 1、 这一小节可以不看代码如何实现&#xff0c;因为标准的C库函数&#xff1b; 2、 等自己看完的这本书&#xff0c;有兴趣过来研究研究也是可以的。 8-11 vsprintf.c程序 8-11-1 功能描述 该程序主要包括vsprintf(),用于对参数产生格式化的输出。由于该函数是C函数…...

Node.js 与 WebAssembly

目录 1、简介 2、关键概念 3、生成WebAssembly模块 4、如何使用它 5、与操作系统交互 1、简介 首先&#xff0c;让我们了解为什么WebAssembly是一个很棒的工具&#xff0c;并学会自己使用它。 WebAssembly是一种类似汇编的高性能语言&#xff0c;可以从各种语言编译&…...

OpenCL编程指南-4.4矢量操作符

矢量操作符 如下描述了可用于矢量数据类型或矢量和标量数据类型组合的各类操作符。 算术操作符 算术操作符&#xff08;加&#xff08;)、减&#xff08;–)、乘&#xff08;*&#xff09;和除&#xff08;/)&#xff09;&#xff0c;可以作用于内置整数、浮点标量和矢量数…...

索洛模型(二)

索洛模型(二) 文章目录 索洛模型(二)[toc]1 事实2 假设2.1 对生产函数的假设2.2对投入要素的假设 3 索洛模型的动态学3.1 k k k的动态学3.2 平衡增长路径 4 储蓄率变化的影响4.1 对产出的影响4.2 对消费的影响 索罗经济增长模型&#xff08;Solow growth model&#xff09;&am…...

【多微电网】基于粒子群优化算法的面向配电网的多微电网协调运行与优化(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

使用Atmel Studio开发Arduino的ATmega328P单片机

摘要&#xff1a;我们知道Arduino开发板常用的芯片是Atmel公司生产的AVR微控制器系列。最常见的是ATmega328P&#xff0c;被广泛用于Arduino Uno开发板。其他常用的AVR芯片包括ATmega2560和ATmega32U4。使用Arduino平台开发AVR的单片机非常方便。Arduino IDE提供了一个非常简洁…...

docker基础命令

查找镜像 docker search nginx 拉取镜像 不指定镜像版本的话默认拉取最新的版本&#xff0c;可以在dockerhub上查看镜像的版本 dockerhub地址:Docker docker pull nginx docker pull nginx:1.23 查看镜像列表 docker images 打包镜像 打包的镜像可以迁移到其它的主机上部署 …...

数组名+1和数组名+1的区别

数组名和&数组名区别 #include <stdio.h>int main() {int a[5] {1,2,3,4,5};int *ptr (int *)(&a 1);printf("%d,%d,%d\n",*(a 4),*(ptr - 1),*ptr); // 2 5 为什么是5printf("数组a[4]的地址%p,(ptr-1)地址%p, ptr的地址%p",(a 4)…...

开放原子训练营(第三季)inBuilder低代码开发实验室初体验

一、活动介绍 开放原子训练营开启inBuilder低代码实验室活动。无论您是计算机行业相关从业者、低代码开发爱好者还是普通用户&#xff0c;都可以基于inBuilder低代码开发平台社区版&#xff08;基于UBML开源项目的一个可以广泛使用的发行版&#xff09;&#xff0c;体验向导式、…...

sql数据定义语句(cascade,set,null,no action的区别)

&#xff08;一&#xff09;ADD 基本格式&#xff1a; ALTER TABLE <表名> ADD 新属性名 新属性类型 例&#xff1a;alter table s1 add tele char&#xff08;12&#xff09;&#xff1a;增加一个电话号码&#xff08;tele&#xff09;属性 注&#xff1a; 新增的属…...

Java进程(基础)

基本概念 1、进程&#xff1a;程序的执行过程 2、线程&#xff1a;一个进程可以有单个线程也就是我们说的单线程&#xff0c;还可以有多个线程也就是我们说的多线程&#xff0c; 线程 1、当一个类继承了Thread类就可以当成一个线程用 2、我们会重写run方法写上我们自己的业务…...

Android之 Activity活动详解

一 四大组件 1.1 Activity组件&#xff0c;它一个单独的窗口&#xff0c;程序流程都必须在Activity中运行。 1.2 service组件&#xff0c;用于在后台完成用户指定的操作。 1.3 content provider组件&#xff0c;会为所有的应用准备一个内容窗口&#xff0c;并且保留数据库、…...

车载软件架构——闲聊几句AUTOSAR BSW(五)

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 我们并不必要为了和谐,而时刻保持通情达理;我们需要具备的是,偶尔有肚量欣然承认在某些方面我们可能会有些不可理喻。该有主见的时候能掷地有声地镇得住场…...

APP图标尺寸规范一文了解清楚

在进行图标设计前&#xff0c;熟知手机 app 图标尺寸规范&#xff0c;能更好地去针对不同平台设计出更极致的图标。当前智能手机系统主要以 iOS 及 Android 为主&#xff0c;APP 图标是产品给用户的第一印象&#xff0c;图标视觉设计的美感与吸引力&#xff0c;与用户是否选择下…...

写给程序员Android Framework 开发,

前言 在 Android 开发者技能中&#xff0c;如果想进大厂&#xff0c;一般拥有较好的学历可能有优势一些。但是如果你靠硬实力也是有机会的&#xff0c;例如死磕Framework。Framework 知识广泛应用在Android各个领域中&#xff0c;重要性显而易见。 成为一名Android Framework…...

html实现一个一闪一闪的按钮,CSS实现一个一闪一闪的按钮,Css闪烁点标,css设置按钮层次感,css按钮美化,CSS按钮动画过渡,CSS按钮添加阴影

效果 动态 静态 实现 底部多加了几个过渡按钮 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><style>#app {margin: 2% auto;text-align: center;}.lay-btn-box {position: relative;display: …...

无人机光纤FC接口模块技术分析

运行方式 1. 信号转换&#xff1a;在遥控器端&#xff0c;模块接收来自遥控器主控板的电信号。 2.电光转换&#xff1a;模块内部的激光发射器将电信号转换成特定波长的光信号。 3.光纤传输&#xff1a;光信号通过光纤跳线传输。光纤利用全内反射原理将光信号约束在纤芯内进行…...

【PDF PicKiller】PDF批量删除固定位置图片工具,默认解密,可去一般图、背景图、水印图!

PDF批量删除固定位置图片工具 PDF PicKiller <center>PDF PicKiller [Download](https://github.com/Peaceful-World-X/PDF-PicKiller)&#x1f929; 工具介绍&#x1f973; 主要功能&#x1f92a; 软件使用&#x1f92a; 参数解释&#x1f92a; 关键代码&#x1f929; 项…...

杭州瑞盟 MS35774/MS35774A 低噪声256细分微步进电机驱动,用于空调风门电机驱动,香薰电机驱动

杭州瑞盟 MS35774/MS35774A 低噪声256细分微步进电机驱动&#xff0c;用于空调风门电机驱动&#xff0c;香薰电机驱动 简述 MS35774/MS35774A 是一款高精度、低噪声的两相步进 电机驱动芯片&#xff0c;芯片内置功率 MOSFET &#xff0c;长时间工作的平均电 流可以达到 1…...

GC1808:高性能24位立体声音频ADC芯片解析

1. 芯片简介 GC1808 是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于家庭影院、蓝牙音箱等场景。 核心特性 高精度&#xff1a;24位分辨率&#xff0c;…...

【Go语言基础【5】】Go module概述:项目与依赖管理

文章目录 一、Go Module 概述二、Go Module 核心特性1. 项目结构2. 依赖查找机制 三、如何启用 Go Module四、创建 Go Module 项目五、Go Module 关键命令 一、Go Module 概述 Go Module 是 Go 1.11 版本&#xff08;2018 年 8 月&#xff09;引入的依赖管理系统&#xff0c;用…...

Qt客户端技巧 -- 窗口美化 -- 圆角窗口

不解析&#xff0c;直接给代码例子 利用窗口重绘事件处理函数paintEvent main.cpp #include <QtCore/qglobal.h> #if QT_VERSION > 0x050000 #include <QtWidgets/QApplication> #else #include <QtGui/QApplication> #endif#include "roundedwin…...

软件工程:如何做好软件产品

1、什么是产品 从项目到产品 产品&#xff1a;满足行业共性需求的标准产品。即要能够做到配置化的开发&#xff0c;用同一款产品最大限度地满足不同客户的需求&#xff0c;同时让产品具有可以快速响应客户需求变化的能力。 好的产品一定吸收了多个项目的共性&#xff0c;一定是…...

从零开始,搭建一个基于 Django 的 Web 项目

&#x1f3af; 主要步骤概述 1️⃣ 安装 Python 和 pip 2️⃣ 创建虚拟环境 3️⃣ 安装 Django 4️⃣ 创建 Django 项目 5️⃣ 运行开发服务器 6️⃣ 创建一个简单的应用&#xff08;app&#xff09; 7️⃣ 配置数据库并迁移 8️⃣ 创建超级用户&#xff08;admin&#xff09;…...

大模型安全测试报告:千问、GPT 全系列、豆包、Claude 表现优异,DeepSeek、Grok-3 与 Kimi 存在安全隐患

大模型安全测试报告&#xff1a;千问、GPT 全系列、豆包、Claude 表现优异&#xff0c;DeepSeek、Grok-3 与 Kimi 存在安全隐患 引言 随着生成式人工智能技术的快速演进&#xff0c;大语言模型&#xff08;LLM&#xff09;正在广泛应用于企业服务、政务系统、教育平台、金融风…...

mamba架构和transformer区别

Mamba 架构和 Transformer 架构存在多方面的区别&#xff0c;具体如下&#xff1a; 计算复杂度1 Transformer&#xff1a;自注意力机制的计算量会随着上下文长度的增加呈平方级增长&#xff0c;例如上下文增加 32 倍时&#xff0c;计算量可能增长 1000 倍&#xff0c;在处理长序…...