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

C++算法练习day70——53.最大子序和

题目来源:. - 力扣(LeetCode)

题目思路分析

题目:寻找最大子数组和(也称为最大子序和)。

给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

思路

  1. 暴力解法:最直接的方法是遍历所有可能的子数组,并计算它们的和,然后找出其中的最大值。然而,这种方法的时间复杂度是 O(n^3),对于大型数组来说效率太低。

  2. 动态规划:我们可以使用动态规划来优化这个问题。定义一个变量 maxnums 来记录当前找到的最大子数组和,另一个变量 pos 来记录当前子数组的和(以当前元素为结尾)。遍历数组时,对于每个元素,我们有两种选择:要么将其加入当前的子数组(即 pos + nums[i]),要么开始一个新的子数组(即 nums[i])。然后,更新 maxnums 为 maxnums 和 pos 中的较大值。

  3. Kadane's Algorithm:上述动态规划方法实际上就是著名的 Kadane's Algorithm。它的核心思想是,在遍历数组时,不断更新以当前元素为结尾的最大子数组和,同时记录全局的最大子数组和。

代码:

#include <vector>  
#include <algorithm> // 为了使用 max 函数  class Solution {  
public:  int maxSubArray(vector<int>& nums) {  // 初始化最大子数组和为数组的第一个元素  int maxnums = nums[0];  // 初始化当前子数组和为数组的第一个元素  int pos = nums[0];  // 遍历数组(从第二个元素开始)  for (int i = 1; i < nums.size(); i++) {  // 更新当前子数组和:要么继续当前子数组,要么开始新的子数组  pos = max(pos + nums[i], nums[i]);  // 更新全局最大子数组和  maxnums = max(maxnums, pos);  }  // 返回全局最大子数组和  return maxnums;  }  
};

知识点摘要

  1. Kadane's Algorithm:一种用于解决最大子数组和问题的线性时间复杂度算法。
  2. 动态规划:一种通过将问题分解为更小的子问题来解决问题的方法,通常用于优化问题。
  3. max 函数:用于比较两个值并返回其中的较大值。

本文介绍了如何使用 Kadane's Algorithm 来解决最大子数组和问题。通过维护两个变量(全局最大子数组和和当前子数组和),我们可以在遍历数组时不断更新它们,并最终得到全局最大子数组和。这种方法的时间复杂度是 O(n),非常高效。希望本文能帮助大家更好地理解最大子数组和问题和 Kadane's Algorithm。

相关文章:

C++算法练习day70——53.最大子序和

题目来源&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题目思路分析 题目&#xff1a;寻找最大子数组和&#xff08;也称为最大子序和&#xff09;。 给定一个整数数组 nums&#xff0c;找到一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#x…...

import是如何“占领满屏“

import是如何“占领满屏“的&#xff1f; 《拒绝使用模块重导&#xff08;Re-export&#xff09;》 模块重导是一种通用的技术。在腾讯、字节、阿里等各大厂的组件库中都有大量使用。 如&#xff1a;字节的arco-design组件库中的组件&#xff1a;github.com/arco-design… …...

ceph /etc/ceph-csi-config/config.json: no such file or directory

环境 rook-ceph 部署的 ceph。 问题 kubectl describe pod dragonfly-redis-master-0Warning FailedMount 7m59s (x20 over 46m) kubelet MountVolume.MountDevice failed for volume "pvc-c63e159a-c940-4001-bf0d-e6141634cc55" : rpc error: cod…...

C语言——验证“哥德巴赫猜想”

问题描述&#xff1a; 验证"哥德巴赫猜想" 任何一个大于2的偶数都可以表示为两个质数之和。例如&#xff0c;4可以表示为22&#xff0c;6可以表示为33&#xff0c;8可以表示为35等 //验证"哥德巴赫猜想" //任何一个大于2的偶数都可以表示为两个质数之和…...

Flourish笔记:柱状图(Column chart (grouped))

文章目录 样式设定Chart Type&#xff1a;图表类型Controls & Filters&#xff1a;展示方式Colors&#xff1a;颜色bars&#xff1a;柱子的调整labels&#xff1a;柱子数字标注X axis&#xff1a;横坐标标签Y axis&#xff1a;纵坐标标签Plot BackgroundNumber FormatingLe…...

深度学习案例:DenseNet + SE-Net

本文为为&#x1f517;365天深度学习训练营内部文章 原作者&#xff1a;K同学啊 一 回顾DenseNet算法 DenseNet&#xff08;Densely Connected Convolutional Networks&#xff09;是一种深度卷积神经网络架构&#xff0c;提出的核心思想是通过在每一层与前面所有层进行直接连接…...

excel文件合并,每个excel名称插入excel列

import pandas as pd import os # 设置文件夹路径 folder_path rC:\test # 替换为您的下载文件夹路径 output_file os.path.join(folder_path, BOM材料.xlsx) # 创建一个空的 DataFrame 用于存储合并的数据 combined_data pd.DataFrame() # 遍历文件夹中的所有文件 for …...

Linux 如何设置特殊权限?

简介 通过使用 setuid、setgid 、sticky&#xff0c;它们是 Linux 中的特殊权限&#xff0c;可以对文件和目录的访问和执行方式提供额外的控制。 命令八进制数字功能setuid4当执行文件时&#xff0c;它以文件所有者的权限运行&#xff0c;而不是执行它的用户的权限运行。setg…...

零基础如何使用ChatGPT快速学习Python

引言 AI编程时代来临&#xff0c;没有编程基础可以快速上车享受时代的红利吗&#xff1f;答案是肯定的。本文旨在介绍零基础如何利用ChatGPT快速学习Python编程语言&#xff0c;开启AI编程之路。解决的问题包括&#xff1a;传统学习方式效率低、缺乏互动性以及学习资源质量参差…...

【开源】一款基于SpringBoot 的全开源充电桩平台

一、下载项目文件 下载源码项目文件口令&#xff1a;动作璆璜量子屏多好/~d1b8356ox2~:/复制口令后&#xff0c;进入夸克网盘app即可保存&#xff08;如果复制到夸克app没有跳转资源&#xff0c;可以复制粘贴口令到夸克app的搜索框也可以打开&#xff08;不用点搜索按钮&#…...

AI - RAG中的状态化管理聊天记录

AI - RAG中的状态化管理聊天记录 大家好&#xff0c;今天我们来聊聊LangChain和LLM中一个重要的话题——状态化管理聊天记录。在使用大语言模型(LLM)的时候&#xff0c;聊天记录&#xff08;History&#xff09;和状态&#xff08;State&#xff09;管理是非常关键的。那我们先…...

JAVA安全—SpringBoot框架MyBatis注入Thymeleaf模板注入

前言 之前我们讲了JAVA的一些组件安全&#xff0c;比如Log4j&#xff0c;fastjson。今天讲一下框架安全&#xff0c;就是这个也是比较常见的SpringBoot框架。 SpringBoot框架 Spring Boot是由Pivotal团队提供的一套开源框架&#xff0c;可以简化spring应用的创建及部署。它提…...

【STM32系列】提升ADC采样精度的方法

资料地址 兆易创新GigaDevice-资料下载兆易创新GD32 MCU ADC简介 ADC转换包括采样、保持、量化、编码四个步骤。的采样电容上&#xff0c;即在采样开关 SW 关闭的过程中&#xff0c;外部输入信号通过外部的输入电阻 RAIN 和以及 ADC 采样电阻 RADC 对采样电容 CADC 充电。采样…...

前端面试如何出彩

1、原型链和作用域链说不太清&#xff0c;主要表现在寄生组合继承和extends继承的区别和new做了什么。2、推荐我的两篇文章&#xff1a;若川&#xff1a;面试官问&#xff1a;能否模拟实现JS的new操作符、若川&#xff1a;面试官问&#xff1a;JS的继承 3、数组构造函数上有哪些…...

Linux 切换用户的两种方法

sudo -su user1 与 su - user1 都可以让当前用户切换到 user1 的身份执行命令或进入该用户的交互式 Shell。但它们在权限认证方式、环境变量继承和 Shell 初始化过程等方面存在一些差异。 权限认证方式 su - user1 su 是 “switch user” 的缩写&#xff0c;默认情况下需要你输…...

Spring Boot 3 中Bean的配置和实例化详解

一、引言 在Java企业级开发领域&#xff0c;Spring Boot凭借其简洁、快速、高效的特点&#xff0c;迅速成为了众多开发者的首选框架。Spring Boot通过自动配置、起步依赖等特性&#xff0c;极大地简化了Spring应用的搭建和开发过程。而在Spring Boot的众多核心特性中&#xff…...

Vue实现留言板(实现增删改查)注意:自己引入Vue.js哦

代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><scri…...

IDEA创建Spring Boot项目配置阿里云Spring Initializr Server URL【详细教程-轻松学会】

1.首先打开idea选择新建项目 2.选择Spring Boot框架(就是选择Spring Initializr这个) 3.点击中间界面Server URL后面的三个点更换为阿里云的Server URL Idea中默认的Server URL地址&#xff1a;https://start.spring.io/ 修改为阿里云Server URL地址&#xff1a;https://star…...

读取电视剧MP4视频的每一帧,检测出现的每一个人脸并保存

检测效果还不错,就是追踪有点难做 import cv2 import mediapipe as mp import os from collections import defaultdict# pip install msvc-runtime# 初始化OpenCV的MultiTracker # multi_tracker = cv2.MultiTracker_create() # multi_tracker = cv2.legacy.MultiTracker_cre…...

HTML前端开发-- Iconfont 矢量图库使用简介

一、SVG 简介及基础语法 1. SVG 简介 SVG&#xff08;Scalable Vector Graphics&#xff09;是一种基于 XML 的矢量图形格式&#xff0c;用于在网页上显示二维图形。SVG 图形可以无限缩放而不会失真&#xff0c;非常适合用于图标、图表和复杂图形。SVG 文件是文本文件&#x…...

快速部署PyTorch 2.5:预装CUDA环境实战教程

快速部署PyTorch 2.5&#xff1a;预装CUDA环境实战教程 本文是一篇基础教程类文章&#xff0c;旨在帮助开发者快速上手使用预装了PyTorch 2.5和CUDA环境的深度学习镜像。无论你是刚接触深度学习的新手&#xff0c;还是需要快速搭建开发环境的老手&#xff0c;这篇教程都能让你…...

Win11Debloat:Windows 11系统优化与隐私保护终极指南

Win11Debloat&#xff1a;Windows 11系统优化与隐私保护终极指南 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本&#xff0c;用于从Windows中移除预装的无用软件&#xff0c;禁用遥测&#xff0c;从Windows搜索中移除Bing&#xff0c;以及执行各种其他更改以简化和改…...

Openclaw中文版落地:nanobot支持中文错误提示、中文文档与本地化调试

Openclaw中文版落地&#xff1a;nanobot支持中文错误提示、中文文档与本地化调试 1. nanobot&#xff1a;超轻量级OpenClaw中文版 nanobot是一款受OpenClaw启发的超轻量级个人人工智能助手&#xff0c;现在全面支持中文环境。这个工具最大的特点是轻量高效&#xff0c;仅需约…...

【Python原生AOT编译2026权威指南】:基于CPython 3.15+的零依赖二进制生成实战(含性能提升237%实测数据)

第一章&#xff1a;Python原生AOT编译的演进脉络与2026技术定位Python长期以来以解释执行和字节码&#xff08;.pyc&#xff09;为核心运行范式&#xff0c;其动态特性虽赋予开发极大灵活性&#xff0c;却在启动延迟、内存占用与部署包体积方面持续面临挑战。原生AOT&#xff0…...

GCC开发者转LLVM必看:模块化设计带来的5个关键工作流变革

GCC开发者转LLVM必看&#xff1a;模块化设计带来的5个关键工作流变革 当GCC开发者第一次接触LLVM时&#xff0c;往往会惊讶于其完全不同的设计哲学。就像从单块巨石建筑转向预制模块化结构&#xff0c;LLVM的三段式架构不仅改变了代码的组织方式&#xff0c;更从根本上重塑了编…...

从会议录音到字幕生成:基于FunASR和SpringBoot搭建一个轻量级语音处理中台

从会议录音到字幕生成&#xff1a;基于FunASR和SpringBoot搭建轻量级语音处理中台 每周例会后&#xff0c;行政小张总要花两小时反复听录音整理纪要。市场部的跨国会议录音&#xff0c;技术团队的头脑风暴存档&#xff0c;管理层战略讨论的逐字记录——这些音频文件堆积在共享…...

FLUX.1-dev实战教程:像素幻梦中多LoRA叠加与风格混合生成技巧

FLUX.1-dev实战教程&#xff1a;像素幻梦中多LoRA叠加与风格混合生成技巧 1. 像素幻梦工坊简介 Pixel Dream Workshop&#xff08;像素幻梦工坊&#xff09;是基于FLUX.1-dev扩散模型构建的专业像素艺术生成工具。与传统AI绘图工具不同&#xff0c;它专为像素艺术创作优化&am…...

ES6模块系统终极指南:掌握export *语法的高效用法

ES6模块系统终极指南&#xff1a;掌握export *语法的高效用法 【免费下载链接】es6features Overview of ECMAScript 6 features 项目地址: https://gitcode.com/gh_mirrors/es/es6features JavaScript模块化开发从未如此简单&#xff01;ECMAScript 6&#xff08;ES6&a…...

影墨·今颜效果实测:100张生成图中98.3%通过小红书内容审核标准

影墨今颜效果实测&#xff1a;100张生成图中98.3%通过小红书内容审核标准 1. 真实效果惊艳展示 「影墨今颜」作为基于FLUX.1-dev引擎的高端AI影像系统&#xff0c;在实际测试中展现出了令人印象深刻的效果表现。我们进行了严格的批量测试&#xff0c;生成100张不同风格的人像…...

手把手教你用Swaks和Gophish绕过SPF,搭建自己的邮件钓鱼测试环境(附避坑指南)

企业级邮件安全测试实战&#xff1a;从SPF绕过到钓鱼环境搭建 邮件安全测试已成为企业安全防护体系中不可或缺的一环。据统计&#xff0c;超过90%的网络攻击始于钓鱼邮件&#xff0c;而其中近40%的成功攻击源于SPF配置不当或完全缺失。本文将系统性地介绍如何构建一个完整的邮件…...