【python】Leetcode(primer-dict-list)

文章目录
- 260. 只出现一次的数字 III(字典 / 位运算)
- 136. 只出现一次的数字(字典)
- 137. 只出现一次的数字 II(字典)
- 169. 求众数(字典)
- 229. 求众数 II(字典)
- 2006. 差的绝对值为 K 的数对数目(字典)
- 944. 删列造序(zip(*list))
- 867. 转置矩阵(zip(*list))
更多有关 dict 的相关背景和 leetcode 题解可参考:
- 【Programming】
- 【python】dict(7)
260. 只出现一次的数字 III(字典 / 位运算)
给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。
-
示例 :
输入: [1,2,1,3,2,5]
输出: [3,5] -
注意:
结果输出的顺序并不重要,对于上面的例子, [5, 3] 也是正确答案。
你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?
思路1:用字典,key 是数字,value 是频数,出现了两次,就删掉,最后输出字典中有的元素
class Solution(object):def singleNumber(self, nums):""":type nums: List[int]:rtype: List[int]"""dict1 = {}for i in nums:if i in dict1:del dict1[i]else:dict1[i] = 1list1 = [] for i in dict1:list1.append(i)return list1
还有一种用二进制与操作的方法,很懵!(bryant)
LeetCode Medium 260 找单独的数III Python
136. 只出现一次的数字(字典)
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
-
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? -
示例 1:
输入: [2,2,1]
输出: 1 -
示例 2:
输入: [4,1,2,1,2]
输出: 4
可以用 260. 只出现一次的数字 III(字典) 的方法!
class Solution(object):def singleNumber(self, nums):""":type nums: List[int]:rtype: int"""dict1 = {}for i in nums:if i in dict1:del dict1[i]else:dict1[i] = 1for i in dict1:return i
137. 只出现一次的数字 II(字典)
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。
-
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? -
示例 1:
输入: [2,2,3,2]
输出: 3 -
示例 2:
输入: [0,1,0,1,0,1,99]
输出: 99
这个出现了三次,不能像 260. 只出现一次的数字 III(字典) 那样,出现第二次的时候删掉字典键值对,所以我们中规中矩,把数字和频数存在字典中,然后,遍历字典,输出频数为 1 的数
class Solution(object):def singleNumber(self, nums):""":type nums: List[int]:rtype: int"""dict1 = {}for i in nums:if i not in dict1:dict1[i] = 0dict1[i] += 1else:dict1[i] +=1for i in dict1:if dict1[i] == 1:return i
169. 求众数(字典)
给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在众数。
-
示例 1:
输入: [3,2,3]
输出: 3
示例 2: -
输入: [2,2,1,1,1,2,2]
输出: 2
还是可以用 137. 只出现一次的数字 II 的思路,存在字典中,keys 是数字,values 是频数,然后根据频数筛选出最终答案!
class Solution(object):def majorityElement(self, nums):""":type nums: List[int]:rtype: int"""dict1 = {}for i in nums:if i not in dict1:dict1[i] = 1else:dict1[i] += 1for i in dict1:if dict1[i] > len(nums)/2:return i
还可以,直接排序,然后输出后半段的数字就可以了!反正众数一定存在,而且不管是比其他数大还是小,都占了一半以上!
class Solution(object):def majorityElement(self, nums):""":type nums: List[int]:rtype: int"""sort_nums = sorted(nums)return sort_nums[len(nums)//2]
229. 求众数 II(字典)
给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。
-
说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1)。
-
示例 1:
输入: [3,2,3]
输出: [3] -
示例 2:
输入: [1,1,1,3,3,2,2,2]
输出: [1,2]
还是可以用字典
class Solution(object):def majorityElement(self, nums):""":type nums: List[int]:rtype: List[int]"""dict1 = {}list1 = []for i in nums:if i not in dict1:dict1[i] = 1else:dict1[i] += 1for i in dict1:if dict1[i] > len(nums)/3:list1.append(i)return list1
2006. 差的绝对值为 K 的数对数目(字典)
链接:https://leetcode-cn.com/problems/count-number-of-pairs-with-absolute-difference-k
给你一个整数数组 nums 和一个整数 k ,请你返回数对 (i, j) 的数目,满足 i < j 且 |nums[i] - nums[j]| == k 。
|x| 的值定义为:
如果 x >= 0 ,那么值为 x 。
如果 x < 0 ,那么值为 -x 。
示例 1:
输入:nums = [1,2,2,1], k = 1
输出:4
解释:差的绝对值为 1 的数对为:
- [1,2,2,1]
- [1,2,2,1]
- [1,2,2,1]
- [1,2,2,1]
1)暴力法
res = 0
for i in nums:for j in nums:if abs(i-j) == k:res += 1
return res
2)统计数字出现的频数,把符合条件的频数相乘
from collections import Counter
num_dict = Counter(nums)res = 0for i in num_dict:if i+k in num_dict:res += num_dict[i]*num_dict[i+k]
return res
当然,可以自己通过字典来实现统计频数
num_dict = {}for i in nums:if i in num_dict:num_dict[i] += 1else:num_dict[i] = 1res = 0for i in num_dict:if i+k in num_dict:res += num_dict[i]*num_dict[i+k]
return res
944. 删列造序(zip(*list))
给定由 N 个小写字母字符串组成的数组 A,其中每个字符串长度相等。
删除 操作的定义是:选出一组要删掉的列,删去 A 中对应列中的所有字符,形式上,第 n 列为 [A[0][n], A[1][n], …, A[A.length-1][n]])。
比如,有 A = [“abcdef”, “uvwxyz”],

思路:列表中的的行的组合变成列的组合,然后判断是否升序
class Solution(object):def minDeletionSize(self, A):""":type A: List[str]:rtype: int"""B = []# 交换行列for i in range(len(A[0])): #遍历列s = ""for j in range(len(A)): #遍历行s+=A[j][i]B.append(s)count = 0# 比较大小for i in range(len(B)):for j in range(len(B[0])-1):#第i组的第j个元素if B[i][j]>B[i][j+1]: #比较大小count+=1breakreturn count
这么做太暴力了,需要柔美一点的,是否非降序可以用排序前后的对比,行列的互换可以用 zip(*list)
class Solution(object):def minDeletionSize(self, A):""":type A: List[str]:rtype: int"""count = 0for item in zip(*A):if sorted(item)!=list(item): #这里注意 item 是元组,排序完是listcount+=1return count
867. 转置矩阵(zip(*list))
给定一个矩阵 A, 返回 A 的转置矩阵。
矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。
示例 1:
输入:[[1,2,3],[4,5,6],[7,8,9]]
输出:[[1,4,7],[2,5,8],[3,6,9]]
思路:可以l两层便利 a,b = b,a,也可以利用 zip(*list)
class Solution(object):def transpose(self, A):""":type A: List[List[int]]:rtype: List[List[int]]"""list1 = []for i in zip(*A):list1.append(list(i))return list1
更简洁的写法是
class Solution(object):def transpose(self, A):""":type A: List[List[int]]:rtype: List[List[int]]"""return [list(i) for i in zip(*A)]
相关文章:
【python】Leetcode(primer-dict-list)
文章目录 260. 只出现一次的数字 III(字典 / 位运算)136. 只出现一次的数字(字典)137. 只出现一次的数字 II(字典)169. 求众数(字典)229. 求众数 II(字典)200…...
网络安全(黑客)入门
想自学网络安全(黑客技术)首先你得了解什么是网络安全!什么是黑客! 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全…...
在CSS中,盒模型中的padding、border、margin是什么意思?
在CSS中,盒模型(Box Model)是用来描述和布局HTML元素的基本概念。它将每个HTML元素看作是一个矩形的盒子,这个盒子包括了内容(content)、内边距(padding)、边框(border&a…...
有线耳机插入电脑没声音
有线耳机插入电脑没声音 首先确保耳机和电脑都没问题,那就有可能是声音输出设备设置错误 右击任务栏的声音图标-打开声音设置-选择输出设备。...
【面试 反思】Retrofit源码与设计 7 连问
前言 在实际项目中往往是使用Retrofit来做网络请求工作。Retrofit采用RESTful风格,本质上只是对OkHttp进行封装,今天我们根据几个问题来进一步学习一下Retrofit的源码与设计思想。 1. 使用方法 直接看一下官方介绍的使用方法。 public final class S…...
flutter 雷达图
通过CustomPainter自定义雷达图 效果如下 主要代码 import package:flutter/material.dart; import dart:math; import dash_painter.dart; import model/charts_model.dart;class RadarChart extends StatelessWidget {final List<ChartModel> list;final double maxV…...
机器学习之损失函数(Loss Function)
损失函数(Loss Function)是机器学习和深度学习中的关键概念,它用于衡量模型的预测与实际目标之间的差异或误差。损失函数的选择对于模型的训练和性能评估至关重要,不同的任务和问题通常需要不同的损失函数。 以下是一些常见的损失…...
创邻科技张晨:图数据库,激活数据要素的新基建
“数据经济时代,数据要素产业链的各细分领域均蕴含机遇,图技术作为网络协同和数据智能的底层发动机,将深度掘金数字中国价值潜能”。 8月22日,在2023中国(南京)国际软件产品和信息服务交易博览会的信息技术…...
使用端口映射实现Spring Boot服务端接口的公网远程调试:详细配置与步骤解析
文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 windows系统2.1.2 linux系统 2.2 创建隧道映射本地端口2.3 测试公网地址 3. 固定公网地址3.1 保留一个二级子域名3.2 配置二级子域名3.2 测试使用固定公网地址…...
stm32之点亮LED
今天,记录一下stm32如何点亮一个LED,程序本身十分简单,但主要是学习编程的格式。 led.h #ifndef _led_H #define _led_H#include "system.h"/* LED时钟端口、引脚定义 */ #define LED1_PORT GPIOB #define LED1_PIN GPIO_Pin_5 #d…...
SA8000认证的难点及注意事项
SA8000认证是什么? SA8000即“社会责任标准”,是Social Accountability 8000的英文简称,由社会责任国际组织(SAI)制定与执行,是全球首个道德规范国际标准。自1997年问世以来,它创建了一个衡量社会责任的共同语言&#…...
Java可视化物联网智慧工地SaaS平台源码:人脸识别考勤
基于微服务JavaSpring Cloud Vue UniApp MySql实现的智慧工地云平台源码 智慧工地是指利用云计算、大数据、物联网、移动互联网、人工智能等技术手段,为建筑施工现场提供智能硬件及物联网平台的解决方案,以实现建筑工地的实时化、可视化、多元化、智慧化…...
告别数字化系统“物理叠加”,华为云推动智慧门店价值跃迁
文|智能相对论 作者|叶远风 有大屏幕滚动播放广告; 有人脸识别系统让消费者自助结账; 有订单管理系统综合分析一段时间内总体经营情况; 有全门店监控直连总部机房; …… 以搭载数字化系统的硬件设备为表面特征的智慧门店&a…...
k8s 常用命令(四)
12、删除pod中的nginx服务及service [rootmaster ~]# kubectl delete deployment nginx -n kube-public [rootmaster ~]# kubectl delete svc -n kube-public nginx-service 13、查看endpoint的信息 [rootmaster ~]# kubectl get endpoints 14、修改/更新(镜像、…...
大语言模型的分布式训练
什么是大语言模型 大语言模型(Large Language Model,缩写LLM),也称大型语言模型,是一种人工智能模型,旨在理解和生成人类语言。它们在大量的文本数据上进行训练,可以执行广泛的任务,包括文本总结、翻译、情感分析等等。LLM的特点是规模庞大,包含数十亿的参数,帮助它们学习语言…...
【JavaEE】Spring全家桶实现AOP-统一处理
【JavaEE】AOP(2) 文章目录 【JavaEE】AOP(2)1. 统一登录校验处理1.1 自定义拦截器1.2 将自定义拦截器加入到系统配置1.3 测试1.4 对于静态资源的处理1.5 小练习:统一登录拦截处理1.6 拦截器原理1.6.1 执行流程1.6.2 源…...
HQL解决连续三天登陆问题
1.背景 统计连续登录天数超过3天的用户,输出信息包括:用户id,登录天数,起始时间,结束时间; 2.准备数据 -- 建表 create table if not exists user_login_3days(user_id STRING,login_date date );--插入…...
(一)Docker简介(一篇足以)
一、简介 一个项目环境配置相当麻烦,如果换一台机器跑起来,所有配置就要重来一次,费力费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环…...
RK3568 安卓源码编译
一.repo安卓编译工具 项目模块化/组件化之后各模块也作为独立的 Git 仓库从主项目里剥离了出去,各模块各自管理自己的版本。Android源码引用了很多开源项目,每一个子项目都是一个Git仓库,每个Git仓库都有很多分支版本,为了方便统…...
第4篇:vscode+platformio搭建esp32 arduino开发环境
第1篇:Arduino与ESP32开发板的安装方法 第2篇:ESP32 helloword第一个程序示范点亮板载LED 第3篇:vscode搭建esp32 arduino开发环境 1.配置默认安装路径,安装到D盘。 打开环境变量,点击新建 输入变量名PLATFORMIO_CORE_DIR与路径:D:\PLATF…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...
Vue 模板语句的数据来源
🧩 Vue 模板语句的数据来源:全方位解析 Vue 模板(<template> 部分)中的表达式、指令绑定(如 v-bind, v-on)和插值({{ }})都在一个特定的作用域内求值。这个作用域由当前 组件…...
StarRocks 全面向量化执行引擎深度解析
StarRocks 全面向量化执行引擎深度解析 StarRocks 的向量化执行引擎是其高性能的核心设计,相比传统行式处理引擎(如MySQL),性能可提升 5-10倍。以下是分层拆解: 1. 向量化 vs 传统行式处理 维度行式处理向量化处理数…...
基于 HTTP 的单向流式通信协议SSE详解
SSE(Server-Sent Events)详解 🧠 什么是 SSE? SSE(Server-Sent Events) 是 HTML5 标准中定义的一种通信机制,它允许服务器主动将事件推送给客户端(浏览器)。与传统的 H…...
联邦学习带宽资源分配
带宽资源分配是指在网络中如何合理分配有限的带宽资源,以满足各个通信任务和用户的需求,尤其是在多用户共享带宽的情况下,如何确保各个设备或用户的通信需求得到高效且公平的满足。带宽是网络中的一个重要资源,通常指的是单位时间…...
从数据报表到决策大脑:AI重构电商决策链条
在传统电商运营中,决策链条往往止步于“数据报表层”:BI工具整合历史数据,生成滞后一周甚至更久的销售分析,运营团队凭经验预判需求。当爆款突然断货、促销库存积压时,企业才惊觉标准化BI的决策时差正成为增长瓶颈。 一…...
