LeetCode 每日一题 2023/11/13-2023/11/19

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


目录

      • 11/13 307. 区域和检索 - 数组可修改
      • 11/14 1334. 阈值距离内邻居最少的城市
      • 11/15 2656. K 个元素的最大和
      • 11/16 2760. 最长奇偶子数组
      • 11/17 2736. 最大和查询
      • 11/18 2342. 数位和相等数对的最大和
      • 11/19 689. 三个无重叠子数组的最大和


11/13 307. 区域和检索 - 数组可修改

分段处理 对于n个数分为若干块 每块大小size 一共n//size块
初始化统计每块总和
更新index 在index//size块中
取和left在k1中第i个 right在k2中第j个
如果k1=k2 那么就是k1中[i,j]和
否则就是k1的[i,size-1] k2的[j,size-1] 加上k1+1~k2-1的所有块总和
每块大小去更号n

class NumArray(object):def __init__(self, nums):""":type nums: List[int]"""self.nums = numsn = len(nums)self.size = int(n**0.5)self.sums = [0]*((n+self.size-1)//self.size)for index,num in enumerate(nums):self.sums[index//self.size] += numdef update(self, index, val):""":type index: int:type val: int:rtype: None"""self.sums[index//self.size]+= val-self.nums[index]self.nums[index] = valdef sumRange(self, left, right):""":type left: int:type right: int:rtype: int"""s = self.sizek1,k2 = left//s,right//sif k1==k2:return sum(self.nums[left:right+1])else:return sum(self.nums[left:(k1+1)*s])+sum(self.sums[k1+1:k2])+sum(self.nums[k2*s:right+1])

11/14 1334. 阈值距离内邻居最少的城市

依次判断

def findTheCity(n, edges, distanceThreshold):""":type n: int:type edges: List[List[int]]:type distanceThreshold: int:rtype: int"""w = [[float('inf')]*n for _ in range(n)]for x,y,ed in edges:w[x][y]=w[y][x]=edf=wfor k in range(n):for i in range(n):for j in range(n):f[i][j] = min(f[i][j],f[i][k]+f[k][j])ans = 0mincnt = float('inf')for i in range(n):cnt = 0for j in range(n):if j!=i and f[i][j]<=distanceThreshold:cnt+=1if cnt<=mincnt:mincnt=cntans = ireturn ans

11/15 2656. K 个元素的最大和

只需要选择最大的数进行操作

def maximizeSum(nums, k):""":type nums: List[int]:type k: int:rtype: int"""v = max(nums)return v*k+(1+k-1)*(k-1)//2

11/16 2760. 最长奇偶子数组

从后往前判断 cur记录当前最长子数组
如果遇到大于threshold则0开始
如果遇到奇偶相同则从1开始

def longestAlternatingSubarray(nums, threshold):""":type nums: List[int]:type threshold: int:rtype: int"""ans=cur=0for i in range(len(nums)-1,-1,-1):if nums[i]>threshold:cur=0elif i==len(nums)-1 or (nums[i]+nums[i+1])%2==1:cur+=1else:cur=1if nums[i]%2==0:ans=max(ans,cur)return ans

11/17 2736. 最大和查询

将两个数组合并为一个
先按nums1从大到小 再按nums2从大到小
逐一处理查询

def maximumSumQueries(nums1, nums2, queries):""":type nums1: List[int]:type nums2: List[int]:type queries: List[List[int]]:rtype: List[int]"""import bisectans = [-1]*len(queries)l = sorted([(a,b) for a,b in zip(nums1,nums2)],key=lambda x:-x[0])st = []j=0for i,(x,y) in sorted(enumerate(queries),key=lambda x:-x[1][0]):while j<len(l) and l[j][0]>=x:xx,yy=l[j]while st and st[-1][1]<=xx+yy:st.pop()if not st or st[-1][0]<yy:st.append((yy,xx+yy))j+=1p = bisect.bisect_left(st,(y,))if p<len(st):ans[i] = st[p][1]return ans

11/18 2342. 数位和相等数对的最大和

遍历求出各个数的数位和 记录所有数位和最大的数

def maximumSum(nums):""":type nums: List[int]:rtype: int"""m={}def check(num):ans = 0while num:ans += num%10num //=10return ansans = -1for num in nums:v = check(num)if v in m:ans = max(ans,m[v]+num)m[v] = max(m.get(v,0),num)return ans

11/19 689. 三个无重叠子数组的最大和

从左到右三个滑动窗口
sum1,sum2,sum3分别记录当前三个滑动窗口各自的和
maxs1为第一个滑动窗口最大值
maxs2为前两个滑动窗口最大值
maxs3为三个滑动窗口最大值
maxs1loc为第一个滑动窗口最大值的起始位置
maxs2loc为前两个滑动窗口最大值的起始位置
maxs3loc及我们需要的答案ans

def maxSumOfThreeSubarrays(nums, k):""":type nums: List[int]:type k: int:rtype: List[int]"""ans = []sum1,maxs1,maxs1loc = 0,0,0sum2,maxs2,maxs2loc = 0,0,()sum3,maxs3 = 0,0n = len(nums)for i in range(k*2,n):sum1+=nums[i-k*2]sum2+=nums[i-k]sum3+=nums[i]if i>=k*3-1:if sum1>maxs1:maxs1=sum1maxs1loc = i-k*3+1if maxs1+sum2>maxs2:maxs2=maxs1+sum2maxs2loc = (maxs1loc,i-k*2+1)if maxs2+sum3>maxs3:maxs3 = maxs2+sum3ans = [maxs2loc[0],maxs2loc[1],i-k+1]sum1-=nums[i-k*3+1]sum2-=nums[i-k*2+1]sum3-=nums[i-k+1]return ans

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

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

相关文章

【Python入门教程】OpenCV在图片/视频上添加Logo(水印)

还是老样子&#xff0c;最近项目需要在视频上添加logo&#xff0c;所以就找了一下相关资料&#xff0c;然后写了一段代码&#xff0c;今天给大家分享一下如何使用Python的OpenCV库给图片或视频添加水印和logo。 一、导入库 OpenCV库导入的时候是cv2 import cv2 二、代码部分 …

BigDecimal的常见陷阱

文章目录 BigDecimal概述BigDecimal常见陷阱1.使用BigDecimal的构造函数传入浮点数2.使用equals()方法进行数值比较3.使用不正确的舍入模式 总结&#xff1a; BigDecimal概述 BigDecimal 是 Java 中的一个类&#xff0c;用于精确表示和操作任意精度的十进制数。它提供了高精度的…

UE 材质,如何只取0~1之间的值,其余值抛弃

假如0~1&#xff0c;floor为0&#xff0c;abs为0&#xff0c;Saturate为0&#xff0c;1-x为1&#xff0c;很好 假如1~2&#xff0c;floor为1&#xff0c;abs为1&#xff0c;Saturate为1&#xff0c;1-x为0&#xff0c;很好 假如2~3&#xff0c;floor为2&#xff0c;abs为2&am…

软件测试/人工智能丨引领未来:软件测试中的人工智能

在数字化潮流的推动下&#xff0c;软件测试领域正在经历一场革命性的变革&#xff0c;而这场变革的关键推手正是人工智能&#xff08;AI&#xff09;。AI的引入不仅加速了测试过程&#xff0c;而且赋予了测试领域新的可能性&#xff0c;将我们带入了一个前所未有的未来。 智能…

【MySQL--->用户管理】

文章目录 [TOC](文章目录) 一、用户管理表二、基本操作三、用户权限分配给用户某个数据库中某个表的某个权限. grant 权限 on 库.表名 to 用户名主机名. ![在这里插入图片描述](https://img-blog.csdnimg.cn/fe8eb171ef9343c3a09bd64d4f0db5c1.png)分配给用户某个数据库中全部表…

Golang CSV Reader

导言 CSV&#xff08;逗号分隔值&#xff09;是一种常见的文件格式&#xff0c;用于存储和交换数据。它简单易用&#xff0c;具有广泛的应用场景&#xff0c;因此在处理和解析 CSV 文件时需要一个高效和可靠的方法。Golang 提供了一个强大的 CSV Reader 库&#xff0c;可以简化…

13.Oracle通过JDBC连接Java

Oracle通过JDBC连接Java 一、什么是JDBC二、Oracle通过JDBC连接Java1、导入jar包1.1 下载jar包1.2 将jar包导入到java项目中1.3编译jar包 2、连接数据库2.1 编写jdbc工具类2.2 对数据进行基本操作 一、什么是JDBC JDBC&#xff08;Java Database Connectivity&#xff09;是Jav…

微波功率计/频率计-87234系列USB峰值/平均功率计

仪器仪表 苏州新利通 87234系列 USB峰值/平均功率计 频率范围覆盖&#xff1a;50MHz&#xff5e;67GHz 一款基于USB 2.0接口的二极管检波式宽带功率测量仪器 国产思仪功率计 01 产品综述 87234D/E/F/L USB峰值/平均功率计是一款基于USB 2.0接口的二极管检波式宽带功率测…

PowerShell无人参与安装最新版本SQL Server Management Studio (SSMS)

文章目录 下载SQL Server Management Studio (SSMS)Power Shell实现无人安装推荐阅读 下载SQL Server Management Studio (SSMS) SSMS 19.2 是最新的正式发布 (GA) 版本。 如果已经安装了 SSMS 19 预览版&#xff0c;需要在安装 SSMS 19.2 之前将其卸载。 如果安装了 SSMS 19.…

负载均衡Ribbon和Feign的使用与区别

Ribbon 的介绍 Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端负载均衡的工具。主要功能是提供客户端的软件负载均衡和服务调用。Ribbon 客户端组件提供一系列完善的配置项如连接超时&#xff0c;重试等。简单的说&#xff0c;就是在配置文件中列出Load Balancer…

Spring中用了哪些设计模式

一.简单工厂模式 又叫做静态工厂方法&#xff08;StaticFactory Method&#xff09;模式&#xff0c;但不属于23种GOF设计模式之一。 简单工厂模式的实质是由一个工厂类根据传入的参数&#xff0c;动态决定应该创建哪一个产品类。 spring中的BeanFactory就是简单工厂模式的体现…

JVM基础- 垃圾回收器

基本介绍 Java虚拟机&#xff08;JVM&#xff09;中的垃圾回收器是用来自动管理内存的关键组件。它负责识别并回收不再使用的内存&#xff0c;从而防止内存泄漏。不同的JVM实现提供了多种垃圾回收器&#xff0c;每种回收器都有其特定的使用场景和性能特点。以下是一些常见的JV…

C++ 正则表达式使用

C 11 以后有了正则表达式,对于处理字符串还是很方便的.由于我也再学习.所以下面的内容有可能描述的不准确,这些都是我自己代码中使用的,或者demo测试的. 首先使用正则表达式先要添加头文件 #include <regex> 然后编写自己的正则表达式: 例如我想匹配字符串中表示数字…

【用unity实现100个游戏之16】Unity程序化生成随机2D地牢游戏2(附项目源码)

文章目录 先看看最终效果前言生成走廊生成房间修复死胡同增加走廊宽度获取走廊位置信息集合方法一方法二 源码完结 先看看最终效果 前言 上期已经实现了房间的生成&#xff0c;本期紧跟着上期内容&#xff0c;生成走廊并结合上期内容生成连通的房间。 生成走廊 修改Procedur…

【配置】Redis常用配置详解

文章目录 IP地址绑定设置密码 IP地址绑定 默认情况下&#xff0c;如果未指定 “bind” 配置指令&#xff0c;Redis 将监听服务器上所有可用的网络接口的连接。 可以使用 “bind” 配置指令来仅监听一个或多个选定的接口&#xff0c;后跟一个或多个 IP 地址 示例&#xff1a;bin…

集成多元算法,打造高效字面文本相似度计算与匹配搜索解决方案,助力文本匹配冷启动[BM25、词向量、SimHash、Tfidf、SequenceMatcher]

搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术…

zabbix的安装配置,邮件告警,钉钉告警

zabbix监控架构 zabbix优点 开源&#xff0c;无软件成本投入server对设备性能要求低支持设备多&#xff0c;自带多种监控模板支持分布式集中管理&#xff0c;有自动发现功能&#xff0c;可以实现自动化监控开放式接口&#xff0c;扩展性强&#xff0c;插件编写容易当监控的item…

力扣C++学习笔记——C++ 给vector去重

要使用std::set对std::vector进行去重操作&#xff0c;您可以将向量中的元素插入到集合中&#xff0c;因为std::set会自动去除重复元素。然后&#xff0c;您可以将集合中的元素重新存回向量中。以下是一个示例代码&#xff0c;演示如何使用std::set对std::vector进行去重&#…

一次性拉取所有远程仓库分支到本地并推送到另外一个仓库

拉取所有远程仓库分支到本地并推送到另外一个仓库 # 克隆仓库 git clone old_ssh_registry# 拉取仓库所有分支到本地&#xff0c;并创建本地分支 git branch -r | grep -v \-> | while read remote; do git branch --track "${remote#origin/}" "$remote&quo…

Linux系统编程 系统编程概念

1.系统调用 系统调用&#xff08;system call&#xff09;其实是 Linux 内核提供给应用层的应用编程接口&#xff08;API&#xff09;&#xff0c;是 Linux 应用层进入内核的入口。不止 Linux 系统&#xff0c;所有的操作系统都会向应用层提供系统调用&#xff0c;应用程序通过…