当前位置: 首页 > news >正文

力扣刷题总结 -- 数组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. 所有奇数长度子数组的和&#xff08;简单&#xff09; 题目要求&#xff1a; 给定一个正整数数组 arr &#xff0c;计算所有奇数长度子数组的和。 子数组定义为原数组中的一个连续子序列。 返回 arr 中 所有奇数长度子数组的和 。 题目分析&#xff1a; 先得到所有子…...

无线MODBUS通讯模块在供水系统中的应用

一、项目背景 我国是人口大国、农业大国&#xff0c;同时也是贫水大国。由于大量工业废水污染了部分河流、地表的浅层水资源&#xff0c;并且有逐年加重的趋势&#xff0c;再加上农业、绿化等灌溉对水资源的大量消耗&#xff0c;这些因素综合作用进一步加剧了我国水资源紧缺的…...

linux为什么不是实时操作系统

Linux为什么不是实时操作系统&#xff1f; 从我们接触Linux系统开始&#xff0c;一直听到的都是它是非实时操作系统&#xff0c;怎么理解这个非实时呢&#xff1f; 我的理解&#xff0c;非实时&#xff0c;就是中断响应不及时&#xff0c;任务调度不及时。那么&#xff0c;真…...

【STM32】飞控设计

【一些入门知识】 1.飞行原理 【垂直运动】 当 mg&#xff1e;F1F2F3F4&#xff0c;此时做下降加速飞行 当 mg&#xff1c;F1F2F3F4&#xff0c;此时做升高加速飞行 当 mgF1F2F3F4 &#xff0c;此时垂直上保持匀速飞行。 【偏航飞行】 ω 4 ω 2 ≠ ω 1 ω 3 就会产生水…...

MSPM0G3507——引脚分布图

...

MySQL CDC

一、MySQL CDC概念 MySQL CDC&#xff08;Change Data Capture&#xff09;&#xff0c;即MySQL变更数据捕获&#xff0c;是一种能够捕获MySQL数据库中数据变化&#xff08;包括插入、更新和删除操作&#xff09;的技术。这些变化可以实时或准实时地同步到其他系统或服务中&am…...

手把手教你安装 Vivado2022.2(附安装包)

​一、Vivado 2022.2 优势 Vivado 2022.2版本与之前的版本相比&#xff0c;具有以下几个显著的优势&#xff1a; 电源设计管理器&#xff08;PDM&#xff09;&#xff1a;Vivado 2022.2引入了全新的电源设计管理器&#xff08;PDM&#xff09;&#xff0c;这是一个下一代功耗评…...

旅行者1号有什么秘密?飞行240多亿公里,为什么没发生碰撞?

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

如何保护云主机安全

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

postman教程-19-mock测试

上一小节我们学习了Postman接口参数化方法&#xff0c;本小节我们讲解一下Postman mock测试的方法。 一、什么叫mock测试 mock测试就是在测试过程中&#xff0c;对某些不容易构造或者不容易获取的对象&#xff0c;用一个虚拟的对象来创建以便于测试的一种测试方法&#xff0c…...

纳秒级网络库【二】技术选型

在十年之前&#xff0c;已经有网络产品实现7纳秒延迟&#xff0c;所以无需质疑是否能够实现&#xff0c;关键问题是&#xff1a;代价是什么。国内不少量化公司在招聘低延迟总线的开发人员&#xff0c;虽然我不知道他们具体的技术选型&#xff0c;从技术底层来看&#xff0c;并没…...

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

远程过程调用&#xff08;RPC&#xff09;协议详解 什么是RPC协议RPC的基本原理RPC的关键组件RPC的优缺点Protobuf函数绑定CallEncodeRecvDecodeSocket.Send和Recv项目地址 什么是RPC协议 远程过程调用&#xff08;Remote Procedure Call&#xff0c;简称RPC&#xff09;是一种…...

顶顶通呼叫中心中间件(mod_cti基于FreeSWITCH)-通话时长限制

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

如何将ai集成到项目中,方法二

上一篇文章&#xff1a;如何将ai集成到radsystems项目中&#xff0c;在项目中引入ai-CSDN博客 上一篇文章内容主要针对于未实现权限分离的项目&#xff0c;这篇文章主要来说一下权限分离的项目怎么做&#xff0c;以及注意的细节。 一、编写前端router.js 二、编写前端askai.vu…...

python的变量的引用与赋值的学习

看代码&#xff1a; a 1 # 初始化变量a&#xff0c;赋值为1 b a # 变量b被赋值为变量a的值&#xff0c;此时b的值也为1 b 2 # 变量b被重新赋值为2 print(a) # 打印变量a的值 执行过程如下&#xff1a; a 1&#xff1a;变量a被赋值为1。b a&#xff1a;变量b被赋值为…...

【FPGA项目】bin文件ram存取回环测试

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

北航数据结构与程序设计第五次作业选填题复习

选填题考的很多都是基础概念&#xff0c;对于巩固复习一些仡佬拐角的知识点是很有用的。非北航学生也可以来看看这些题&#xff0c;这一节主要是树方面的习题&#xff1a; 一、 我们首先需要知道一个公式 这是证明&#xff1a; 知道了这个公式&#xff0c;我们把题目中的数据…...

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第40课-实时订阅后端数据

【WEB前端2024】3D智体编程&#xff1a;乔布斯3D纪念馆-第40课-实时订阅后端数据 使用dtns.network德塔世界&#xff08;开源的智体世界引擎&#xff09;&#xff0c;策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引…...

系统集成知识科普:核心原理与关键技术

目录 1.系统集成的核心原理 1.1 模块化原理 1.1.1 定义&#xff1a; 1.1.2 优势&#xff1a; 1.1.3 实现方式&#xff1a; 1.2 标准化原理 1.2.1 定义&#xff1a; 1.2.2 作用&#xff1a; 1.2.3 实践案例&#xff1a; 1.2.4 制定与遵循&#xff1a; 1.3 协同性原理…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

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

JavaSec-RCE

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

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

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是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库&#xff08;uthash库&#xff09;提供对哈希表的操作&#xff0c;文章如下&#xff1a; C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...