LeetCode 每日一题 2023/7/24-2023/7/30

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步


目录

      • 7/24 771. 宝石与石头
      • 7/25 2208. 将数组和减半的最少操作次数
      • 7/26 2569. 更新数组后处理求和查询
      • 7/27 2500. 删除每行中的最大值
      • 7/28 2050. 并行课程 III
      • 7/29 141. 环形链表
      • 7/30


7/24 771. 宝石与石头

将宝石类型放入set中
一次判断石头中宝石个数

def numJewelsInStones(jewels, stones):""":type jewels: str:type stones: str:rtype: int"""j = set(jewels)ans = 0for s in stones:if s in j:ans+=1return ans

7/25 2208. 将数组和减半的最少操作次数

大顶堆记录当前最大值 每次取最大值减半

def halveArray(nums):""":type nums: List[int]:rtype: int"""import heapqtarget = sum(nums)*1.0/2l = []for num in nums:heapq.heappush(l,-num)cur = 0ans = 0while True:v = -heapq.heappop(l)cur +=v*1.0/2ans+=1if cur>=target:breakheapq.heappush(l,-v*1.0/2)return ans

7/26 2569. 更新数组后处理求和查询

操作1是将nums1中[l,r]的数反转
操作2是将nums2的和加上p*sum(nums1)
操作3是求nums2的和
只要考虑nums1的变化即可
线段树维护nums1区间
l,r左右端点 s区间和 lazy懒标记

class Node:def __init__(self):self.l=self.r=0self.s = 0self.lazy = 0
class SegmentTree:def __init__(self,nums):self.nums = numsn = len(nums)self.tr = [Node() for _ in range(n<<2)]self.build(1,1,n)def build(self,u,l,r):self.tr[u].l,self.tr[u].r=l,rif l==r:self.tr[u].s = self.nums[l-1]returnmid = (l+r)>>1self.build(u<<1,l,mid)self.build(u<<1|1,mid+1,r)self.pushup(u)def modify(self,u,l,r):if self.tr[u].l>=l and self.tr[u].r<=r:self.tr[u].lazy^=1self.tr[u].s = self.tr[u].r-self.tr[u].l+1-self.tr[u].sreturnself.pushdown(u)mid = (self.tr[u].l+self.tr[u].r)>>1if l<=mid:self.modify(u<<1,l,r)if r>mid:self.modify(u<<1|1,l,r)self.pushup(u)def query(self,u,l,r):if self.tr[u].l>=l and self.tr[u].r<=r:return self.tr[u].sself.pushdown(u)mid = (self.tr[u].l+self.tr[u].r)>>1ans = 0if l<=mid:ans +=self.query(u<<1,l,r)if r>mid:ans +=self.query(u<<1|1,l,r)return ansdef pushup(self,u):self.tr[u].s = self.tr[u<<1].s+self.tr[u<<1|1].sdef pushdown(self,u):if self.tr[u].lazy:mid = (self.tr[u].l+self.tr[u].r)>>1self.tr[u<<1].s = mid-self.tr[u].l+1-self.tr[u<<1].sself.tr[u<<1].lazy^=1self.tr[u<<1|1].s = self.tr[u].r-mid-self.tr[u<<1|1].sself.tr[u<<1|1].lazy^=1self.tr[u].lazy^=1def handleQuery(nums1, nums2, queries):""":type nums1: List[int]:type nums2: List[int]:type queries: List[List[int]]:rtype: List[int]"""tr = SegmentTree(nums1)s = sum(nums2)ans = []for op,l,r in queries:if op==1:tr.modify(1,l+1,r+1)elif op==2:s+=l*tr.query(1,1,len(nums1))else:ans.append(s)return ans

7/27 2500. 删除每行中的最大值

每一行从小到大排序
再取每一列的最大值

def deleteGreatestValue(grid):""":type grid: List[List[int]]:rtype: int"""cur =[]for l in grid:cur.append(sorted(l))return sum([max([cur[i][j] for i in range(len(cur))]) for j in range(len(grid[0]))])

7/28 2050. 并行课程 III

m[i]记录课程i为多少课程的前置课程
ind[i]记录课程i有几个前置课程
t[i]记录课程i的最早完成时间

def minimumTime(n, relations, time):""":type n: int:type relations: List[List[int]]:type time: List[int]:rtype: int"""from collections import defaultdictm = defaultdict(list)ind=[0]*nfor pre,nxt in relations:m[pre-1].append(nxt-1)ind[nxt-1]+=1l = []t=[0]*nans = 0for i in range(n):if ind[i]==0:l.append(i)t[i]=time[i]ans = max(ans,t[i])while l:tmp = []for i in l:for j in m[i]:t[j] = max(t[j],t[i]+time[j])ans = max(ans,t[j])ind[j]-=1if ind[j]==0:tmp.append(j)l=tmpreturn ans

7/29 141. 环形链表

快慢指针

class ListNode(object):def __init__(self, x):self.val = xself.next = None
def hasCycle(head):""":type head: ListNode:rtype: bool"""if head==None or head.next==None:return Falseslow = headfast = head.nextwhile(slow!=fast):if fast==None or fast.next==None:return Falseslow=slow.nextfast=fast.next.nextreturn True

7/30


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

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

相关文章

安装Python之后 安装库报错 There was an error checking the latest version of pip.

报错代码 & 图片如下 Looking in indexes: https://pypi.tuna.tsicmdnghua.edu.cn/simple WARNING: Retrying (Retry(total4, connectNone, readNone, redirectNone, statusNone)) after connection broken by NewConnectionError(<pip._vendor.urllib3.connection.HT…

Ubuntu 曝Linux漏洞,近 40% 用户受影响

Bleeping Computer 网站披露&#xff0c;Wiz 研究人员 s.Tzadik 和 s.Tamari 发现 Ubuntu 内核中存在两个 Linux 漏洞 CVE-2023-32629 和 CVE-2023-2640&#xff0c;没有特权的本地用户可能利用其在设备上获得更高权限&#xff0c;影响大约 40% 的 Ubuntu 用户。 Ubuntu 是目前…

双重for循环优化

项目中有段代码逻辑是个双重for循环&#xff0c;发现数据量大的时候&#xff0c;直接导致数据接口响应超时&#xff0c;这里记录下不断优化的过程&#xff0c;算是抛砖引玉吧~ Talk is cheap,show me your code&#xff01; 双重for循环优化 1、数据准备2、原始双重for循环3、…

【设计模式——学习笔记】23种设计模式——组合模式Composite(原理讲解+应用场景介绍+案例介绍+Java代码实现)

案例引入 学校院系展示 编写程序展示一个学校院系结构: 需求是这样&#xff0c;要在一个页面中展示出学校的院系组成&#xff0c;一个学校有多个学院&#xff0c;一个学院有多个系 【传统方式】 将学院看做是学校的子类&#xff0c;系是学院的子类&#xff0c;小的组织继承大…

K8s使用Ceph作为后端存储

Ceph概述 部署Ceph集群 Ceph存储使用 Pod使用Ceph持久化数据 Ceph监控 Rook部署Ceph 1❖ Ceph概述 Ceph介绍 Ceph架构 Ceph核心概念 Ceph介绍 Ceph是一个开源的分布式存储系统&#xff0c;具有高扩展性、高性能、高可靠性等特点&#xff0c;提 供良好的性能、可靠性和可扩展…

ROS与STM32通信-rosserial

文章目录 硬件接线 软件STM32CubeMX配置 rosserial移植上位机订阅-下位机发布上位机订阅下位机发布通信 上位机发布-下位机订阅上位机发布下位机订阅通信 硬件 STM32F103c8t6OLED(I2C)USB2TTLStlink 接线 OLED(GPIO模拟I2C) 硬件引脚OLEDSCLPA4OLEDSDAPA5 USART1 硬件引脚…

CSS3 Flexbox

Flex 是 Flexible Box 的缩写&#xff0c;意为弹性盒子布局。 CSS3中一种新的布局模式&#xff1a;W3C在2009年提出的一种布局方案&#xff0c;一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有恰当的行为的布局方式。其目的是提供一种更加有效的方式来对一个容器…

深度学习入门(二):神经网络整体架构

一、前向传播 作用于每一层的输入&#xff0c;通过逐层计算得到输出结果 二、反向传播 作用于网络输出&#xff0c;通过计算梯度由深到浅更新网络参数 三、整体架构 层次结构&#xff1a;逐层变换数据 神经元&#xff1a;数据量、矩阵大小&#xff08;代表输入特征的数量…

打造完美直播体验:美颜技术与美型SDK的融合

随着直播行业的蓬勃发展&#xff0c;主播们对于直播体验的要求也日益提高。其中&#xff0c;美颜技术和美型SDK的融合为主播们带来了前所未有的完美直播体验。本文将深入探讨美颜技术和美型SDK的原理与应用&#xff0c;以及这两者如何协同工作&#xff0c;为直播行业带来更具吸…

AutoSAR系列讲解(实践篇)10.1-模式管理概述

目录 一、什么是模式管理 二、再谈BswM 1、BswM概述 2、BswM执行流程 三、再谈EcuM 模式管理应该算是我们实践篇中较难的内容了,还有就是诊断那章也比较难。因为模式管理里面可能回涉及到很多的名词,很多的特性,所以博主准 备分

Clion开发stm32之微妙延迟(采用nop指令实现)

前言 需要借助逻辑分析仪动态调整参数此次测试的开发芯片为stm32f103vet6 延迟函数 声明 #define NOP_US_DELAY_MUL_CNT 5 /*nop 微妙延迟需要扩大的倍数(根据实际动态修改)*/ void bsp_us_delay_nop(uint32_t us);void bsp_ms_delay_nop(uint32_t ms);定义 void bsp_us_dela…

【QT 网络云盘客户端】——获取用户文件列表信息

目录 1.获取用户文件列表信息分析 2.设置图标属性 3.向服务器获取文件的数量 4.向服务器获取文件信息列表 4.显示图标 1.获取用户文件列表信息分析 1.将QListWidget设置为图标模式 2. 当我们点击"按下载量升序","按下载量降序",“更新” 菜单选项 都会…

【SQL Server】DBCC CHECKDB只是一个数据库维护命令吗?

日期&#xff1a;2023年7月27日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xf…

python统计mp4/avi视频的时长

目录 介绍导入的库import os:import moviepy.editor as mp:总结 代码 介绍导入的库 当代码中导入了特定的库&#xff0c;它会使得在代码中可以使用该库所提供的功能和工具。以下是导入的两个库及其作用的解释&#xff1a; import os: os&#xff08;Operating System&#x…

JVM简述

JDK&JRE&JVMJVM运行时内存结构图方法区堆区栈区程序计数器本地方法栈 JVM 的主要组成部分及其作用 JDK&JRE&JVM JVM就是java虚拟机&#xff0c;一台虚拟的机器&#xff0c;用来运行java代码 但并不是只有这台机器就可以的&#xff0c;java程序在运行时需要依赖…

Go基准测试Benchmark

Go语言自带了一个强大的测试框架&#xff0c;其中包括基准测试&#xff08;Benchmark&#xff09;功能&#xff0c;基准测试用于测量和评估一段代码的性能。 我们可以通过在Go的测试文件中编写特殊格式的函数来创建基准测试。测试文件的命名遵守原函数名称_test.go 的格式。 基…

sql查询语句大全-详细讲解(格式、示例)

目录 范围查询 BETWEEN...AND in 为空 模糊查询 去重查询 AND OR 排序查询 聚合函数 1.count&#xff1a;计算个数 2.max&#xff1a;计算最大值 3.min&#xff1a;计算最小值 4.sum&#xff1a;计算和 5.avg&#xff1a;计算平均数 分组查询 group by 分组后…

观察者模式、中介者模式和发布订阅模式

观察者模式 定义 观察者模式定义了对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都将得到通知&#xff0c;并自动更新 观察者模式属于行为型模式&#xff0c;行为型模式关注的是对象之间的通讯&#xff0c;观察者模式…

Pytorch(一)

目录 一、基本操作 二、自动求导机制 三、线性回归DEMO 3.1模型的读取与保存 3.2利用GPU训练时 四、常见的Tensor形式 五、Hub模块 一、基本操作 操作代码如下: import torch import numpy as np#创建一个矩阵 x1 torch.empty(5,3)# 随机值 x2 torch.rand(5,3)# 初始化…

NoSQL之Redis配置使用

目录 一、关系数据库与非关系型数据库 1.1.关系型数据库的概述 1.2关系型数据库的优缺点 1.2.1优点 1.2.2缺点 1.3.非关系型数据库的概述 二.关系数据库与非关系型数据库的区别 2.1数据存储方式不同 2.2扩展方式不同 2.3对事务性的支持不同 2.4非关系型数据库产生背景 2…