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

【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&#xff08;字典 / 位运算&#xff09;136. 只出现一次的数字&#xff08;字典&#xff09;137. 只出现一次的数字 II&#xff08;字典&#xff09;169. 求众数&#xff08;字典&#xff09;229. 求众数 II&#xff08;字典&#xff09;200…...

网络安全(黑客)入门

想自学网络安全&#xff08;黑客技术&#xff09;首先你得了解什么是网络安全&#xff01;什么是黑客&#xff01; 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全…...

在CSS中,盒模型中的padding、border、margin是什么意思?

在CSS中&#xff0c;盒模型&#xff08;Box Model&#xff09;是用来描述和布局HTML元素的基本概念。它将每个HTML元素看作是一个矩形的盒子&#xff0c;这个盒子包括了内容&#xff08;content&#xff09;、内边距&#xff08;padding&#xff09;、边框&#xff08;border&a…...

有线耳机插入电脑没声音

有线耳机插入电脑没声音 首先确保耳机和电脑都没问题&#xff0c;那就有可能是声音输出设备设置错误 右击任务栏的声音图标-打开声音设置-选择输出设备。...

【面试 反思】Retrofit源码与设计 7 连问

前言 在实际项目中往往是使用Retrofit来做网络请求工作。Retrofit采用RESTful风格&#xff0c;本质上只是对OkHttp进行封装&#xff0c;今天我们根据几个问题来进一步学习一下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)

损失函数&#xff08;Loss Function&#xff09;是机器学习和深度学习中的关键概念&#xff0c;它用于衡量模型的预测与实际目标之间的差异或误差。损失函数的选择对于模型的训练和性能评估至关重要&#xff0c;不同的任务和问题通常需要不同的损失函数。 以下是一些常见的损失…...

创邻科技张晨:图数据库,激活数据要素的新基建

“数据经济时代&#xff0c;数据要素产业链的各细分领域均蕴含机遇&#xff0c;图技术作为网络协同和数据智能的底层发动机&#xff0c;将深度掘金数字中国价值潜能”。 8月22日&#xff0c;在2023中国&#xff08;南京&#xff09;国际软件产品和信息服务交易博览会的信息技术…...

使用端口映射实现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

今天&#xff0c;记录一下stm32如何点亮一个LED,程序本身十分简单&#xff0c;但主要是学习编程的格式。 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认证是什么&#xff1f; SA8000即“社会责任标准”&#xff0c;是Social Accountability 8000的英文简称&#xff0c;由社会责任国际组织(SAI)制定与执行&#xff0c;是全球首个道德规范国际标准。自1997年问世以来&#xff0c;它创建了一个衡量社会责任的共同语言&#…...

Java可视化物联网智慧工地SaaS平台源码:人脸识别考勤

基于微服务JavaSpring Cloud Vue UniApp MySql实现的智慧工地云平台源码 智慧工地是指利用云计算、大数据、物联网、移动互联网、人工智能等技术手段&#xff0c;为建筑施工现场提供智能硬件及物联网平台的解决方案&#xff0c;以实现建筑工地的实时化、可视化、多元化、智慧化…...

告别数字化系统“物理叠加”,华为云推动智慧门店价值跃迁

文|智能相对论 作者|叶远风 有大屏幕滚动播放广告&#xff1b; 有人脸识别系统让消费者自助结账&#xff1b; 有订单管理系统综合分析一段时间内总体经营情况&#xff1b; 有全门店监控直连总部机房&#xff1b; …… 以搭载数字化系统的硬件设备为表面特征的智慧门店&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、修改/更新&#xff08;镜像、…...

大语言模型的分布式训练

什么是大语言模型 大语言模型(Large Language Model,缩写LLM),也称大型语言模型,是一种人工智能模型,旨在理解和生成人类语言。它们在大量的文本数据上进行训练,可以执行广泛的任务,包括文本总结、翻译、情感分析等等。LLM的特点是规模庞大,包含数十亿的参数,帮助它们学习语言…...

【JavaEE】Spring全家桶实现AOP-统一处理

【JavaEE】AOP&#xff08;2&#xff09; 文章目录 【JavaEE】AOP&#xff08;2&#xff09;1. 统一登录校验处理1.1 自定义拦截器1.2 将自定义拦截器加入到系统配置1.3 测试1.4 对于静态资源的处理1.5 小练习&#xff1a;统一登录拦截处理1.6 拦截器原理1.6.1 执行流程1.6.2 源…...

HQL解决连续三天登陆问题

1.背景 统计连续登录天数超过3天的用户&#xff0c;输出信息包括&#xff1a;用户id&#xff0c;登录天数&#xff0c;起始时间&#xff0c;结束时间&#xff1b; 2.准备数据 -- 建表 create table if not exists user_login_3days(user_id STRING,login_date date );--插入…...

(一)Docker简介(一篇足以)

一、简介 一个项目环境配置相当麻烦&#xff0c;如果换一台机器跑起来&#xff0c;所有配置就要重来一次&#xff0c;费力费时。很多人想到&#xff0c;能不能从根本上解决问题&#xff0c;软件可以带环境安装&#xff1f;也就是说&#xff0c;安装的时候&#xff0c;把原始环…...

RK3568 安卓源码编译

一.repo安卓编译工具 项目模块化/组件化之后各模块也作为独立的 Git 仓库从主项目里剥离了出去&#xff0c;各模块各自管理自己的版本。Android源码引用了很多开源项目&#xff0c;每一个子项目都是一个Git仓库&#xff0c;每个Git仓库都有很多分支版本&#xff0c;为了方便统…...

第4篇:vscode+platformio搭建esp32 arduino开发环境

第1篇:Arduino与ESP32开发板的安装方法 第2篇:ESP32 helloword第一个程序示范点亮板载LED 第3篇:vscode搭建esp32 arduino开发环境 1.配置默认安装路径&#xff0c;安装到D盘。 打开环境变量&#xff0c;点击新建 输入变量名PLATFORMIO_CORE_DIR与路径&#xff1a;D:\PLATF…...

2023前端面试笔记 —— CSS3

系列文章目录 内容链接2023前端面试笔记HTML52023前端面试笔记CSS3 文章目录 系列文章目录前言一、CSS选择器的优先级二、通过 CSS 的哪些方式可以实现隐藏页面上的元素三、px、em、rem之间有什么区别&#xff1f;四、让元素水平居中的方法有哪些五、在 CSS 中有哪些定位方式六…...

iOS 如何对整张图分别局部磨砂,并完全贴合

官方磨砂方式 - (UIVisualEffectView *)effectView{if(!_effectView){UIBlurEffect *blur [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];_effectView [[UIVisualEffectView alloc] initWithEffect:blur];}return _effectView; }使用这种方式对一张图的上半部分和…...

Packet_Tracer的使用

一、实验目的&#xff1a; 通过该实验了解Packet Tracer的使用方法&#xff0c;能够用Packet Tracer建立和模拟网络模型。 二、主要任务&#xff1a; 1.熟悉PT的界面&#xff0c;了解按键用途。 2.尝试自己建立一个小型网络&#xff0c;并测试连通性。 3.学习P…...

WPF如果未定义绑定的属性,程序如何处理

问题&#xff1a;wpf中&#xff0c;<Button IsEnabled"{Binding IsValid1}"></Button>&#xff0c;如果没定义绑定的属性IsValid1&#xff0c;可以正常用吗 解答&#xff1a;在 WPF 中&#xff0c;如果没有定义绑定的属性 IsValid1&#xff0c;会导致绑…...

韩国留学生生活之-租房篇,柯桥韩语培训留学韩语需要学到什么程度

对于计划在韩国留学的人来说&#xff0c;找到合适的租房是一个重要而且有挑战性的任务。 留学生遇到的常见租房类型为月付型、全税房。月付型就是我们常见的租房方式&#xff0c;一般都需要支付一个月或数个月月租的押金&#xff0c;按时间付房租即可&#xff0c;租期通常为一…...

论文笔记:基于概念漂移的在线类非平衡学习系统研究

0 摘要 论文&#xff1a;A Systematic Study of Online Class Imbalance Learning With Concept Drift 发表&#xff1a;2018年发表在TNNLS上 源代码&#xff1a;&#xff1f; 作为一个新兴的研究课题&#xff0c;在线类非平衡学习往往结合了类非平衡和概念漂移的挑战。它处理…...

ubuntu22.04下rv1109 rootfs编译问题处理

ubuntu22.04下rv1109 rootfs编译问题处理 buildroot编译出错记录问题一&#xff1a;c-stack.c的SIGSTKSZ错误解决办法问题二&#xff1a;libfakeroot.c的_STAT_VER报错解决办法问题三&#xff1a;fwriter_buffer重复定义解决办法问题四&#xff1a; qfloat16.h报错解决办法问题…...

Spring Boot Dubbo Zookeeper

文章目录 Spring Boot Dubbo Zookeeper简介DubboCommonProviderConsumer Zookeeper Spring Boot Dubbo Zookeeper 简介 Dubbo Common 公共依赖 <!-- Spring Boot Starter --> <dependency><groupId>org.springframework.boot</groupId><artifac…...

线程池的概念及实现原理

本篇是对前面线程池具体实现过程的补充&#xff0c;实现过程可参考 线程池的实现全过程v1.0版本&#xff08;手把手创建&#xff0c;看完必掌握&#xff01;&#xff01;&#xff01;&#xff09;_竹烟淮雨的博客-CSDN博客 线程池的实现v2.0&#xff08;可伸缩线程池&#xf…...

iOS App逆向之:iOS应用砸壳技术

在iOS逆向&#xff0c;有一项关键的技术叫做“iOS砸壳”&#xff08;iOS App Decryption&#xff09;。自iOS 5版本以来&#xff0c;苹果引入了应用程序加密机制&#xff0c;使得大部分应用都需要进行砸壳操作才能进行逆向分析。因此作为开发者、逆向工程师和安全研究人员都需要…...

网络报警平台/邵阳seo排名

可能的原因&#xff1a; ALV显示超过99列&#xff0c;ALV不支持;ALV字段名字&#xff08;FIELDCAT&#xff09;出错&#xff0c;输出的字段定义内表字段不一样&#xff0c;FIELDCAT单引号里的字段一定要大写。...

东莞网站排名价格/制作网站的基本流程

激光加工技术是当今时代最具技术先进性的加工制造技术&#xff0c;较传统加工方式有着显而易见的竞争优势。自上世纪七十年代激光加工技术蓬勃兴起&#xff0c;现已形成了激光切割、激光雕刻、激光焊接、激光打标等几十种激光加工技术。激光加工技术的高速高精度低耗等优势使得…...

网站关键词之间/2020国内搜索引擎排行榜

以苏宁、国美为代表的大型家电连锁卖场在十多年前迅速崛起&#xff0c;取代了早期的“百货商场专卖店”的家电销售模式&#xff0c;经过多年布局发展&#xff0c;已在一、二线城市建立起完善缜密的销售网络&#xff0c;形成“美苏争霸&#xff0c;一统天下”的格局。据中国电子…...

柳江网站开发/域名大全查询

chart: {type: area,ignoreHiddenSeries: false, //如果true,一旦一个系列被隐藏&#xff0c;轴将会扩展剩余的可见系列}, 这是设置的两个纵坐标轴&#xff1a; yAxis : [{ title : { text : 参数值 }, …...

wordpress模板剥离/点金推广优化公司

上篇文章分享了在项目实战中自定义Mybatis的TypeHandler来处理枚举类型。文章结尾也指出了美中不足之处&#xff0c;那就是每次都需要指定我们自定义的枚举TypeHandler。 随着项目枚举类型的增多&#xff0c;每次都要写一遍这个会令人很反感。那么&#xff0c;本次我们就来解决…...

wordpress 连接微信支付/seo关键词选择及优化

喵哈哈村的四月半活动&#xff08;一&#xff09; 题解&#xff1a; 唯一的case&#xff0c;就是两边长度一样的时候&#xff0c;第三边只有一种情况。 #include <iostream> #include <cstdio> #include <cstdlib> #include <algorithm> #include <…...