[LeetCode周赛复盘] 第 107 场双周赛20230624

[LeetCode周赛复盘] 第 107 场双周赛20230624

    • 一、本周周赛总结
    • 6898. 字符串连接删减字母
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 6895. 构造最长的新字符串
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 6898. 字符串连接删减字母
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 6468. 统计没有收到请求的服务器数目
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 参考链接

一、本周周赛总结

  • T1 哈希表模拟。
  • T2 记忆化搜索。
  • T3 dp。
  • T4 离线+滑窗。
    在这里插入图片描述

6898. 字符串连接删减字母

6898. 字符串连接删减字母

1. 题目描述

在这里插入图片描述

2. 思路分析

按题意模拟即可。

  • 注意每个单词只能匹配一次,记得删除。

3. 代码实现

class Solution:
    def maximumNumberOfStringPairs(self, words: List[str]) -> int:
        p = set()
        ans = 0
        for w in words:
            s = w[::-1]
            if s in p:
                ans += 1
                p.remove(s)
            else:
                p.add(w)
        return ans 

6895. 构造最长的新字符串

6895. 构造最长的新字符串

1. 题目描述

在这里插入图片描述

2. 思路分析

记忆化搜索
  • 令f(x,y,z,last)为用xyz个对应串,构造尾巴为last=a/b字符的最长串长度。
  • 那么若last='a’则只能用x,可以从f(x-1,y,z,last=‘b’)转移而来,若转移不了,则可以只用一个x,最山是2;
  • 若last=‘b’则可以用y/z,同理从对应尾字符转移而来。

3. 代码实现

class Solution:
    def longestString(self, x: int, y: int, z: int) -> int:

        @cache
        def f(x, y, z, last):                         
            ans = -inf
            if last == 'a':                
                if x > 0 :
                    ans = max(ans,f(x-1,y,z,'b')+2,2)
            elif last == 'b':                
                if y>0:
                    ans = max(ans,f(x,y-1,z,'a')+2,2)
                if z>0:
                    ans = max(ans,f(x,y,z-1,'b')+2,2)
            
            return ans 
          
        return max(f(x,y,z,'a'),f(x,y,z,'b'))

6898. 字符串连接删减字母

6898. 字符串连接删减字母

1. 题目描述

在这里插入图片描述

2. 思路分析

  • dp。
  • 由于连接顺序是固定的,影响只在之前串的首尾字符,那么可以记录每次转移完,首尾字符分别为x,y时的最小长度,然后进行分类讨论。
  • 令f[i][(x,y)]为用了前i个字符串,首尾分别为xy时最小长度。
  • 转移时,尝试把当前串s和前边所有串进行连接。
  • 由于只有小写字符,因此状态数最多26*26,转移1000次即可。

  • 实现时图方便用了defaultdict,并且可以滚动省去一维。

3. 代码实现

class Solution:
    def minimizeConcatenatedLength(self, words: List[str]) -> int:
        n = len(words)
        f = defaultdict(lambda : inf)
        a = words[0]
        f[(a[0],a[-1])] = len(a)
        
        for i in range(1,n):
            a = words[i]
            p = len(a)
            g = defaultdict(lambda : inf)
            for (s,e),v in f.items():
                if a[0] == e:
                    g[(s,a[-1])] = min(g[(s,a[-1])], v+p-1)
                else:
                    g[(s,a[-1])] = min(g[(s,a[-1])], v+p)
                if a[-1] == s:
                    g[(a[0],e)] = min(g[(a[0],e)],v+p-1)
                else:
                    g[(a[0],e)] = min(g[(a[0],e)],v+p)
            f = g
        return min(f.values())

6468. 统计没有收到请求的服务器数目

6468. 统计没有收到请求的服务器数目

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 离线+滑窗。
  • 读题愣了一下,logs这个变量名也有点坑人。敲成了log运行,但是白板不报错,RE 3次。
  • 发现把询问离线,把事件排序,然后用cnt记录窗口内每个服务器的出现次数即可。
  • 然后用n减去出现了几个服务器就是没出现的个数。

3. 代码实现

class Solution:
    def countServers(self, n: int, logs: List[List[int]], x: int, queries: List[int]) -> List[int]:
        m = len(queries)
        ans = [0]*m
        j = 0
        logs.sort(key=lambda xx:xx[1])
        q = deque()
        cnt = Counter()
        for v,i in sorted([(v,i) for i,v in enumerate(queries)] ):
            while j < len(logs) and logs[j][1] <= v:
                q.append(j)
                cnt[logs[j][0]] += 1
                j += 1
            while q and logs[q[0]][1]<v-x:
                p = logs[q.popleft()][0]
                cnt[p] -= 1
                if not cnt[p]:
                    del cnt[p]
            ans[i] = n - len(cnt)
        return ans                                    

参考链接

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Consul 理解

Consul是google开源的一个使用go语言开发的服务发现、配置管理中心服务。内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案&#xff0c;不再需要依赖其他工具&#xff08;比如ZooKeeper等&#xff09;。服务部署简单&#xff0c;只有一…

(转载)支持向量机(support vector machine, SVM)的分类(matlab实现)

支持向量机(support vector machine,SVM)是一种新的机器学习方法&#xff0c;其基础是Vapnik 创建的统计学习理论(statistical learning theory,STL)。统计学习理论采用结构风险最小化(structural risk minimization,SRM)准则&#xff0c;在最小化样本点误差的同时&#xff0c;…

HTML点击显示、点击隐藏details 标签

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body><details> <summary>Copyright 1999-2011.</summary> <p> - by Refsnes Da…

Redis数据类型

Redis数据类型 一、String数据类型1、概述2、实验 二、List数据类型1、概述2、实验 三、Hash数据类型&#xff08;散列类型&#xff09;1、概述2、实验 四、Set数据类型&#xff08;无序集合&#xff09;1、概述2、应用范围3、实验 五、Sorted Set数据类型&#xff08;zset、有…

JAVA开发与运维(怎么通过docker部署微服务jar包)

目标&#xff1a; 通过docker的方式部署微服务。 一、背景&#xff1a; 我们通过java开发的微服务可以打成jar包&#xff0c;我们可以直接通过裸机部署&#xff0c;也可以通过docker来部署&#xff0c;本文介绍通过docker来部署微服务。 二、首先我们介绍一下docker的发展过程…

2022 年第十二届 MathorCup 高校数学建模挑战赛D题思路(移动通信网络站址规划和区域聚类问题)

目录 一、前言 二、问题背景 三、问题 四、解题思路 &#xff08;1&#xff09;针对问题1&#xff1a; &#xff08;2&#xff09;针对问题2&#xff1a; &#xff08;3&#xff09;针对问题3&#xff1a; 五、附上几个典型代码 &#xff08;1&#xff09;K-means算法…

【HTTP 协议】掌握 Web 的核心技术

哈喽&#xff0c;大家好~我是你们的老朋友&#xff1a;保护小周ღ 谈起 HTTP 协议&#xff08;超文本传输协议&#xff09;&#xff0c;不知道大家第一次是从什么地方了解到这个协议的呢&#xff1f;在真实的网络环境中网络协议的种类非常多&#xff0c;其中有一些耳熟能详的…

深入解析大型语言模型:从训练到部署大模型

简介 随着数据科学领域的深入发展&#xff0c;大型语言模型—这种能够处理和生成复杂自然语言的精密人工智能系统—逐渐引发了更大的关注。 LLMs是自然语言处理&#xff08;NLP&#xff09;中最令人瞩目的突破之一。这些模型有潜力彻底改变从客服到科学研究等各种行业&#x…

SpringSecurity实现Remember-Me实践

【1】基于会话技术的实现 也就是基于Cookie的实现&#xff0c;用户信息通过某种规则进行加密然后生成一个字符串设置为cookie。 ① 登录页面 这里name"remember-me"表示“记住我”的复选框&#xff0c;默认key是remember-me。 <form action"/user/login&…

EasyCVR电子地图鼠标悬停展示经纬度的技术实现

EasyCVR可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等&#xff0c;以及厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等&#xff0c;能对外分发RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。平台可…

VS2019 Python连接Sql server2008

安好后&#xff1a; 测试代码&#xff1a; import pymssqltry:conn pymssql.connect(host127.0.0.1,usersa,password123456,databasehotel,charsetutf8)# 连接并执行Sql语句cursor conn.cursor()sql select * from odercursor.execute(sql)# 获取数据集rs cursor.fetchal…

从操作系统角度了解内存管理

一.内存管理 1.主要功能 内存管理的主要功能有: 内存空间的分配与回收。由操作系统完成主存储器空间的分配和管理&#xff0c;使程序员摆脱存储分配的麻烦&#xff0c;提高编程效率。地址转换。在多道程序环境下&#xff0c;程序中的逻辑地址与内存中的物理地址不可能一致, …

React--Component组件浅析

目录 一 前言二 什么是React组件&#xff1f;三 二种不同 React 组件1 class类组件2 函数组件 四 组件通信方式五 组件的强化方式六 总结 一 前言 在 React 世界里&#xff0c;一切皆组件&#xff0c;我们写的 React 项目全部起源于组件。组件可以分为两类&#xff0c;一类是类…

Redis---集群

目录 一、集群的介绍 1.1 为什么需要集群呢&#xff1f; 1.2 什么是集群&#xff1f; 1.2 集群能干什么呢&#xff1f; 二、集群的算法之分片&槽位slot 2.1 什么是槽位slot&#xff1f; 2.2 分片 2.3 使用槽位和分片的优势 2.4 slot 槽位映射的三种算法 1、哈…

《深入浅出WPF》学习笔记

文章目录 相关资源前言WPF 学习笔记环境配置WPF基础&#xff1a;一个WPF程序是如何启动的xmal文件和cs文件是如何连接的如何确定启动页面xmal文件如何引用别的文件如何引用 WPF是如何创建元素&#xff0c;改变元素的WPF的元素创建和简单属性赋值WPF的树形界面Xmal属性赋值为什么…

内网安全:代理技术详解

目录 代理技术实验所用网络拓扑图及说明 代理技术 SOCK协议 使用代理技术的原因 正向代理与反向代理 实战一&#xff1a;MSF代理通讯 实验原理说明 一. Meterpreter建立路由 二. MSF建立节点 三. 建立代理到MSF上 实战二&#xff1a;CS代理通讯 实验原理说明 一. …

【MYSQL篇】Update语句原理详解

文章目录 前言缓冲池Buffer PoolInnoDB 内存结构redo logundo logBinlog 总结 前言 前面的文章我们已经对MySQL的查询语句的执行流程进行了说明&#xff0c;感兴趣的可以去看看&#xff1a; 【MySQL篇】Select语句原理详解 本篇文章我们来聊聊 MySQL更新语句的执行原理。更新…

从0到1精通自动化测试,pytest自动化测试框架,doctest测试框架(十四)

一、前言 doctest从字面意思上看&#xff0c;那就是文档测试。doctest是python里面自带的一个模块&#xff0c;它实际上是单元测试的一种。 官方解释&#xff1a;doctest 模块会搜索那些看起来像交互式会话的 Python 代码片段&#xff0c;然后尝试执行并验证结果 doctest测试…

spring mvc架构模式概述

三层架构: pojo&#xff0c;bean&#xff0c;domain是一个意思&#xff0c;表示实体类 dao表示操作数据库的那个类&#xff0c;一般是一张表一个

Redis主从架构、数据同步原理、全量同步、增量同步

目录 专栏导读一、Redis主从架构二、数据同步原理三、全量同步的流程三、可以从以下几个方面来优化Redis主从就集群四、全量同步和增量同步区别&#xff1f;五、什么时候执行全量同步&#xff1f;六、什么时候执行增量同步&#xff1f;七、超卖问题 大家好&#xff0c;我是哪吒…