力扣刷题总结 -- 数组26
76. 所有奇数长度子数组的和(简单)
题目要求:
给定一个正整数数组 arr ,计算所有奇数长度子数组的和。
子数组
定义为原数组中的一个连续子序列。
返回 arr 中 所有奇数长度子数组的和 。
题目分析:
先得到所有子数组和构成的数组,从中取出长度为奇数的子数组的和即可。
题目解答:
#include <iostream>
using namespace std;
#include <string>
#include <vector>
#include <algorithm>class Solution
{
public:int sumOddLengthSubarrays(vector<int>& arr){int n = arr.size();vector<int> prefixSums(n + 1);for (int i = 0; i < n; i++){prefixSums[i + 1] = prefixSums[i] + arr[i]; // prefixSums[i] 表示数组 arr 从下标 0 到下标 i−1 的元素和。}int sum = 0;for (int start = 0; start < n; start++) // 设置子数组的起点位置{for (int length = 1; start + length <= n; length += 2) // 设置子数组的长度,保持为奇数{int end = start + length - 1; // 在起点和长度已知的情况下计算终点sum += prefixSums[end + 1] - prefixSums[start]; // 计算起点到终点之间所有长度为奇数的子数组的元素和}}return sum;}};int main()
{vector<int> arr = { 1,4,2,5,3 };Solution s;cout << "原数组为:";for (int num : arr){cout << num << ", ";}cout << endl;int res = s.sumOddLengthSubarrays(arr);cout << "所有奇数长度子数组的和为:" << res << endl;system("pause");return 0;
}
77. 特殊数组的特征值(简单)
题目要求:
给定一个非负整数数组nums
。如果存在一个数x
,使得nums
中恰好有 x 个元素大于或者等于
x ,那么就称 nums 是一个 特殊数组 ,而 x 是该数组的特征值
。
注意: x 不必 是 nums 的中的元素。
如果数组 nums 是一个 特殊数组 ,请返回它的特征值 x 。否则,返回 -1 。可以证明的是,如果 nums 是特殊数组,那么其特征值 x 是唯一
的 。
题目分析:
假设数组长度为n
,根据特征值的定义,其值一定在[1, n]之间。将数组降序排列,如果nums[i - 1] >= i且nums[i] < i,那么说明i是特征值。如果i = n,则nums[i]不存在,同样说明i是特征值。
题目解答:
#include <iostream>
using namespace std;
#include <string>
#include <vector>
#include <algorithm>class Solution
{
public:int specialArray(vector<int>& nums){sort(nums.begin(), nums.end(), greater<int>()); // 将数组降序排序int n = nums.size(); // 获取数组长度for (int i = 1; i <= n; i++) // 特征值只会在[1, n]中出现{// 由于降序排序,如果数组中在索引i之前的元素都大于等于i,则数组有i个元素大于等于iif (nums[i - 1] >= i && (i == n || nums[i] < i)){return i;}}return -1;}};int main()
{vector<int> nums = { 3,6,7,7,0 };Solution s;cout << "原数组为:";for (int num : nums){cout << num << ", ";}cout << endl;int res = s.specialArray(nums);if (res > 0){cout << "数组的特征值为:" << res << endl;}else{cout << "数组的特征值不存在!" << endl;}system("pause");return 0;
}
78. 拆炸弹(巧妙)
题目要求:
你有一个炸弹需要拆除,时间紧迫!情报员会给你一个长度为n
的循环数组
code 以及一个密钥 k 。
为了获得正确的密码,你需要替换掉每一个数字。所有数字会同时
被替换。
如果 k > 0 ,将第 i 个数字用 接下来 k 个数字之和替换。
如果 k < 0 ,将第 i 个数字用 之前 k 个数字之和替换。
如果 k == 0 ,将第 i 个数字用 0 替换。
由于 code 是循环的, code[n-1] 下一个元素是 code[0] ,且 code[0] 前一个元素是 code[n-1] 。
给你 循环 数组 code 和整数密钥 k ,请你返回解密后的结果来拆除炸弹!
题目分析:
可以将普通数组首尾复制一份作为循环数组,根据k的值设置解码需要的数组区间的左右端点,对于每个解码值,平移该区间即可。
题目解答:
#include <iostream>
using namespace std;
#include <string>
#include <vector>
#include <algorithm>class Solution
{
public:vector<int> decrypt(vector<int>& code, int k){int n = code.size(); // 获取数组尺寸vector<int> res(n); // 新建存储结果的数组if (k == 0){return res;}code.resize(n * 2); // 将原数组重构为两倍大小,相当于循环数组copy(code.begin(), code.begin() + n, code.begin() + n); // 将code.begin()到code.begin()+n之间的元素复制一份放在code.begin()+n后面// l和k分别代表解密需要的数组区间的起点和终点int l = k > 0 ? 1 : n + k; // 若k>0,l指向code[1];否则指向code[n + k]int r = k > 0 ? k : n - 1; // 若k>0,r指向code[k];否则指向code[n - 1]int w = 0; // 初始化解密需要增加的元素和for (int i = l; i <= r; i++){w += code[i]; // 计算code[0]解密需要的元素和}for (int i = 0; i < n; i++) // 遍历整个数组,在code[0]对应的w的基础上得到code[i]对应的w{res[i] = w;w -= code[l];w += code[r + 1];l++;r++;}return res;}};int main()
{vector<int> code = { 5,7,1,4 };int k;Solution s;cout << "原数组为:";for (int num : code){cout << num << ", ";}cout << endl;cout << "请输入密钥:";cin >> k;cout << "=====================" << endl;cout << "解码中......" << endl;cout << "=====================" << endl;vector<int> res = s.decrypt(code, k);cout << "解码后为:";for (int num : res){cout << num << ", ";}cout << endl;system("pause");return 0;
}
相关文章:
力扣刷题总结 -- 数组26
76. 所有奇数长度子数组的和(简单) 题目要求: 给定一个正整数数组 arr ,计算所有奇数长度子数组的和。 子数组定义为原数组中的一个连续子序列。 返回 arr 中 所有奇数长度子数组的和 。 题目分析: 先得到所有子…...

无线MODBUS通讯模块在供水系统中的应用
一、项目背景 我国是人口大国、农业大国,同时也是贫水大国。由于大量工业废水污染了部分河流、地表的浅层水资源,并且有逐年加重的趋势,再加上农业、绿化等灌溉对水资源的大量消耗,这些因素综合作用进一步加剧了我国水资源紧缺的…...
linux为什么不是实时操作系统
Linux为什么不是实时操作系统? 从我们接触Linux系统开始,一直听到的都是它是非实时操作系统,怎么理解这个非实时呢? 我的理解,非实时,就是中断响应不及时,任务调度不及时。那么,真…...

【STM32】飞控设计
【一些入门知识】 1.飞行原理 【垂直运动】 当 mg>F1F2F3F4,此时做下降加速飞行 当 mg<F1F2F3F4,此时做升高加速飞行 当 mgF1F2F3F4 ,此时垂直上保持匀速飞行。 【偏航飞行】 ω 4 ω 2 ≠ ω 1 ω 3 就会产生水…...
MySQL CDC
一、MySQL CDC概念 MySQL CDC(Change Data Capture),即MySQL变更数据捕获,是一种能够捕获MySQL数据库中数据变化(包括插入、更新和删除操作)的技术。这些变化可以实时或准实时地同步到其他系统或服务中&am…...

手把手教你安装 Vivado2022.2(附安装包)
一、Vivado 2022.2 优势 Vivado 2022.2版本与之前的版本相比,具有以下几个显著的优势: 电源设计管理器(PDM):Vivado 2022.2引入了全新的电源设计管理器(PDM),这是一个下一代功耗评…...

旅行者1号有什么秘密?飞行240多亿公里,为什么没发生碰撞?
旅行者1号有什么秘密?飞行240多亿公里,为什么没发生碰撞? 自古以来,人类就对浩瀚无垠的宇宙充满了好奇与向往。从最初的仰望星空,到如今的深空探测,人类探测宇宙的历史发展可谓是一部波澜壮阔的史诗。 在…...

如何保护云主机安全
在数字化时代,云服务器已成为企业数据存储、处理和传输的重要工具。然而,随着其应用的广泛和深入,云服务器也面临着越来越多的安全威胁。为了应对这些威胁,白名单技术应运而生,成为保护云服务器安全的重要手段。 首先&…...

postman教程-19-mock测试
上一小节我们学习了Postman接口参数化方法,本小节我们讲解一下Postman mock测试的方法。 一、什么叫mock测试 mock测试就是在测试过程中,对某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便于测试的一种测试方法,…...
纳秒级网络库【二】技术选型
在十年之前,已经有网络产品实现7纳秒延迟,所以无需质疑是否能够实现,关键问题是:代价是什么。国内不少量化公司在招聘低延迟总线的开发人员,虽然我不知道他们具体的技术选型,从技术底层来看,并没…...

ESP32基础应用之esp32连接腾讯云并使用微信小程序控制的智能灯
文章目录 1. 项目简介1.1 功能接收1.2 使用资源1.3 测试平台 2 腾讯云物联网开发平台3 esp32设备开发3.1 准备参考例程3.2 vscode平台创建测试工程3.3 修改工程 问题总结使用PowerShell命令行终端生成的二维码不能用 1. 项目简介 1.1 功能接收 实现腾讯云创建项目与设备&…...

Unity Protobuf+RPC+UniTask
远程过程调用(RPC)协议详解 什么是RPC协议RPC的基本原理RPC的关键组件RPC的优缺点Protobuf函数绑定CallEncodeRecvDecodeSocket.Send和Recv项目地址 什么是RPC协议 远程过程调用(Remote Procedure Call,简称RPC)是一种…...

顶顶通呼叫中心中间件(mod_cti基于FreeSWITCH)-通话时长限制
文章目录 前言联系我们场景运用机器人场景普通通话场景 前言 顶顶通呼叫中心中间件限制通话时长有两种写法,分别作用于机器人场景与普通通话场景。 普通场景可分为分机互打、分机外呼手机等。 联系我们 有意向了解呼叫中心中间件的用户,可以点击该链接…...

如何将ai集成到项目中,方法二
上一篇文章:如何将ai集成到radsystems项目中,在项目中引入ai-CSDN博客 上一篇文章内容主要针对于未实现权限分离的项目,这篇文章主要来说一下权限分离的项目怎么做,以及注意的细节。 一、编写前端router.js 二、编写前端askai.vu…...
python的变量的引用与赋值的学习
看代码: a 1 # 初始化变量a,赋值为1 b a # 变量b被赋值为变量a的值,此时b的值也为1 b 2 # 变量b被重新赋值为2 print(a) # 打印变量a的值 执行过程如下: a 1:变量a被赋值为1。b a:变量b被赋值为…...

【FPGA项目】bin文件ram存取回环测试
🎉欢迎来到FPGA专栏~bin文件ram存取回环测试 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒🍹 ✨博客主页:小夏与酒的博客 🎈该系列文章专栏:FPGA学习之旅 文章作者技术和水平有限,如果文中出现错误,希望大…...

北航数据结构与程序设计第五次作业选填题复习
选填题考的很多都是基础概念,对于巩固复习一些仡佬拐角的知识点是很有用的。非北航学生也可以来看看这些题,这一节主要是树方面的习题: 一、 我们首先需要知道一个公式 这是证明: 知道了这个公式,我们把题目中的数据…...

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第40课-实时订阅后端数据
【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第40课-实时订阅后端数据 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引…...
系统集成知识科普:核心原理与关键技术
目录 1.系统集成的核心原理 1.1 模块化原理 1.1.1 定义: 1.1.2 优势: 1.1.3 实现方式: 1.2 标准化原理 1.2.1 定义: 1.2.2 作用: 1.2.3 实践案例: 1.2.4 制定与遵循: 1.3 协同性原理…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...

select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...

Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...