每日算法刷题Day39 6.26:leetcode前缀和2道题,用时1h20min

8. 2055.蜡烛之间的盘子(中等,学习替换查询区间)

2055. 蜡烛之间的盘子 - 力扣(LeetCode)

思想

1.给你一个长桌子,桌子上盘子和蜡烛排成一列。给你一个下标从 0 开始的字符串 s ,它只包含字符 '*''|' ,其中 '*' 表示一个 盘子'|' 表示一支 蜡烛
同时给你一个下标从 0 开始的二维整数数组 queries ,其中 queries[i] = [lefti, righti] 表示 子字符串 s[lefti...righti]包含左右端点的字符)。对于每个查询,你需要找到 子字符串中两支蜡烛之间 的盘子的 数目 。如果一个盘子在 子字符串中 左边和右边 至少有一支蜡烛,那么这个盘子满足在 两支蜡烛之间

  • 比方说,s = "||**||**|*" ,查询 [3, 8] ,表示的是子字符串 "*||**_**_**|" 。子字符串中在两支蜡烛之间的盘子数目为 2 ,子字符串中右边两个盘子在它们左边和右边 至少有一支蜡烛。
    请你返回一个整数数组 answer ,其中 answer[i] 是第 i 个查询的答案。
    2.这题能想到用前缀和,但是不能简单地计算[querie[0],querie[1]]的区间和,因为|*|*|例子中[0,3]|*|*的有效*只有1个,而如果按照简单前缀和的逻辑答案为2,所以这个区间不对,要更换更小的区间。因为是考虑两个蜡烛内的盘子数,所以可以左端点querie[0]找它右边最近的蜡烛位置,右端点找它左边最近的蜡烛位置,从而替换原始查找区间,变成[rightId[querie[0]],leftId[querie[1]]],而找左边最近的蜡烛位置可以在遍历时判断赋值更新
代码

c++:

class Solution {
public:vector<int> platesBetweenCandles(string s, vector<vector<int>>& queries) {int n = s.size();vector<int> sum(n + 1, 0);vector<int> leftId(n);  // 左边最近蜡烛位置vector<int> rightId(n); // 右边最近蜡烛位置sum[0] = 0;int preId = -1;for (int i = 0; i < n; ++i) {sum[i + 1] = sum[i];if (s[i] == '|')preId = i; // 边枚举边更新else++sum[i + 1];leftId[i] = preId; // 边枚举边赋值}int lastId = n;for (int i = n - 1; i >= 0; --i) {if (s[i] == '|')lastId = i;rightId[i] = lastId;}vector<int> res;for (auto& querie : queries) {// 用[rightId[querie[0]],leftId[querie[1]]]来替代[querie[0],querie[1]]区间int left = rightId[querie[0]], right = leftId[querie[1]];if (left < right)res.emplace_back(sum[right + 1] - sum[left]);elseres.emplace_back(0);}return res;}
};
9. 1744.你能在你最喜欢的那天吃到你最喜欢的糖果吗?(中等,想法没错,范围再考虑清楚)

1744. 你能在你最喜欢的那天吃到你最喜欢的糖果吗? - 力扣(LeetCode)

思想

1.给你一个下标从 0 开始的正整数数组 candiesCount ,其中 candiesCount[i] 表示你拥有的第 i 类糖果的数目。同时给你一个二维数组 queries ,其中 queries[i] = [favoriteTypei, favoriteDayi, dailyCapi]
你按照如下规则进行一场游戏:

  • 你从第 **0** 天开始吃糖果。
  • 你在吃完 所有i - 1 类糖果之前,不能 吃任何一颗第 i 类糖果。
  • 在吃完所有糖果之前,你必须每天 至少一颗 糖果。
    请你构建一个布尔型数组 answer ,用以给出 queries 中每一项的对应答案。此数组满足:
  • answer.length == queries.lengthanswer[i]queries[i] 的答案。
  • answer[i]true 的条件是:在每天吃 不超过 dailyCapi 颗糖果的前提下,你可以在第 favoriteDayi 天吃到第 favoriteTypei 类糖果;否则 answer[i]false
    注意,只要满足上面 3 条规则中的第二条规则,你就可以在同一天吃不同类型的糖果。
    请你返回得到的数组 answer
    2.因为每个查询是独立的,且每个查询得到一个吃的糖果范围:[1*(favoriteDayi+1),dailyCapi*(favoriteDayi+1)](注意从0开始,且那一天也要算上,所以要加1,考虑清楚),而要吃到第favoriteTypei糖果的范围为[s[favoriteTypei-1+1]+1,s[favoriteTypei+1](因为定义的前缀和是要加上1的),这边有两个细节要考虑清楚才不会出错.两个区间有交集则说明可以
代码

c++:

class Solution {
public:vector<bool> canEat(vector<int>& candiesCount,vector<vector<int>>& queries) {int n = candiesCount.size();vector<long long> s(n + 2, 0);s[0] = 0;s[n + 1] = LONG_MAX;for (int i = 0; i < n; ++i)s[i + 1] = s[i] + candiesCount[i];vector<bool> res;for (auto& querie : queries) {// day要+1,把那天吃的糖果也考虑到,所以吃的糖果范围为[1*day,cap*day]int type = querie[0], day = querie[1] + 1, cap = querie[2];// type类糖果范围为:(s[type-1]+1,s[type]),但是s还要加个1if ((1LL * cap * day < s[type - 1 + 1] + 1) ||(1LL * 1 * day > s[type + 1]))res.emplace_back(false);elseres.emplace_back(true);}return res;}
};

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

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

相关文章

jrebel 下载,安装,激活步骤

参考地址&#xff1a; [笔记] 最新版 - JRebel 插件激活与配置教程 : 高效开发的必备指南_jrebel激活-CSDN博客https://blog.csdn.net/LuChangQiu/article/details/145547828 1、下载 2、激活地址&#xff1a; http://42.193.18.168:8088 ### 捡个便宜 - 交朋友吧 ###https://…

uniapp使用plus调取蓝牙/usb打印

安卓使用usb调取打印机 /*** 安卓usb调取打印机*param { string | bytes[] } html 传入的打印内容*传入一段文本或一个bytes数组* returns*/ export const printUsb (html) > {return new Promise((resolve, reject) > {if (!window.plus) return reject(new Error(&qu…

区块链数据结构:区块与链式结构编码

目录 区块链数据结构:区块与链式结构编码引言:区块链的骨架1. 区块链数据结构解析1.1 区块结构组成1.2 区块链可视化结构2. 区块核心组件详解2.1 区块头字段说明2.2 Merkle树结构2.3 工作量证明机制3. Python实现区块链数据结构3.1 区块类实现3.2 区块链类实现3.3 区块链演示…

阿里推出 R1-Omni:将强化学习与可验证奖励(RLVR)应用于全模态大语言模型

从视频中识别情感涉及许多细微的挑战。仅依赖视觉或音频信号的模型&#xff0c;往往无法准确捕捉这两种模态之间的复杂相互作用&#xff0c;从而导致对情感内容的误解。一个关键难题在于可靠地结合视觉线索&#xff08;如面部表情或肢体语言&#xff09;与听觉信号&#xff08;…

【江科大】STM32F103C8T6 + TB6612 + N20编码器减速电机《03-增量式PID定速控制》(增量式PID,定时器输入捕获,定时器编码器)

STM32F103C8T6单片机+N20减速电机带霍尔编码器版PID闭环控制实验演示 STM32F103C8T6 实现的电机转速控制系统,基于 PWM 输出驱动、编码器采样反馈、以及增量式 PID 算法进行控制。 /*** @file Encoder.c* @brief 增量式编码器驱动程序* @details 使用TIM3定时器的编码器…

【论文阅读35】-PINN review(2021)

这篇综述全面回顾了物理信息机器学习 的原理、应用、软件实现、理论进展与未来发展趋势&#xff0c;这样即使数据稀疏、带噪&#xff0c;也能保证预测结果符合物理规律&#xff0c;适合解决偏微分方程正问题、反问题、非线性动力学和多物理耦合系统等科学计算场景。 作者信息&…

深度学习初探:聚焦 Transformer 与 LLM 的核心世界

文章目录 前言一、神经网络基础&#xff1a;智能的基石二、Transformer 架构&#xff1a;AI 新纪元的基石Transformer 的核心特性Transformer 的关键组件 三、 大语言模型概览总结 前言 人工智能的浪潮正以前所未有的力量重塑世界&#xff0c;而这场变革的核心引擎之一&#x…

【开发杂谈】Auto Caption:使用 Electron 和 Python 开发实时字幕显示软件

项目已开源到 GitHub&#xff0c;项目地址&#xff1a;HiMeditator/auto-captionhttps://github.com/HiMeditator/auto-caption 软件下载(Windows平台)&#xff1a;Releases HiMeditator/auto-captionhttps://github.com/HiMeditator/auto-caption/releases 你是否遇到过看外…

临床项目范围管理:确保项目聚焦与成功交付

一、核心目标 1.1 清晰定义项目边界 1.1.1 明确项目目标 明确项目具体目标、可交付成果、研究活动、纳入/排除标准、数据收集范围等,为项目规划、执行、监控和控制奠定基础。 1.1.2 防止范围蔓延 严格控制未经批准的变更,避免项目目标、活动或可交付成果超出最初约定,导致…

opi是什么

是的&#xff0c;当然可以&#xff01;您提出了一个非常好的问题。 opi 远不止是一个 NVIDIA 驱动安装器&#xff0c;它是一个非常强大的、专为 openSUSE 设计的**“超级安装助手”**或“智能搜索工具”。 它的主要目的就是为了解决一个常见问题&#xff1a;“我想安装一个软…

【Go语言-Day 9】指针基础:深入理解内存地址与值传递

Langchain系列文章目录 01-玩转LangChain&#xff1a;从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块&#xff1a;四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain&#xff1a;从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…

如何使用 vue vxe-table 来实现一个产品对比表表格

如何使用 vue vxe-table 来实现一个产品对比表表格 查看官网&#xff1a;https://vxetable.cn 效果 代码 <template><div class"demo-page-wrapper"><vxe-grid v-bind"gridOptions"><template #img11><vxe-image src"h…

【CF】Day85——CF 1033 (Div. 2) B (物理?) + CF 860 (Div. 2) C (数学思维 + lcm + gcd)

忙于期末&#xff0c;久久未写&#xff0c;今日一写&#xff0c;全都忘了 C. Candy Store 题目&#xff1a; 思路&#xff1a; 数学思维 我们假设一个标签 cost 可以覆盖一个连续的区间&#xff0c;那么这个 cost 就满足 cost bl * dl bl1 * dl1 ... br-1 * dr-1 br * d…

16.2 Docker多阶段构建实战:LanguageMentor镜像瘦身40%,支持500+并发1.2秒响应!

LanguageMentor Agent 容器化部署与发布:Docker 镜像创建与测试 关键词:Docker 容器化部署, 多阶段构建, 镜像分层优化, 环境一致性, 私有化模型集成 1. Dockerfile 最佳实践架构设计 通过多阶段构建策略实现开发与生产环境分离: #mermaid-svg-CKUsKERUN6nqM0bI {font-fam…

高可用与低成本兼得:全面解析 TDengine 时序数据库双活与双副本

在现代数据管理中&#xff0c;企业对于可靠性、可用性和成本的平衡有着多样化的需求。为此&#xff0c;TDengine 在 3.3.0.0 版本中推出了两种不同的企业级解决方案&#xff1a;双活方案和基于仲裁者的双副本方案&#xff0c;以满足不同应用场景下的特殊需求。本文将详细探讨这…

Github项目:Python编写的录屏工具 TTvideo(已打包)

打包好能立即用的github项目&#xff1a;TTvideo 用的github上的项目&#xff1a;https://github.com/jumppppp/ttvideo 朴实无华&#xff0c;功能强大的录屏工具 原作者如有认为侵权&#xff0c;评论区联系立删 1.效果图 2.下载链接 录屏工具

LE AUDIO---Chapter 2. The Bluetooth® LE Audio architecture

目录 2.1 The use cases 2.1.1 Hearing aid requirements - the use cases 2.1.1.1 Basic telephony 2.1.1.2 Low latency audio from a TV 2.1.1.3 Adding more users 2.1.1.4 Adding more listeners to support larger areas 2.1.1.5 Coordinating left and right hearin…

算法第54天| 并查集

107. 寻找存在的路径 题目 思路与解法 #include <iostream> #include <vector> using namespace std;int n; // 节点数量 vector<int> father vector<int> (101, 0); // 按照节点大小定义数组大小// 并查集初始化 void init() {for (int i 1; i &l…

守护API可用性:全面对抗DDoS与CC洪水攻击策略

API的可用性直接关系到用户体验和业务收入。分布式拒绝服务&#xff08;DDoS&#xff09;和针对应用层的CC&#xff08;Challenge Collapsar&#xff09;攻击&#xff0c;旨在耗尽服务器资源&#xff08;带宽、连接数、CPU&#xff09;&#xff0c;使合法用户无法访问。这类攻击…

第 4 章:第一个神经网络实战——使用 PyTorch

第 4 章&#xff1a;第一个神经网络实战——使用 PyTorch 经过前三章的学习&#xff0c;我们已经对神经网络的理论基础有了扎实的理解。我们知道数据如何前向传播&#xff0c;如何用损失函数评估预测&#xff0c;以及如何通过梯度下降和反向传播来更新网络参数。 理论是根基&a…