Leetcode 4.16

1.找两个和为目标值且不重叠的子数组

找两个和为目标值且不重叠的子数组
初始化变量:

  • sum:用于存储当前左边界 l 到右边界 r 之间的子数组和。
  • r:初始化为数组的最后一个元素的索引,表示初始的右边界。
  • ans:用于存储最小的两个子数组长度和,初始化为一个较大的数(2e5),确保后面能找到更小的值来更新它。
  • len:一个数组,用于存储从当前位置到数组末尾的子数组的最小长度。其初始值都设为 2e5。

滑动窗口遍历数组:

  • 外部循环从右向左遍历数组,l 表示当前子数组的左边界。
  • 在每次外部循环中,sum 从 l 开始累加元素,直到 sum 大于 target。
  • 如果 sum 大于 target,则通过减少右边界 r 的元素来缩小子数组的范围,直到 sum 再次小于或等于 target。

检查当前子数组和:

  • 如果 sum 等于 target,则找到了一个和为 target 的子数组。 计算当前子数组的长度 curlen,它是 r - l +1。
  • 更新 ans 为 ans 和 curlen + len[r + 1] 中的较小值。这里 len[r + 1] 表示从 r + 1到数组末尾的子数组的最小长度。因为我们想找到两个不相交的子数组,所以加上从 r + 1 开始的子数组的最小长度是合理的。
  • 更新len[l] 为 curlen 和 len[l + 1] 中的较小值。这是因为从 l 开始到数组末尾的子数组的最小长度要么是当前子数组的长度,要么是从 l + 1 开始到数组末尾的子数组的最小长度。

返回结果:

  • 如果找到了两个符合条件的子数组,则返回 ans。
  • 否则,返回 -1,表示没有找到这样的子数组。
    这段代码的关键点在于使用了滑动窗口和动态规划的思想。通过维护一个 len 数组来记录从当前位置到数组末尾的子数组的最小长度,避免了重复计算。
class Solution {
public:int minSumOfLengths(vector<int>& arr, int target) {//从右往左遍历//用l和r指针控制位置,选择不相交区域int r = arr.size() - 1; int l = r;//用vector<int>保存当前位置等于target的最小子数组长度//加一是因为需要比对r+1的值vector<int> len(arr.size() + 1, 2e5);//ans保存两个最短子数组长度和int ans = 2e5;//保留l到r位置的和int sum = 0;for (; l >= 0; l--) {sum += arr[l];//和超出target了,将指针向右移动while (sum > target) {sum -= arr[r];r--;}if (sum == target) {//从右向左,在当前位置的子串最小值len[l] = min(len[l + 1], r - l + 1);//更新最终的两个子数组和,注意len[r + 1]ans = min(ans, r - l + 1 + len[r + 1]);               } else {len[l] = len[l + 1];}}return ans == 2e5 ? -1 : ans;}
};

2.Protocol buffer 编码和解码 谷歌 整数变长编码

https://www.cnblogs.com/love-study-chase/p/13443062.html

#include <iostream>
#include <unordered_map>
#include <string>
#include <cstring>
#include <iomanip>
using namespace std;void encode(unsigned int n){if(n < 128) {if(n < 16) cout <<"0X0"<<hex<<n;else cout <<"0X"<<hex<<n;  return;}while(n){unsigned int tmp;if(n >= 128){tmp = (0x80 | (n & 0x7F));cout<<"0X"<<setiosflags(ios::uppercase)<<hex<<tmp;//大写16进制数字}else{tmp = (0x00|(n & 0x7F));if(tmp < 16) cout <<"0X0"<<hex<<tmp;else cout <<"0X"<<hex<<tmp;}n >>= 7;}return;
}
unsigned int decode(string& x){unsigned int u, res = 0;int cnt = 0;while(x.size()){string tmp = x.substr(0,4);//必须要依据格式输入 否则超索引范围x = x.substr(4);tmp = tmp.substr(2);u = 0;for(int i = 0; i < tmp.size(); i++){  if(tmp[i] >='0' && tmp[i] <= '9') u = u * 16 + tmp[i] - '0';if(tmp[i] >='A' && tmp[i] <= 'F') u = u * 16 + tmp[i] - 'A' + 10;}unsigned int temp;temp = (u & 0x7F);for(int i = 1; i <= cnt; i++){  temp <<= 7;}res += temp;cnt++;}return res;
}int main(){ unsigned int n;string x;cin >> n >> x;encode(n);cout <<endl;cout <<dec<<decode(x)<<endl; return 0;
}

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

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

相关文章

【基础物理实验】【AFM虚拟实验】基于AFM的物质表面微观结构及力学性质表征仿真实验(下)【北京航空航天大学】

本次实验&#xff08;上&#xff09;见博客&#xff1a;【基础物理实验】【AFM虚拟实验】基于AFM的物质表面微观结构及力学性质表征仿真实验&#xff08;上&#xff09;【北京航空航天大学】 本次实验&#xff08;中&#xff09;见博客&#xff1a;【基础物理实验】【AFM虚拟实…

LLamaSharp加载llama.cpp转化好的模型

新建.net8控制台项目 安装依赖包 LLamaSharp和LLamaSharp.Backend.Cpu 准备好转化好的模型 没有的话参考这篇文章https://blog.csdn.net/qq_36437991/article/details/137248622 编写代码 using LLama; using LLama.Common; using LLama.Native;namespace llamasharpstu…

N皇后问题(DFS解决)

文章目录 一、题目分析二、对角线判断&#xff08;分两种&#xff09;三、代码演示 先赞后看&#xff0c;养成习惯&#xff01;&#xff01;&#xff01;^ _ ^<3 ❤️ ❤️ ❤️ 码字不易&#xff0c;大家的支持就是我坚持下去的动力。点赞后不要忘了关注我哦&#xff01; 一…

全球7大指纹浏览器排行榜:哪个最适合你?

在数字时代&#xff0c;我们每一次上网都会留下独特的数字足迹&#xff0c;被称为“浏览器指纹”。为了保护这些私人信息不被滥用&#xff0c;指纹浏览器成为了一个重要工具。但是&#xff0c;并非所有的指纹浏览器都是一样的&#xff0c;它们各有特点&#xff0c;适用于不同的…

数字乡村创新实践探索农业现代化路径:科技赋能农业产业升级、提升乡村治理效能与农民幸福感

随着信息技术的快速发展和数字化时代的到来&#xff0c;数字乡村建设正成为推动农业现代化、提升农业产业竞争力、优化乡村治理以及提高农民幸福感的重要途径。本文将围绕数字乡村创新实践&#xff0c;探讨其在农业现代化路径中的积极作用&#xff0c;以及如何通过科技赋能实现…

28. 找出字符串中第一个匹配项的下标(KMP)

class Solution {public int[] getNext(int[] next,String s){//j有两层含义&#xff1a;&#xff08;1&#xff09;最长公共前后缀的长度&#xff08;2&#xff09;前缀的末尾&#xff0c;是即将匹配的那个位置int j 0;//i含义&#xff1a;后缀的末尾&#xff0c;是即将匹配的…

Python疑难杂症(20)---介绍Python的pandas模块中将数据导入内存和导出数据的方法,以及一些参数的用法。

Python的pandas模块中数据框这种数据类型&#xff0c;可以通过文件导入函数&#xff0c;将磁盘上的csv、execl等类型的文件装入内存&#xff0c;并生成数据框的格式&#xff0c;以方便后续使用pandas的专有方法进行处理。 6、DataFrame数据输导入导出方法 Pandas常用的读取数…

安装ps提示MSVCP140.dll丢失怎么办,推荐几种有效的解决方法

在成功完成Adobe Photoshop&#xff08;简称PS&#xff09;软件的安装过程之后&#xff0c;当用户试图启动并运行该程序时&#xff0c;系统却弹出了一个令人困扰的错误提示信息&#xff0c;明确指出&#xff1a;“无法找到MSVCP140.dll”这一关键文件。这意味着尽管PS软件已经成…

redmibook 14 2020 安装 ubuntu

1. 参考博客 # Ubuntu20.10系统安装 -- 小米redmibook pro14 https://zhuanlan.zhihu.com/p/616543561# ubuntu18.04 wifi 问题 https://blog.csdn.net/u012748494/article/details/105421656/# 笔记本电脑安装了Ubuntu系统设置关盖/合盖不挂起/不睡眠 https://blog.csdn.net/…

权威Scrum敏捷开发企业级实训/敏捷开发培训课程

课程简介 Scrum是目前运用最为广泛的敏捷开发方法&#xff0c;是一个轻量级的项目管理和产品研发管理框架。 这是一个两天的实训课程&#xff0c;面向研发管理者、项目经理、产品经理、研发团队等&#xff0c;旨在帮助学员全面系统地学习Scrum和敏捷开发, 帮助企业快速启动敏…

【机器学习】科学库使用第5篇:Matplotlib,学习目标【附代码文档】

机器学习&#xff08;科学计算库&#xff09;完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;机器学习&#xff08;常用科学计算库的使用&#xff09;基础定位、目标&#xff0c;机器学习概述定位,目标,学习目标,学习目标,1 人工智能应用场景,2 人工智能小…

【网络设备巡检命令】--思科、华为、H3C、锐捷

【网络设备巡检命令】--思科、华为、H3C、锐捷 一、思科二、华为三、H3C四、锐捷 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 一、思科 1、查看系统信息&#xff1a; show version2、查看时间&#xff1a; show clock3、查看序列号&a…

Nginx内存池相关源码剖析(三)小块内存分配逻辑

在Nginx中&#xff0c;小块内存通常指的是那些大小相对较小、分配和释放频率较高的内存块。这些内存块由于数量众多、管理复杂&#xff0c;因此需要使用一种高效的内存管理机制来减少内存管理的开销和内存碎片的产生。 Nginx内存池通过一种预分配和复用的方式来管理小块内存。当…

觉飞、希亦、Daily neaty内衣洗衣机好用吗?爆款产品性能全面测评!

近几年来小家电产品中&#xff0c;内衣洗衣机的讨论热度无疑是最大的&#xff0c;功能多、操作方便&#xff0c;用内衣洗衣机来清洗内衣裤会更加卫生和安全&#xff0c;能满足了消费者的多种需求。不过尽管市面上的内衣洗衣机品牌很多、挑选空间大&#xff0c;也不是所有产品都…

RT-thread-线程间通讯3-事件集

事件集 事件集也是线程间同步的机制之一,一个事件集可以包含多个事件,利用事件集可以完成一对多,多对多的线程间同步。 一个线程和多个事件的关系可设置为: 其中任意一个事件唤醒 线程,或几个事件都到达后唤醒线程,多个事件集合可以用一个32bit无符号整型变量来表示,…

4.8-4.12算法刷题笔记

刷题 堆1. 堆排序2. 模拟堆 哈希表3. 模拟散列表4. 字符串哈希 DFS5. 排列数字6. n-皇后问题 2. BFS&#xff08;队列&#xff09;7. 字母迷宫8. 滑动谜题 3. 树与图的dfs9. 树的重心 4. 树与图的bfs(最短路)10. 图中点的层次( 无权最短路 ) 5. 拓扑排序11. 课程表 6. 朴素dijk…

docker (CentOS,ubuntu)安装及常用命令

Docker和虚拟机一样&#xff0c;都拥有环境隔离的能力&#xff0c;但它比虚拟机更加轻量级&#xff0c;可以使资源更大化地得到应用 Client&#xff08;Docker客户端&#xff09;&#xff1a;是Docker的用户界面&#xff0c;可以接受用户命令&#xff08;docker build&#xff…

记录Python的pandas库详解

如何生成一个pd import pandas as pd df pd.DataFrame([[1,2,3],[4,5,6]],index[A,B],columns[C1,C2,C3])df ---------------------------------------------------------------------------C1 C2 C3 A 1 2 3 B 4 5 6df.T -------------------------------------------------…

爬虫 新闻网站 以湖南法治报为例(含详细注释) V4.0 升级 自定义可任意个关键词查询、时间段、粗略判断新闻是否和优化营商环境相关,避免自己再一个个判断

目标网站&#xff1a;湖南法治报 爬取目的&#xff1a;为了获取某一地区更全面的在湖南法治报的已发布的和优化营商环境相关的宣传新闻稿&#xff0c;同时也让自己的工作更便捷 环境&#xff1a;Pycharm2021&#xff0c;Python3.10&#xff0c; 安装的包&#xff1a;requests&a…

element-ui container 组件源码分享

今日简单分享 container 组件的源码实现&#xff0c;从以下两个方面来讲解&#xff1a; 1、container 组件的页面结构 2、container 组件的属性 一、container 组件的页面结构 二、container 组件的属性 1、container 部分的 direction 属性&#xff0c;子元素的排列方向&am…