力扣双周赛49(2021-04-03)解题分享

310.最小高度树 对于一个具有树特征的无向图,我们可选择任何一个节点作为根。图因此可以成为树,在所有可能的树中,具有最小高度的树被称为最小高度树。给出这样的一个图,写出一个函数找到所有的最小高度树并返回他们的根节点。 格式 该图包含 n 个节点,标记为 0 到 n - 1。给定数字 n 和一个无向边 edges 列表(每一个边都是一对标签)。 你可以假设没有重复的边会出现在 edges 中。由于所有的边都是无... 阅读详情

5722. 截断句子

https://leetcode-cn.com/problems/truncate-sentence/

难度:简单

题目:

句子 是一个单词列表,列表中的单词之间用单个空格隔开,且不存在前导或尾随空格。每个单词仅由大小写英文字母组成(不含标点符号)。

例如,"Hello World"、"HELLO" 和 "hello world hello world" 都是句子。
给你一个句子 s 和一个整数 k ,请你将 s 截断 ,使截断后的句子仅含 前 k个单词。返回 截断 s 后得到的句子。

示例:

示例 1:

输入:s = "Hello how are you Contestant", k = 4

输出:"Hello how are you"

解释:
s 中的单词为 ["Hello", "how" "are", "you", "Contestant"]
前 4 个单词为 ["Hello", "how", "are", "you"]
因此,应当返回 "Hello how are you"

示例 2:

输入:s = "What is the solution to this problem", k = 4

输出:"What is the solution"

解释:
s 中的单词为 ["What", "is" "the", "solution", "to", "this", "problem"]
前 4 个单词为 ["What", "is", "the", "solution"]
因此,应当返回 "What is the solution"

示例 3:

输入:s = "chopper is not a tanuki", k = 5

输出:"chopper is not a tanuki"

分析

这种字符串截断的问题,就是python的最爱!

解题:

class Solution:
    def truncateSentence(self, s, k):
        list_s = s.split()
        return ' '.join(list_s[:min(k, len(list_s))])

5723. 查找用户活跃分钟数

https://leetcode-cn.com/problems/finding-the-users-active-minutes/

难度:中等

题目:

给你用户在 LeetCode 的操作日志,和一个整数 k 。日志用一个二维整数数组 logs 表示,其中每个 logs[i] = [IDi, timei] 表示 ID 为 IDi 的用户在 timei 分钟时执行了某个操作。

多个用户 可以同时执行操作,单个用户可以在同一分钟内执行 多个操作 。

指定用户的 用户活跃分钟数(user active minutes,UAM) 定义为用户对 LeetCode 执行操作的 唯一分钟数 。 即使一分钟内执行多个操作,也只能按一分钟计数。

请你统计用户活跃分钟数的分布情况,统计结果是一个长度为 k 且 下标从 1 开始计数 的数组 answer ,对于每个 j(1 <= j <= k),answer[j] 表示 用户活跃分钟数 等于 j 的用户数。

返回上面描述的答案数组 answer 。

示例:

示例 1:

输入:logs = [[0,5],[1,2],[0,2],[0,5],[1,3]], k = 5

输出:[0,2,0,0,0]

解释:
ID=0 的用户执行操作的分钟分别是:5 、2 和 5 。因此,该用户的用户活跃分钟数为 2(分钟 5 只计数一次)
ID=1 的用户执行操作的分钟分别是:2 和 3 。因此,该用户的用户活跃分钟数为 2
2 个用户的用户活跃分钟数都是 2 ,answer[2] 为 2 ,其余 answer[j] 的值都是 0

示例 2:

输入:logs = [[1,1],[2,2],[2,3]], k = 4

输出:[1,1,0,0]

解释:
ID=1 的用户仅在分钟 1 执行单个操作。因此,该用户的用户活跃分钟数为 1
ID=2 的用户执行操作的分钟分别是:2 和 3 。因此,该用户的用户活跃分钟数为 2
1 个用户的用户活跃分钟数是 1 ,1 个用户的用户活跃分钟数是 2
因此,answer[1] = 1 ,answer[2] = 1 ,其余的值都是 0

分析

题目解释稍微有点绕,但仔细看会比较好理解。

  1. 首先创建一个长度为K的全零列表ret.
  2. 维护一个哈希表,其中每个value值使用集合的数据类型。
  3. 遍历logs,查找到所有以用户id为key,且该用户活跃在不重复的分钟数内的set集合
  4. 循环检索哈希表的values值,将每个values值得长度+1作为ret的index执行+=1的操作即可
  5. 这里注意由于分钟数是以1位开头的,所有len(values)需要-1

解题:

class Solution:
    def findingUsersActiveMinutes(self, logs, k):
        ret = [0 for _ in range(k)]
        d = {}
        for i in logs:
            id, time = i
            if id not in d:
                d[id] = {time, }
            else:
                d[id].add(time)
        for j in d.values():
            count = len(j)
            if count <= k:
                ret[count - 1] += 1
        return ret

5706. 句子相似性 III

https://leetcode-cn.com/problems/sentence-similarity-iii/

难度:中等

题目:

一个句子是由一些单词与它们之间的单个空格组成,且句子的开头和结尾没有多余空格。比方说,"Hello World","HELLO",
"hello world hello world"都是句子。每个单词都 只包含大写和小写英文字母。

如果两个句子sentence1 和sentence2,可以通过往其中一个句子插入一个任意的句子(可以是空句子)而得到另一个句子,
那么我们称这两个句子是 相似的。比方说,sentence1 = "Hello my name is Jane" 且sentence2 = "Hello Jane",
我们可以往 sentence2中"Hello" 和"Jane"之间插入"my name is"得到 sentence1。

给你两个句子sentence1 和sentence2,如果sentence1 和sentence2 是相似的,请你返回true,否则返回false。

示例:

示例 1:

输入:sentence1 = "My name is Haley", sentence2 = "My Haley"

输出:true

解释:可以往 sentence2 中 "My" 和 "Haley" 之间插入 "name is" ,得到 sentence1 。

示例 2:

输入:sentence1 = "of", sentence2 = "A lot of words"

输出:false

解释:没法往这两个句子中的一个句子只插入一个句子就得到另一个句子。

示例 3:

输入:sentence1 = "Eating right now", sentence2 = "Eating"

输出:true

解释:可以往 sentence2 的结尾插入 "right now" 得到 sentence1 。

示例 4:

输入:sentence1 = "Luky", sentence2 = "Lucccky"

输出:false

分析

比赛的时候虽然通过了,但写了一堆if else的逻辑没有好好考虑场景。

晚上又画图仔细分析了下,感觉当时想太多了,就只有三种情况而已...

  1. 左匹配 左指针移动的总和 等于 被比较的数字
  2. 右匹配 右指针移动的总和 等于 被比较的数字
  3. 两端匹配 两端指针移动的总和 等于 被比较的数字

解题:

class Solution:
    def areSentencesSimilar(self, sentence1, sentence2):
        # 判断base与compare,base为总长句子,compare为待插入的句子
        base, comp = sentence1.split(), sentence2.split()
        if len(base) < len(comp):
            base, comp = comp, base
        # 先判断做匹配
        i = 0
        while i < len(comp) and base[i] == comp[i]:
            i += 1
        if i == len(comp):
            return True
        # 再判断右匹配
        j = 0
        while j >= 0 and base[len(base) - j - 1] == comp[len(comp) - j - 1]:
            j += 1
        # 同时判断两端匹配
        if j == len(comp) or i + j == len(comp):
            return True
        # 其他场景都是错误的
        return False

欢迎关注我的公众号: 清风Python,带你每日学习Python算法刷题的同时,了解更多python小知识。

有喜欢力扣刷题的小伙伴可以加我微信(King_Uranus)互相鼓励,共同进步,一起玩转超级码力!

我的个人博客:https://qingfengpython.cn

力扣解题合集:https://github.com/BreezePython/AlgorithmMarkdown

给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。 阅读详情

相关推荐

给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格

题目描述 给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello” 输入描述: 输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符) 输出描述: 对于每个测试示例,要求输出句子中单词反转后形成的句子

LeetCode2114句子中的最多单词数

题目: 一个 句子 由一些 单词 以及它们之间的单个空格组成,句子的开头和结尾不会有多余空格。 给你一个字符串数组 sentences ,其中 sentences[i] 表示单个 句子 。 请你返回单个句子里 单词的最多数目 。 解析: 题目很简单,需要计量句子中最多的单词数,只需要计量句子中空格的数量,句子中空格的数量+1就等于句子中所有单词的数量。 *找到句子中空格的数量我们可以使用c++中的count函数 代码: class Solution { public:

zjsru_Beginner的博客 551

金融波动预测:GARCH模型实战解析与ARIMA对比

本文深入解析GARCH模型在金融波动预测中的实战应用,并与传统ARIMA模型进行对比。通过沪深300指数日收益率数据的案例分析,展示GARCH模型如何有效捕捉波动聚集效应,提升极端波动预测准确率。文章包含Python代码实现、参数解读及模型选择指南,为量化交易者提供实用的波动率建模解决方案。

weixin_29098367的博客 192

LeetCode——1813. 句子相似性 III(Sentence Similarity III)[中等]——分析及代码(Java)

LeetCode——1813. 句子相似性 III[Sentence Similarity III][中等]——分析及代码[Java]一、题目二、分析及代码1. 双指针(1)思路(2)代码(3)结果三、其他 一、题目 一个句子是由一些单词与它们之间的单个空格组成,且句子的开头和结尾没有多余空格。比方说,“Hello World” ,“HELLO” ,“hello world hello world” 都是句子。每个单词都 只 包含大写和小写英文字母。 如果两个句子 sentence1 和 sentence2

江南土豆的博客 498

为什么BGA焊点总在四个角先坏?一次热-振耦合仿真给你讲明白

本文通过Ansys Workbench进行热-振耦合仿真,深入分析了BGA焊点在四个角点先失效的机理。研究发现,角点焊点由于CTE失配、振动载荷放大及几何应力集中等因素,承受的等效塑性应变和动态应力显著高于中心区域,导致其疲劳寿命大幅降低。仿真数据揭示了角点焊点的应力分布和蠕变特性,为电子封装可靠性设计提供了重要依据。

weixin_42535461的博客 439

python爬取淘宝数据

python爬取淘宝数据淘宝评论 淘宝评论 打开淘宝,选择打开需要爬取的商品的评论。在谷歌浏览器选择开发者工具,选择network,找到list_detail_rate.htm?itemId=624466733121,点击headers、previews,可以看见相应的评论数据。 爬取一页屏评论代码如下 import re import requests headers = { 'Referer': '在headers中', 'User-Agent': '在

qq_36333776的博客 5800

LeetCode1813:句子相似性 III

思路与见解

bigBbug的博客 242

探索Python融合地学:一文解决osgeo库安装失败问题

总结一下,要安装osgeo模块,关键在GDAL依赖库的安装,如果能够顺利安装GDAL依赖库,因其是osego的模块,因此osgeo的部分模块也能够得到自动安装,此时再运行代码,发现代码并不报错,能够正常运行了。第一步,我们要安装imagecodecs库,它支持多种常见的图像格式,当然也包含我们的目标tif格式,为方便后续的图像处理和安装osgeo模块,先安装此库。目前GDAL已经更新到了3.10版本,这里主要看你的Python版本是上面,小编用的是Python3.13,电脑是64位的,因此,我们选择。

Promising_GEO的博客 5464

5722. 截断句子

句子是一个单词列表,列表中的单词之间用单个空格隔开,且不存在前导或尾随空格。每个单词仅由大小写英文字母组成(不含标点符号)。 例如,"Hello World"、"HELLO"和"hello world hello world"都是句子。 给你一个句子s​​​​​​ 和一个整数k​​​​​​ ,请你将s​​截断​,​​​使截断后的句子仅含前k​​​​​​ 个单词。返回截断s​​​​​​后得到的句子。 示例 1: 输入:s = "Hello how are you Co...

allway2的博客 360

slew dreate,slew threshold与transition计算

​只看rise情况下,from pin取slew threshold10%-90%的区间,slew derate为1,计算得到transition为1.002e-10,to pin的slew threshold 为30%-70%,slew derate 0.5,从波形列表上取相近的值3.75e-10和8.75e-10,计算得到transition为(8.75e-10-3.75e-10)/0.5=1e-9,考虑精度和取值区间问题,基本符合工具计算的值,如下:​。如下示例,在.lib库中有定义以下内容。

m0_61544122的博客 796

Oracle EBS R12 AR 标准发票 核心表结构

​ Oracle EBS R12 AR 标准发票 核心表结构 聚焦手动标准发票 (Standard Invoice),按头→行→分配→税→收款计划→会计分录→历史分层,标注主键、外键、关键字段、业务含义,同时说明表间关联关系,适配开发 / 运维 / 数据核对场景。 一、主数据层(发票头 + 行,核心业务表) 1. RA_CUSTOMER_TRX_ALL 【发票头表】 作用:存储整张发票头部信息,一张发票对应一条记录,AR 发票主表。 主键:CUSTOMER_TRX_ID (唯一 ID,系统内部键) 业

金牌架构师 286

leetcode 1813. 句子相似性 III【python3双指针的实现思路及过程整理】

leetcode 1813笔记

闯入网络安全的数据分析小白 512

最强AI插件Augment,适配idea、vscode,对标cursor!

Augment是一款新兴的AI辅助编码工具,能够无缝集成到IDEA和VS Code等主流IDE中,直接对标专业AI编码工具Cursor。其核心优势包括多IDE适配、无缝集成、代码理解与生成以及对话式编程体验。Augment通过插件形式保留原IDE功能和快捷键习惯,降低学习成本,同时提供深度理解项目上下文和生成高质量代码的能力。此外,Augment还具备审查变更、检查点、代理与代理自动等核心功能,支持从简单配置更改到复杂功能实现的各种开发任务。Augment代表了AI辅助编程工具的新方向,通过增强开发者熟悉的

todoitbo的博客 1万+

【LeetCode每日一题:1813. 句子相似性 III~~~双指针】

【LeetCode每日一题:1813. 句子相似性 III~~~双指针】一个句子是由一些单词与它们之间的单个空格组成,且句子的开头和结尾没有多余空格。比方说,"Hello World" ,"HELLO" ,"hello world hello world" 都是句子。每个单词都 只 包含大写和小写英文字母。 如果两个句子 sentence1 和 sentence2 ,可以通过往其中一个句子插入一个任意的句子(可以是空句子)而得到另一个句子,那么我们称这两个句子是 相似的 。比方说,sentence1 =

Coder_ljw的博客 313

Multi-Agent

Multi-Agent System(MAS,多代理系统)是分布式人工智能(DAI)领域皇冠上的明珠,其核心思想是通过多个自主、交互、目标导向的智能体(Agent)的协同与竞争,解决单智能体无法或难以高效处理的复杂问题——包括大规模资源调度、多模态数据理解与决策、复杂软件架构的自治运维、甚至未来城市级的交通与能源管理。本文将以结构化分析推理和第一性原理思考。

AI智能探索者的博客 408

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

JS力扣刷题49. 字母异位词分组

var groupAnagrams = function(strs) { let m = new Map(); for(let s of strs){ //将字符串排序作为key let key = s.split('').sort().join(''); //value 是 一个数组 let list = m.get(key) ? m.get(key) : new Array(); //更新数组 .

Candy_Rainbow_的博客 281

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

LeetCode49. 字母异位词分组(哈希表、字典)

1、题目描述 https://leetcode-cn.com/problems/group-anagrams/ 给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。 输入: ["eat", "tea", "tan", "ate", "nat", "bat"] 输出: [ ["ate","eat","tea"], ["nat","tan"], ["bat"] ] 所有输入均为小写字母。 不考虑答案输出的顺序。 2、代码详解 先排序,再用字典di..

IOT_victor的博客 491

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

LeetCode题解:剑指 Offer 49. 丑数,三指针,JavaScript,详细注释

原题链接:剑指 Offer 49. 丑数 解题思路: 参考了详细通俗的思路分析,多解法中的解法三。 在使用堆的解法中,每一个丑数都是由之前最小的丑数分别乘以2、3、5计算而来,生成的序列如下: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, … 如果将其拆分则是下面这样的: 1, 1×2, 1×3, 2×2, 1×5, 2×3, 2×4, 3×3, 3×4, 3×5... 按照上面的规律,可以将其按照各个质因数将其拆分成下面三组: 乘 2: 1×2, 2×2, 3×2, 4×

Lee Chen的博客 154

LeetCode 1813. 句子相似性 III

文章目录1. 题目2. 解题 1. 题目 一个句子是由一些单词与它们之间的单个空格组成,且句子的开头和结尾没有多余空格。 比方说,"Hello World" ,"HELLO" ,"hello world hello world" 都是句子。 每个单词都 只 包含大写和小写英文字母。 如果两个句子 sentence1 和 sentence2 ,可以通过往其中一个句子插入一个任意的句子(可以是空句子)而得到另一个句子,那么我们称这两个句子是 相似的 。 比方说,sentence1 = "Hello my nam

Michael是个半路程序员 793

1813 句子相似性 III(模拟)

1. 问题描述: 一个句子是由一些单词与它们之间的单个空格组成,且句子的开头和结尾没有多余空格。比方说,"Hello World","HELLO","hello world hello world"都是句子。每个单词都只包含大写和小写英文字母。 如果两个句子sentence1 和sentence2,可以通过往其中一个句子插入一个任意的句子(可以是空句子)而得到另一个句子,那么我们称这两个句子是相似的。比方说,sentence1 = "Hello my name is Jane" 且sent...

二哈 492

【1813. 句子相似性 III】

根据题意,两个句子 sentence1 和 sentence2 ,如果是相似的,那么这两个句子按空格分割得到的字符串数组 words1 和 words2 ,一定能通过往其中一个字符串数组中插入某个字符串数组(可以为空),得到另一个字符串数组。如果 i + j 正好是某个字符串数组的长度,那么原字符串就是相似的。时间复杂度:O(m+n),其中 m 是 sentence1 的长度,n 是 sentence2 的长度。一个句子是由一些单词与它们之间的单个空格组成,且句子的开头和结尾没有多余空格。

Sugar_wolf的博客 612

1816 截断句子

题目描述: 句子 是一个单词列表,列表中的单词之间用单个空格隔开,且不存在前导或尾随空格。每个单词仅由大小写英文字母组成(不含标点符号)。 例如,“Hello World”、“HELLO” 和 “hello world hello world” 都是句子。 给你一个句子 s​​​​​​ 和一个整数 k​​​​​​ ,请你将 s​​ 截断 ​,​​​使截断后的句子仅含 前 k​​​​​​ 个单词。返回 截断 s​​​​​​ 后得到的句子。 示例 1: 输入:s = “Hello how are you Con

weixin_44171872的博客 314

LeetCode 1816. 截断句子

题目链接: 力扣https://leetcode-cn.com/problems/truncate-sentence/ 【分析】用split(" ")将字符串以空格分割成数组,取前k个,然后用join连接起来就行。 public class Solution { public String truncateSentence(String s, int k) { String[] strs = s.split(" "); String[] res =

Sasakihaise_的博客 1929

力扣——截断句子

1.题目描述 句子是一个单词列表,列表中的单词之间用单个空格隔开,且不存在前导或尾随空格。每个单词仅由大小写英文字母组成(不含标点符号)。 例如,“Hello World”、“HELLO” 和 “hello world hello world” 都是句子。 给你一个句子 s​​​​​​ 和一个整数 k​​​​​​ ,请你将 s​​ 截断 ​,​​​使截断后的句子仅含 前 k​​​​​​ 个单词。返回 截断 s​​​​​​ 后得到的句子。 来源:力扣(LeetCode) 链接:https://leetcode

weixin_43553142的博客 369

【力扣·每日一题】1816. 截断句子(模拟)

【力扣·每日一题】1816. 截断句子(模拟)

我们都有光明的未来 234

力扣每日一题:852.山脉数组的峰顶索引 喜迎收假,重拳出击....

852.山脉数组的峰顶索引 https://leetcode-cn.com/problems/peak-index-in-a-mountain-array/solution/852shan-mai-shu-zu-de-feng-ding-suo-yin-9krsr/ 难度:简单 题目: 符合下列属性的数组 arr 称为 山脉数组 : arr.length >= 3 存在 i(0 <...

清风Python 5872
上一篇: 力扣每日一题:438. 找到字符串中所有字母异位词
下一篇: 力扣每日一题:88. 合并两个有序数组
清风Python
博客等级 码龄7年 406粉丝 267原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值