每日算法刷题Day9 5.17:leetcode定长滑动窗口3道题,用时1h

9. 1652.拆炸弹(简单,学习)

1652. 拆炸弹 - 力扣(LeetCode)

思想

为了获得正确的密码,你需要替换掉每一个数字。所有数字会 同时 被替换。

  • 如果 k > 0 ,将第 i 个数字用 接下来 k 个数字之和替换。
  • 如果 k < 0 ,将第 i 个数字用 之前 k 个数字之和替换。
  • 如果 k == 0 ,将第 i 个数字用 0 替换。
    2.我的:
    根据k的不同分三类情况讨论,先把 ∣ k ∣ |k| k长度窗口的和求出来,然后根据k的正负向右或向左滑动窗口。
    注意向左滑动时要+n再取余,i=(i-1+n)%n
    3.学习
    全部向右滑动,但是因为k的正负导致窗口在i的左侧或右侧,即**开始窗口位置不同,但保证窗口右移,从0开始遍历待赋值的元素i:
  • k>0,窗口为[1,k+1)
  • k<0,窗口为[n-|k|,n) **通过记录一个变量right来维护[right-k,right)`的窗口,但是保持right++**(而不是right=(right+1)%n,因为要始终保持right-k>0),但是sum更新的时候通过%n将`[right-k,right)`映射到对应范围内即可
代码

1.我的
c++:

class Solution {
public:vector<int> decrypt(vector<int>& code, int k) {int n = code.size();vector<int> res(n);if (k == 0) {for (int i = 0; i < n; ++i)res[i] = 0;} else if (k > 0) {long long sum = 0;for (int i = 0; i < k - 1; ++i)sum += (long long)code[i];int i = k - 1;int cnt = 0;for (;; i = (i + 1) % n) {sum += (long long)code[i];if ((i - k + n) % n == n - 1) {cnt++;if (cnt == 2)break;}res[(i - k + n) % n] = sum;sum -= (long long)code[(i - k + 1 + n) % n];}} else {long long sum = 0;int len = -1 * k;for (int i = n - 1; i > n - len; --i)sum += (long long)code[i];int i = n - len;int cnt = 0;for (;; i = (i - 1 + n) % n) {sum += (long long)code[i];if ((i + len + n) % n == 0) {cnt++;if (cnt == 2)break;}res[(i + len + n) % n] = sum;sum -= (long long)code[(i + len - 1 + n) % n];}}return res;}
};

2.学习:
c++:

class Solution {
public:vector<int> decrypt(vector<int>& code, int k) {int n = code.size();vector<int> res(n);int right = k > 0 ? k + 1 : n;k = abs(k);// 初始窗口和long long sum = 0;for (int i = right - k; i < right; ++i)sum += code[i];// 遍历赋值元素for (int i = 0; i < n; ++i) {res[i] = sum;sum -= code[(right - k + n) % n];sum += code[right % n];right++;}return res;}
};
10. 1176.健身计划评估(简单)

1176. 健身计划评估 - 力扣(LeetCode)

思想

1.为了更好地评估这份计划,对于卡路里表中的每一天,你都需要计算他 「这一天以及之后的连续几天」 (共 k 天)内消耗的总卡路里 T:

  • 如果 T < lower,那么这份计划相对糟糕,并失去 1 分;
  • 如果 T > upper,那么这份计划相对优秀,并获得 1 分;
  • 否则,这份计划普普通通,分值不做变动。
代码

c++:

class Solution {
public:int dietPlanPerformance(vector<int>& calories, int k, int lower,int upper) {int n = calories.size();int res = 0;long long sum = 0;for (int i = 0; i < n; ++i) {sum += calories[i];if (i < k - 1)continue;if (sum > upper)res++;else if (sum < lower)res--;sum -= calories[i - k + 1];}return res;}
};
11. 1100.长度为K的无重复字符子串

1100. 长度为 K 的无重复字符子串 - 力扣(LeetCode)

思想

1.给你一个字符串 S,找出所有长度为 K 且不含重复字符的子串,请你返回全部满足要求的子串的 数目
2.利用map来储存字符个数,mp.size()==k说明无重复字符

代码

c++:

class Solution {
public:int numKLenSubstrNoRepeats(string s, int k) {int res = 0;map<int, int> mp;for (int i = 0; i < s.size(); ++i) {mp[s[i]]++;if (i < k - 1)continue;if (mp.size() == k)res++;mp[s[i - k + 1]]--;if (mp[s[i - k + 1]] == 0)mp.erase(s[i - k + 1]);}return res;}
};

1.mp.size()统计key的数量
2.mp.erase(key),删除键值对

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

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

相关文章

Java IO及Netty框架学习小结

Netty netty官网: Netty 什么是Netty&#xff1f; Netty 是 一个异步事件驱动的网络应用程序框架&#xff0c;用于快速开发可维护的高性能协议服务器和客户端。Netty 是一个 NIO 客户端服务器框架&#xff0c;可以快速轻松地开发网络应用程序&#xff08;例如协议服务器和客…

计算机网络笔记(二十七)——4.9多协议标签交换MPLS

4.9.1MPLS的工作原理 一、MPLS基本工作原理 MPLS&#xff08;Multiprotocol Label Switching&#xff09;是一种介于数据链路层和网络层之间的转发技术&#xff0c;通过固定长度的标签进行高速数据转发。其核心特点是通过预建立的标签交换路径&#xff08;Label Switching Pa…

AI 赋能 Copula 建模:大语言模型驱动的相关性分析革新

技术点目录 R及Python语言及相关性研究初步二元Copula理论与实践&#xff08;一&#xff09;二元Copula理论与实践&#xff08;二&#xff09;【R语言为主】Copula函数的统计检验与选择【R语言为主】高维数据与Vine Copula 【R语言】正则Vine Copula&#xff08;一&#xff09;…

【洛谷P3386】二分图最大匹配之Kuhn算法/匈牙利算法:直观理解

题目&#xff1a;洛谷P3386 【模板】二分图最大匹配 &#x1f955; 匈牙利算法本来是针对带权图最大匹配的&#xff0c;这里由于题目只是求最大匹配的边数&#xff0c;所以我们也只考虑无权的情况。 &#x1f680; 本文旨在服务于看了别的关于匈牙利算法的文章但不甚理解的童…

【数据结构】二分查找(返回插入点)5.14

二分查找基础版 package 二分查找; public class BinarySearch { public static void main(String[] args) { // TODO Auto-generated method stub } public static int binarySearchBasic(int[] a,int target) { int i0,ja.length-1; //设置指针初值 while…

Ubuntu 命令

Ubuntu 命令速查表​ ​分类​​命令​​功能描述​​示例/常用选项​​​​文件与目录​ls列出目录内容ls -a&#xff08;显示隐藏文件&#xff09;; ls -lh&#xff08;详细列表易读大小&#xff09; cd切换目录cd ~&#xff08;主目录&#xff09;; cd ..&#xff08;上级…

Java集合框架详解与使用场景示例

Java集合框架是Java标准库中一组用于存储和操作数据的接口和类。它提供了多种数据结构&#xff0c;每种数据结构都有其特定的用途和性能特点。在本文中&#xff0c;我们将详细介绍Java集合框架的主要组成部分&#xff1a;List、Set和Queue&#xff0c;并通过代码示例展示它们的…

《Python星球日记》 第78天:CV 基础与图像处理

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、计算机视觉(CV)简介1. 什么是计算机视觉?2. 计算机视觉的应用场景3. 图像的基本属性a》像素(Pixel)b》通道(Channel)c》分辨率(Res…

LabVIEW在电子电工教学中的应用

在电子电工教学领域&#xff0c;传统教学模式面临诸多挑战&#xff0c;如实验设备数量有限、实验过程存在安全隐患、教学内容更新滞后等。LabVIEW 作为一款功能强大的图形化编程软件&#xff0c;为解决这些问题提供了创新思路&#xff0c;在电子电工教学的多个关键环节发挥着重…

【优选算法 | 字符串】字符串模拟题精选:思维+实现解析

算法相关知识点可以通过点击以下链接进行学习一起加油&#xff01;双指针滑动窗口二分查找前缀和位运算模拟链表哈希表 在众多字符串算法题中&#xff0c;有一类题目看起来没有太多算法技巧&#xff0c;却经常让人“翻车”——那就是字符串模拟题。这类题型往往不依赖复杂的数据…

虚幻引擎5-Unreal Engine笔记之Default Pawn与GamMode、Camera的关系

虚幻引擎5-Unreal Engine笔记之Default Pawn与GamMode、Camera的关系 code review! 文章目录 虚幻引擎5-Unreal Engine笔记之Default Pawn与GamMode、Camera的关系1.Default Pawn与Camera的关系1.1. Default Pawn 是什么&#xff1f;1.2. Default Pawn 的主要组件1.3. Default…

HarmonyOs开发之———UIAbility进阶

谢谢关注!! 前言:上一篇文章主要介绍开发之———使用HTTP访问网络资源:HarmonyOs开发之———使用HTTP访问网络资源-CSDN博客 代码资源:https://download.csdn.net/download/this_is_bug/90841580 一、基本概念 UIAbility 是 HarmonyOS 应用的核心组件,负责用户界面的…

java实现根据Velocity批量生成pdf并合成zip压缩包

Velocity 模版操作 用的之前写好的: 传送门 其中需要新加一个转成输入流的方法 public static InputStream convertToPdf(StringWriter stringWriter) throws IOException {//将 HTML 转为字节流byte[] htmlBytes stringWriter.toString().getBytes(StandardCharsets.UTF_8)…

SCDN能够运用在物联网加速当中吗?

在当今的科技化时代当中&#xff0c;物联网已经广泛渗透在各个领域行业当中&#xff0c;随着物联网规模的不断扩大&#xff0c;数据信息的传输速度和网络稳定性成为企业需要重视的两点因素&#xff0c;而SCDN也成为安全内容分发网络作为一种融合了内容加速和安全防护的技术&…

二程运输的干散货船路径优化

在二程运输中&#xff0c;干散货船需要将货物从一个港口运输到多个不同的目的地港口。路径优化的目标是在满足货物运输需求、船舶航行限制等条件下&#xff0c;确定船舶的最佳航行路线&#xff0c;以最小化运输成本、运输时间或其他相关的优化目标。 影响因素 港口布局与距离…

Oracle物理恢复相关注意点

如果需要恢复的数据库或者数据文件不存在&#xff0c;则需要将全量备份集RESTORE[ 将全量备份集恢复到目标数据库中&#xff0c;称之为RESTORE。]到目标数据库中&#xff0c;然后再RECOVER[ 将增量备份集或者归档日志恢复到目标数据库中&#xff0c;称之为RECOVER。]增量备份集…

C++ string小记

#include<string> using std::string;string s1; string s2 "hello" //初始化一个hello字符串 string s3(5,a) //连续5个字符a组成的串&#xff0c;即aaaaa///字符串操作int length s1.size() //.size()求字符串长度char c1 s1[1]; //从下标0开始&#xf…

自然语言处理入门级项目——文本分类(预处理)

文章目录 前言1.数据预处理1.1数据集介绍1.2数据集抽取1.3划分数据集1.4数据清洗1.5数据保存 2.样本的向量化表征2.1词汇表2.2向量化2.3自定义数据集2.4备注 结语 前言 本篇博客主要介绍自然语言处理领域中一个项目案例——文本分类&#xff0c;具体而言就是判断评价属于积极还…

C++面试2——C与C++的关系

C与C++的关系及核心区别的解析 一、哲学与编程范式:代码组织的革命 过程式 vs 多范式混合 C语言是过程式编程的典范,以算法流程为中心,强调“怎么做”(How)。例如,实现链表操作需手动管理节点指针和内存。 C++则是多范式语言,支持面向对象(OOP)、泛型编程(模板)、函…

HTTP与HTTPS协议的核心区别

HTTP与HTTPS协议的核心区别 数据传输安全性 HTTP采用明文传输&#xff0c;数据易被窃听或篡改&#xff08;如登录密码、支付信息&#xff09;&#xff0c;而HTTPS通过SSL/TLS协议对传输内容加密&#xff0c;确保数据完整性并防止中间人攻击。例如&#xff0c;HTTPS会生成对称加…