python-leetcode刷题日记

1、defaultdict  用于计数,计算元素key出现的个数,可以避免key不存在的时候报错,当KEY不存在的时候默认为0,可以是list、set、str 
defaultdict[key].append[value]
49. 字母异位词分组
​
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
​
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
​
思路:得到新单词排序后的数据应该是一致的,将每个字符串排序,并将排序后一致的数据放在一块
class Solution(object):def groupAnagrams(self, strs):""":type strs: List[str]:rtype: List[List[str]]"""res = {}m = defaultdict(list)for i in strs:m[''.join(sorted(i))].append(i)return  list(m.values())

122. 买卖股票的最佳时机 II
​
给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。
在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。
返回 你能获得的 最大 利润 。
思路:计算一段一段的时间可以获取最大的利益数,意思就是在下一个数据小于上一个数据的时候,此段数据就结束,并计算此段数据的盈利情况。以及累计并相加
# 进阶版
def maxProfit1(self, prices):""":type prices: List[int]:rtype: int"""temp = prices[0]res = 0buy = prices[0]     # 用于临时记录一个段的第一个for i in range(len(prices)):   if prices[i]<temp:k = temp-buy   # 计算当前一小段的数据res+=k      # 将当前段的数据相加buy=prices[i]    # 将第一个移动到第二段temp = prices[i]if temp>buy and i==len(prices)-1:res += temp-buyreturn  res

13. 罗马数字转整数
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
​
字符          数值
I             1
V             5
X             10
L             50
C             100
D             500
M             1000
例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X + II 。 27 写做  XXVII, 即为 XX + V + II 。
​
通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:
​
I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
给定一个罗马数字,将其转换成整数。
​
思路:
将数据依次遍历,大于后面的数据就加上当前的数据,小于后面的数据的时候就减去当前的数据
class Solution(object):def romanToInt(self, s):""":type s: str:rtype: int"""   lis = list(s)res = 0infectValues = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}one = 0if len(lis)==1:return infectValues.get(lis[0])i = 0while i < len(s)-1:if infectValues[lis[i]]<infectValues[lis[i+1]]: # 小于后面的数据,减去当前的数据one -=infectValues[lis[i]] #减去i+=1elif infectValues[lis[i]]>=infectValues[lis[i+1]]: # 大于或等于后面的数据,加上当前的数据one += infectValues[lis[i]]i+=1one += infectValues[lis[len(lis)-1]] #加上最后一个数据return one
​

2606. 找到最大开销的子字符串

给你一个字符串 s ,一个字符 互不相同 的字符串 chars 和一个长度与 chars 相同的整数数组 vals 。
​
子字符串的开销 是一个子字符串中所有字符对应价值之和。空字符串的开销是 0 。
​
字符的价值 定义如下:
​
如果字符不在字符串 chars 中,那么它的价值是它在字母表中的位置(下标从 1 开始)。
比方说,'a' 的价值为 1 ,'b' 的价值为 2 ,以此类推,'z' 的价值为 26 。
否则,如果这个字符在 chars 中的位置为 i ,那么它的价值就是 vals[i] 。
请你返回字符串 s 的所有子字符串中的最大开销。

解题思路:

python动态规划,转换为计算当前数组最大的子数组。首先是把转换为数组,然后计算数组的最大值的问题。是否加前面的数据取决于前面的数据是否大于0,如果大于0,那么加上前面的数据可以会更大,从而计算出数组最大的子数组

class Solution(object):def maximumCostSubstring(self, s, chars, vals):""":type s: str:type chars: str:type vals: List[int]:rtype: int"""resList = []   // 用于存放替换后的字符串charList = [i for i in chars]for i in s:if i in charList:m = charList.index(i)resList.append(vals[m])else:num = ord(i)-96resList.append(num)print(resList)res = [i*0 for i in range(len(resList))]   //用于存放第I个数据的最大res[0] = resList[0]s = resList[0]for i in range(1,len(resList)):res[i] = max(res[i-1],0)+resList[i]   //递推公式if max(res)<0:return 0 return max(res)

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

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

相关文章

Eureka Server与Eureka Client详解:服务注册与发现的交互机制

Eureka Server与Eureka Client详解&#xff1a;服务注册与发现的交互机制 Eureka 是 Netflix 开源的一个服务发现框架&#xff0c;它是 Spring Cloud 微服务架构中的核心组件之一。Eureka 主要由两个关键组件构成&#xff1a;Eureka Server 和 Eureka Client。它们之间通过一定…

完美解决html2canvas + jsPDF导出pdf分页内容截断问题

代码地址&#xff1a;https://github.com/HFQ12333/export-pdf.git html2canvas jspdf方案是前端实现页面打印的一种常用方案&#xff0c;但是在实践过程中&#xff0c;遇到的最大问题就是分页截断的问题&#xff1a;当页面元素超过一页A4纸的时候&#xff0c;连续的页面就会…

v4l2(video4linux2) yuyv(yuv422)、MJPEG、H.264

V4L2&#xff08;Video4Linux2&#xff09;是Linux内核中的视频设备接口框架&#xff0c;专门用于捕获和输出视频数据。V4L2广泛应用于各种视频设备的驱动程序开发&#xff0c;如网络摄像头、电视调谐器、视频采集卡、以及其他视频输入/输出设备。 ### V4L2的主要功能 1. **视…

c++ 谷歌的招聘 题解

题目描述 2004 年 7 月,谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌(如下图)用于招聘 内容超级简单,就是一个以 .com 结尾的网址,而前面的网址是一个 10 位素数,这个素数是自然常数 e 中最早出现的 10 位连续数字 能找出这个素数的人,就可以通过访问谷歌的这个网站进入…

CSS”叠叠乐“——WEB开发系列16

在现代前端开发中&#xff0c;CSS 是控制网页外观和布局的核心工具。随着项目的复杂化和样式规则的增加&#xff0c;CSS 层叠&#xff08;cascade&#xff09;变得更加重要。为了更好地管理和控制样式规则的应用&#xff0c;CSS 引入了层叠层&#xff08;cascade layers&#x…

linux centos 防火墙常用命令

1、开放端口 firewall-cmd --zonepublic --add-port80/tcp --permanent 1 2、查看某端口是否开放 firewall-cmd --query-port80/tcp 1 3、查看端口开启列表 firewall-cmd --list-port 1 4、重启防火墙 firewall-cmd --reload 1 5、关闭防火墙 systemctl stop firewalld.se…

Java—Lambda表达式

注意&#xff1a;如果无法判断一个方法是否为函数式接口&#xff0c;可以查看该方法的源码中是否携带FunctionalInterface注解。 lambda表达式再简化写法规则如下。 1. 参数类型可以省略不写 2. 如果只有一个参数&#xff0c;参数的 "( )" 也可以省略。 3. 如果Lambd…

【PyTorch】神经网络的基本骨架-nn.Module的使用以及convolution-layers卷积层介绍

前提文章目录 【PyTorch】深度学习PyTorch环境配置及安装【详细清晰】 【PyTorch】深度学习PyTorch加载数据 【PyTorch】关于Tensorboard的简单使用 【PyTorch】关于Transforms的简单使用 【PyTorch】关于torchvision中的数据集以及dataloader的使用 文章目录 前提文章目录nn.…

AI编程工具的力量:以AWS Toolkit与百度Comate为例,加速程序员开发效率

在当今的数字化转型浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;技术不仅重塑了众多行业&#xff0c;也为软件开发领域带来了革命性的变化。AI编程工具&#xff0c;凭借其智能化的特性&#xff0c;正在成为程序员提高开发效率、优化代码质量和加速产品迭代的重要助力…

SQL注入(原理、分类、union、POST注入)

目录 【学习目标、重难点知识】 【学习目标】 【重难点知识】 SQL注入简介 SQL注入原理 SQL注入类型 MySQL与SQL注入的相关知识 information_schema 数据库的结构 数据库查询语句 limit的用法 需要记住的几个函数 注释符号 SQL注入探测方法 SQL注入漏洞攻击流程…

常见开发语言获取USER_AGENT,go,python,php,java,asp,-SAAS本地化及未来之窗行业应用跨平台架构

一、USER_agent 解释 USER_AGENT 是一个 HTTP 请求头字段&#xff0c;它包含了有关发出请求的客户端&#xff08;通常是浏览器&#xff09;的信息。 USER_AGENT 字符串描述了客户端的类型&#xff08;如浏览器名称和版本&#xff09;、操作系统、移动设备型号等详细信息。服务…

以简单的例子从头开始建spring boot web多模块项目(五)-thymeleaf引擎

继续向里面加&#xff0c;这次是引入thymeleaf渲染引擎。 使用这个引擎的很多&#xff0c;主要是以下几个优点&#xff1a; Thymeleaf是适用于Web和独立环境的现代服务器端Java模板引擎。Thymeleaf的主要目标是为您的开发工作流程带来优雅的自然模板 -HTML可以在浏览器中正确显…

Kubernetes中etcd备份与恢复

在Kubernetes (K8s) 中&#xff0c;etcd 是一个分布式键值存储系统&#xff0c;存储了整个集群的配置和状态数据。由于etcd在K8s集群中的核心作用&#xff0c;定期备份和有效恢复etcd数据对于维护集群的高可用性和数据完整性至关重要。 一、etcd概述 1.1 etcd的作用 etcd是一…

七牛云 CDN 视频瘦身,为视频分发「减负增效」

随着智能设备的普及&#xff0c;以及各种以分享视频为主的平台的兴起&#xff0c;人们记录生活、分享故事的方式不再局限于文字和图片&#xff0c;而是越来越多地通过视频来表达。视频也不再需要复杂的制作过程&#xff0c;变得随手可得。 然而&#xff0c;视频在互联网上的爆炸…

65 华为交换机CE6800基础配置

一 IPV6 使能配置思路 1 改华为交换机的名字 <huaweice65>sys Enter system view, return user view with return command. [~huaweice65]sysname HWCE6800 [*huaweice65]quit Warning: Uncommitted configurations found. Are you sure to commit them before exiting?…

抖音集团 FlinkSQL 性能优化探索及实践

本文作者&#xff1a;李精卫 更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 背景 随着抖音集团内部对流式任务的需求不断增长&#xff0c;Flink SQL作为一种低成本接入手段&#xff0c;已经在内部多个方向上得到…

K8S系列——(二)、K8S部署RocketMQ集群

1、环境准备 要将RocketMQ部署到K8S上&#xff0c;首先你需要提前准备一个K8S集群环境&#xff0c;如图我已经准备好了一个版本为 v1.28.13 的 K8S 集群&#xff08;其他版本也没问题&#xff09;&#xff1a; 角色IPMaster192.168.6.220Node-1192.168.6.221Node-2192.168.6.…

React 学习——Class类组件的基本结构

老版本的react的写法&#xff1a;是通过class类组件的 import { Component } from react; class Counter extends Component{state {count: 0,}setCount ()>{this.setState({ count: this.state.count 1 })}render(){return <button onClick{this.setCount}>{thi…

linux:进程空间的回收,exec族

父子进程的关系 子进程是父进程的副本&#xff1a;这个说法在概念上是正确的&#xff0c;但实际上&#xff0c;子进程并不是父进程的完全物理副本。在Unix和类Unix系统中&#xff0c;fork() 系统调用创建了一个与父进程几乎完全相同的子进程&#xff0c;包括环境变量、打开的文…

【Qt】输入类控件QLineEdit

目录 输入类控件QLineEdit 例子&#xff1a;录入个人信息 例子&#xff1a;使用正则表达式验证输入框的数据 例子&#xff1a;验证俩次输入密码一致 例子&#xff1a;切换显示代码 输入类控件QLineEdit QLineEdit 用来表示单行输入框&#xff0c;可以输入一段文本&#xf…