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

【LeetCode每日一题】——1588.所有奇数长度子数组的和

文章目录

  • 一【题目类别】
  • 二【题目难度】
  • 三【题目编号】
  • 四【题目描述】
  • 五【题目示例】
  • 六【题目提示】
  • 七【题目进阶】
  • 八【解题思路】
  • 九【时间频度】
  • 十【代码实现】
  • 十一【提交结果】

一【题目类别】

  • 前缀和

二【题目难度】

  • 简单

三【题目编号】

  • 1588.所有奇数长度子数组的和

四【题目描述】

  • 给你一个正整数数组 arr ,请你计算所有可能的奇数长度子数组的和。
  • 子数组 定义为原数组中的一个连续子序列。
  • 请你返回 arr 中 所有奇数长度子数组的和 。

五【题目示例】

  • 示例 1

    • 输入:arr = [1,4,2,5,3]
    • 输出:58
    • 解释:所有奇数长度子数组和它们的和为:
      [1] = 1
      [4] = 4
      [2] = 2
      [5] = 5
      [3] = 3
      [1,4,2] = 7
      [4,2,5] = 11
      [2,5,3] = 10
      [1,4,2,5,3] = 15
      我们将所有值求和得到 1 + 4 + 2 + 5 + 3 + 7 + 11 + 10 + 15 = 58
  • 示例 2

    • 输入:arr = [1,2]
    • 输出:3
    • 解释:总共只有 2 个长度为奇数的子数组,[1] 和 [2]。它们的和为 3 。
  • 示例 3

    • 输入:arr = [10,11,12]
    • 输出:66

六【题目提示】

  • 1 <= arr.length <= 100
  • 1 <= arr[i] <= 1000

七【题目进阶】

  • 你可以设计一个 O ( n ) O(n) O(n) 时间复杂度的算法解决此问题吗?

八【解题思路】

  • 该题很容易想到的思路就是暴力模拟,这个方式确实很简单,不过复杂度太高
  • 所以使用前缀和方法来解决该问题可以降低时间复杂度
    • 计算前缀和数组,前缀和数组的每一位表示从原数组的开始到每一位的累加和
    • 然后使用简单的数学运算找到所有奇数长度子数组
    • 最后使用前缀和数组对找到的所有奇数长度子数组求和
  • 最后返回结果即可
  • 具体细节可以参考下面的代码

九【时间频度】

  • 时间复杂度: O ( n 2 ) O(n^2) O(n2) n n n为传入的数组的长度
  • 空间复杂度: O ( n ) O(n) O(n) n n n为传入的数组的长度

十【代码实现】

  1. Java语言版
class Solution {public int sumOddLengthSubarrays(int[] arr) {// 计算前缀和数组,prefixSum[i]表示数组arr从索引0到i的累加和int[] prefixSum = new int[arr.length];prefixSum[0] = 0;for (int i = 1; i < arr.length; i++){prefixSum[i] = prefixSum[i - 1] + arr[i];}// 保存结果int sum = 0;// 计算所有奇数长度子数组的和for (int start = 0; start < arr.length; start++){// 计算奇数长度子数组区间的和for (int length = 1; start + length <= arr.length; length += 2){// 计算奇数长度子数组的末尾索引int end = start + length - 1;// 根据前缀和数组计算奇数长度子数组的和sum += prefixSum[end] - prefixSum[start] + arr[start];}}// 返回结果return sum;}
}
  1. Python语言版
class Solution:def sumOddLengthSubarrays(self, arr: List[int]) -> int:# 计算前缀和数组,prefixSum[i]表示数组arr从索引0到i的累加和prefix_sum = [0] * len(arr)prefix_sum[0] = 0for i in range(1, len(arr)):prefix_sum[i] = prefix_sum[i - 1] + arr[i]# 保存结果res = 0# 计算所有奇数长度子数组的和for start in range(0, len(arr)):# 计算奇数长度子数组区间的和for length in range(1, len(arr) - start + 1, 2):# 计算奇数长度子数组的末尾索引end = start + length - 1# 根据前缀和数组计算奇数长度子数组的和res += prefix_sum[end] - prefix_sum[start] + arr[start]# 返回结果return res
  1. C语言版
int sumOddLengthSubarrays(int* arr, int arrSize) 
{// 计算前缀和数组,prefixSum[i]表示数组arr从索引0到i的累加和int* prefixSum = (int*)malloc(sizeof(int) * arrSize);prefixSum[0] = arr[0];for (int i = 1; i < arrSize; i++){prefixSum[i] = prefixSum[i - 1] + arr[i];}// 保存结果int sum = 0;// 计算所有奇数长度子数组的和for (int start = 0; start < arrSize; start++){// 计算奇数长度子数组区间的和for (int length = 1; start + length <= arrSize; length += 2){// 计算奇数长度子数组的末尾索引int end = start + length - 1;// 根据前缀和数组计算奇数长度子数组的和sum += prefixSum[end] - prefixSum[start] + arr[start];}}// 返回结果return sum;
}

十一【提交结果】

  1. Java语言版
    在这里插入图片描述

  2. Python语言版
    在这里插入图片描述

  3. C语言版
    在这里插入图片描述

相关文章:

【LeetCode每日一题】——1588.所有奇数长度子数组的和

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【题目进阶】八【解题思路】九【时间频度】十【代码实现】十一【提交结果】 一【题目类别】 前缀和 二【题目难度】 简单 三【题目编号】 1588.所有奇数长度子数组的和 …...

自定义多级联动选择器指南(uni-app)

多端支持&#xff1a;可以运行在H5、APP、微信小程序还是支付宝小程序&#xff0c;都可以轻松使用改组件。自定义配置&#xff1a;您可以根据需要配置选择器的级数&#xff0c;使其适应不同的数据结构和用例。无限级联&#xff1a;此组件支持无限级联选择&#xff0c;使您能够创…...

RHCE笔记-SSH服务

一.对称加密与非对称加密 1.1对称加密 1. 原理 对称加密是指加密和解密使用相同的密钥。也就是说&#xff0c;发送方和接收方在通信之前需要共享一个秘密密钥&#xff0c;使用这个密钥对数据进行加密和解密。 2. 常见算法 AES (Advanced Encryption Standard)&#xff1a;…...

java实现文件分片上传并且断点续传

文章目录 什么是断点续传后端实现JAVA实现大文件分片上传断点续传 什么是断点续传 用户上传大文件,网络差点的需要历时数小时&#xff0c;万一线路中断&#xff0c;不具备断点续传的服务器就只能从头重传&#xff0c;而断点续传就是&#xff0c;允许用户从上传断线的地方继续传…...

leetcode hot100 之【LeetCode 15. 三数之和】 java实现

LeetCode 15. 三数之和 题目描述 给你一个包含 n 个整数的数组 nums&#xff0c;判断 nums 中是否存在三个元素 a&#xff0c;b&#xff0c;c 使得 a b c 0&#xff1f;请你找出所有和为 0 且不重复的三元组。 注意&#xff1a; 答案中的三元组可以按任意顺序组织。在 n…...

mysql学习教程,从入门到精通,sql序列使用(45)

sql序列使用 在SQL中&#xff0c;序列&#xff08;Sequence&#xff09;是一种数据库对象&#xff0c;用于生成唯一的数值&#xff0c;通常用于自动递增的主键。不同的数据库管理系统&#xff08;DBMS&#xff09;对序列的支持和语法可能有所不同。以下是一些常见的DBMS&#…...

Java 中的异常处理、常见异常、如何自定义异常类、Checked 和 Unchecked 异常的区别、如何处理数据库事务中的异常

文章目录 1. 异常的基本概念与处理方法定义常见异常类补充说明&#xff1a; 异常处理方法示例 2.如何自定义异常类步骤示例 3. Java 中的 Checked 和 Unchecked 异常的区别Checked 异常Unchecked 异常示例 4. 如何处理数据库事务中的异常常见场景处理方式示例讨论 总结 异常是指…...

6.1 特征值介绍

一、特征值和特征向量介绍 本章会开启线性代数的新内容。前面的第一部分是关于 A x b A\boldsymbol x\boldsymbol b Axb&#xff1a;平衡、均衡和稳定状态&#xff1b;现在的第二部分是关于变化的。时间会加入进来 —— 连续时间的微分方程 d u / d t A u \pmb{\textrm{d}…...

Vue01

前端最新Vue2Vue3基础入门到实战项目全套教程&#xff0c;自学前端vue就选黑马程序员&#xff0c;一套全通关&#xff01;_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1HV4y1a7n4?spm_id_from333.788.videopod.episodes&vd_source016213ecd945408976ff307a6bda30…...

MySQL - Navicat自动备份MySQL数据

对于从事IT开发的工程师&#xff0c;数据备份我想大家并不陌生&#xff0c;这件工程太重要了&#xff01;对于比较重要的数据&#xff0c;我们希望能定期备份&#xff0c;每天备份1次或多次&#xff0c;或者是每周备份1次或多次。 如果大家在平时使用Navicat操作数据库&#x…...

系统分析师20:【案例特训专题3】系统设计与运维

1 Web开发 1.1 Web开发涉及技术的综合应用 高性能高可用可维护应变安全 1.2 Web系统架构演化过程 1.2.1 单台机器到数据库与Web服务器分离 早期的web系统往往以单台机器形态出现&#xff0c;web网站无论是前端还是后台数据库都部署在一台服务器上&#xff0c;部署起来比较…...

Linux 局域网中使用NTP配置时间服务

一&#xff1a;NTP 时间服务器配置 前提&#xff1a; 局域网环境中一般不能直接使用互联网上提供的时间服务器&#xff0c;例如ntp.aliyun.com。所以可以使用局域网中的一个服务器时间为基准&#xff0c;其他服务器的时间都和他保持一致。 1、将服务器的系统时间配置为时间源…...

Shiro会话管理和加密

一、会话相关API及会话使用 Shiro提供了完整的企业级会话管理功能&#xff0c;不依赖于底层容器&#xff08;如Web容器Tomcat&#xff09;&#xff0c;可以在JavaSE和JavaEE环境中使用。会话相关API主要包括&#xff1a; Subject.getSession(): 获取当前用户的会话&#xff0…...

GPON、XG-PON和XGS-PON的区别

类别GPON10G PON 细分 GPON XG-PON XGS-PON 下行速率 2.488 Gbps 9.953 Gbps 9.953Gbps 上行速率 1.244 Gbps 2.488 Gbps 9.953Gbps 可用带宽 2200Mbps 8500Mbps 8500Mbps 1000Mbps2000Mbps8500Mbps ITU-T标准 G.984&#xff08;2003年&#xff09; G.987 &a…...

Spring 项目返回值枚举类编写技巧

Spring 项目返回值枚举类编写技巧 在 Spring 项目中&#xff0c;使用枚举类来统一管理返回值和状态码是一种非常优雅的实现方式。这不仅能提升代码的可读性和维护性&#xff0c;还能避免在代码中硬编码字符串或数字来表示状态码。本文将以 ReturnCodeEnum 为例&#xff0c;介绍…...

【操作系统】06.进程控制

一、进程创建 1.1 认识fork函数 在linux中fork函数是非常重要的函数&#xff0c;它从已存在进程中创建一个新进程。新进程为子进程&#xff0c;而原进程为父进程。 进程调用fork&#xff0c;当控制转移到内核中的fork代码后&#xff0c;内核将 分配新的内存块和内核数据结构…...

16天自制CppServer-day02

day02-设置错误与异常处理机制 上一天我们写了一个客户端与服务器通过socket进行连接&#xff0c;对socket,bind,listen,accept,connect等函数&#xff0c;我们都设想程序完美地、没有任何异常地运行&#xff0c;但显然这不现实&#xff0c;应该设置出现异常的处理机制&#x…...

时空智友企业流程化管控系统uploadStudioFile接口存在任意文件上传漏洞

免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 1. 时空智友…...

Linux 中文件的权限说明

目录 一&#xff1a;文件权限类型二&#xff1a;默认权限管理1. 查看当前用户的umask值2. 修改当前用户的umask值3. 根据umask计算默认权限 三&#xff1a;普通权限管理1. 三种普通权限说明1.1 对于非目录文件来说1.2 对于目录文件来说 2. 查看某个文件的权限信息2.1 使用 ls -…...

MySql数据库中数据类型

本篇将介绍在 MySql 中的所有数据类型&#xff0c;其中主要分为四类&#xff1a;数值类型、文本和二进制类型、时间日期、String 类型。如下&#xff08;图片来源&#xff1a;MySQL数据库&#xff09;&#xff1a; 目录如下&#xff1a; 目录 数值类型 1. 整数类型 2. …...

构建可靠AI编码代理:OpenClaw-Build工作流详解与实战

1. 项目概述&#xff1a;一个能“闭环”的AI编码代理工作流如果你用过市面上那些号称能自动编程的AI代理&#xff0c;大概率经历过这样的挫败感&#xff1a;你满怀期待地丢给它一个需求&#xff0c;它吭哧吭哧干了两三个任务&#xff0c;然后要么开始“神游”&#xff0c;写出来…...

构建可靠AI智能体:从提示词工程到结构化内容生成的实战指南

1. 项目概述与核心思路最近在折腾AI应用开发&#xff0c;特别是想搞一个能稳定输出、逻辑清晰、还能带点“人味儿”的文本生成工具。市面上现成的方案要么太“机械”&#xff0c;要么定制化程度不够&#xff0c;总感觉差点意思。后来&#xff0c;我在一个开发者社区里看到了一个…...

苹果为何拒绝TD-SCDMA特供版iPhone?复盘技术标准与市场时机的战略博弈

1. 项目概述&#xff1a;一场关于苹果与中国移动的世纪猜想2012年的科技圈&#xff0c;空气中弥漫着一股躁动与期待。几乎所有的行业分析师和手机发烧友都在讨论同一个话题&#xff1a;苹果公司是否会为了全球最大的移动运营商——中国移动&#xff0c;专门推出一款支持TD-SCDM…...

SBQE:量子机器学习数据编码的创新方法

1. SBQE&#xff1a;量子机器学习数据编码的新范式量子计算领域最近迎来了一项突破性进展——SBQE&#xff08;Shot-Based Quantum Encoding&#xff09;数据编码方法。作为一名长期跟踪量子机器学习发展的研究者&#xff0c;我亲历了这项技术从理论提出到实验验证的全过程。SB…...

3分钟掌握GeoJSON.io:零代码地理数据可视化的革命性工具

3分钟掌握GeoJSON.io&#xff1a;零代码地理数据可视化的革命性工具 【免费下载链接】geojson.io A quick, simple tool for creating, viewing, and sharing spatial data 项目地址: https://gitcode.com/gh_mirrors/ge/geojson.io 还在为复杂的地理信息系统软件而烦恼…...

从OpenClaw到memU Bot:企业级AI代理的记忆优先架构与实战部署

1. 项目概述&#xff1a;从个人助手到企业级AI代理的跃迁如果你和我一样&#xff0c;是OpenClaw的早期用户&#xff0c;那你一定体验过那种“私人AI管家”带来的便利。它能帮你写邮件、查资料、整理文件&#xff0c;就像一个随时待命的数字伙伴。但当我们尝试在团队内部推广&am…...

HFSS新手避坑指南:手把手教你设置Floquet Port和主从边界(附矩形波导实例)

HFSS阵列仿真实战&#xff1a;从Floquet Port到主从边界的精准设置 第一次打开HFSS准备仿真周期性结构时&#xff0c;那种既兴奋又忐忑的心情我至今记忆犹新。作为计算电磁学领域的黄金标准工具&#xff0c;HFSS在阵列天线、频率选择表面等周期性结构分析中展现出无可替代的价…...

从 SU22 到 SU24,权限检查指示符和默认值的装载与落地治理

在 SAP 权限项目里,最容易被低估的一类数据,不是用户主记录,也不是 PFCG 角色本身,而是藏在 SU22 和 SU24 背后的权限检查指示符与授权默认值。很多团队在 DEV 系统里把角色调到绿灯,以为传到 QAS 和 PRD 以后就万事大吉,结果一到回归测试,业务顾问打开 VA01、ME21N、FD…...

从空洞卷积到多尺度感知:图解PyTorch中ASPP的设计哲学与实现细节(附可运行代码)

从空洞卷积到多尺度感知&#xff1a;图解PyTorch中ASPP的设计哲学与实现细节&#xff08;附可运行代码&#xff09; 当我们观察一幅画时&#xff0c;眼睛会自然地聚焦在不同尺度的细节上——从整体构图到局部纹理&#xff0c;这种多尺度感知能力是人类视觉系统的核心优势。计算…...

Kali Linux更新卡住?别急,先检查DNS!手把手教你用阿里云/谷歌DNS解决网络问题

Kali Linux更新卡住&#xff1f;三步精准诊断DNS问题与高效解决方案 当你满心期待地在Kali Linux中执行apt update&#xff0c;却发现进度条像被冻住一般纹丝不动&#xff0c;这种体验就像在沙漠中寻找绿洲却始终看不到水源。作为安全测试人员的瑞士军刀&#xff0c;Kali Linux…...