剑指 Offer 42. 连续子数组的最大和:C语言解法

news/2024/5/9 6:51:59/文章来源:https://blog.csdn.net/2201_75352618/article/details/130377025

剑指 Offer 42. 连续子数组的最大和 - 力扣(Leetcode)

输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。

要求时间复杂度为O(n)。

实例:

输入: nums = [-2,1,-3,4,-1,2,1,-5,4]
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。

        根据时间复杂度的要求:所以要求我们只能遍历组一遍,所以我们的操作必须精细。

        这里数据我们在使用三个变量来完成题目要求;

int maxSubArray(int* nums, int numsSize){}

画图建思路:

 

         prev保存的是当前移动连续元素的最大值

        max保存的是目前数据最大的连续数据。

        i 下标在数组中移动

        初始化数据不可设置未0,为了防止数组中全部都是负数,使用我们初始化prev与max都为数组第一个元素。

        因为题目给出数据至少有一个,所以 i 从第二个元素开始防止数组只有一个数据时出错。

        当i>=numsSize时循环结束放回max数据。

开始操作

        当  i  移动到下标 1 时,比较prev+nums[1]与nums[1]的大小如果前者大就原prev+nums[1]相加赋予新prev。如果后者大放弃原prev,将nums[i]单独赋予新prev,然后将新prev与原max比较,较大值赋予新max。

        这里的prev加上下标1元素大于下标1元素,新prev=下标2。当前新prev大于原max,新max=新prev


          i继续移动,i=2,比较prev+nums[2]与nums[2]的大小,将较大数据赋予新prev。然后将新prev与原max比较,较大值赋予新max。

        这里的prev加上下标2元素大于下标2元素,新prev=原prev+下标2。当前新prev小于max,max不改变。


        i继续移动,i=3,比较prev+nums[3]与nums[3]的大小,将较大数据赋予新prev。然后将新prev与原max比较,较大值赋予新max。

        这里的prev加上下标3元素小于下标3元素,放弃之前所有累加数据,只保存当前下标3数据。当前新prev大于原max,新max=新prev


        i继续移动,i=4,比较prev+nums[4]与nums[4]的大小,将较大者赋予新prev。然后将新prev与原max比较,较大值赋予新max。

        这里的prev加上下标4元素大于下标4元素,新prev=原prev+下标4。当前新prev小于max,max不改变。


         i继续移动,i=5,比较prev+nums[5]与nums[5]的大小,将较大数据赋予新prev。然后将新prev与原max比较,较大值赋予新max。

   这里的prev加上下标5元素大于下标5元素,新prev=原prev+下标5。当前新prev大于原max,新max=新prev


   i继续移动,i=6,比较prev+nums[6]与nums[6]的大小,将较大数据赋予新prev。然后将新prev与原max比较,较大值赋予新max。

        这里的prev加上下标6元素大于下标6元素,新prev=原prev+下标6。当前新prev大于原max,新max=新prev


   i继续移动,i=7,比较prev+nums[7]与nums[7]的大小,将较大数据赋予新prev。然后将新prev与原max比较,较大值赋予新max。

        这里的prev加上下标7元素大于下标7元素,新prev=原prev+下标7。当前新prev小于max,max不改变。


    i继续移动,i=8,比较prev+nums[8]与nums[8]的大小,将较大数据赋予新prev。然后将新prev与原max比较,较大值赋予新max。

         这里的prev加上下标8元素大于下标8元素,新prev=下标8。当前新prev小于max,max不改变。


i继续移动,i超出数组访问,循环结束,时间复杂度为O(N)复合要求。返回数据max,得出答案,该数组的连续子数组的最大和为:6。

代码实现

//使用long long 长整型防止数据过大!!!
long long fun_max(long long e1,long long e2)
{return e1>e2?e1:e2;
}
int maxSubArray(int* nums, int numsSize){long long prev=nums[0];long long max=nums[0];for(int i=1;i<numsSize;i++){prev=fun_max(prev+nums[i],nums[i]);max=fun_max(prev,max);}return max;
}

谢谢观看!!!!

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

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

相关文章

SOLIDWORKS认证考试流程

一、SOLIDWORKS认证考试前的准备工作 1、检查电脑硬件设备是否可以正常使用&#xff0c;如键盘鼠标等。 2、检查Solidworks软件是否可以正常使用。 3、关闭电脑所有杀毒软件。 4、检查电脑网络&#xff08;外网&#xff09;是否正常。 5.请联系我们获取考试系统软件安装包。…

Maven 下载及配置详细步骤

1、Maven 下载 Maven 官网地址:https://maven.apache.org/download.cgi(opens new window) 进入 Maven 官网,点击 archives 下载版本 3.6.2 找到下载的压缩包并解压

ByteHouse云数仓版查询性能优化和MySQL生态完善

ByteHouse云数仓版是字节跳动数据平台团队在复用开源 ClickHouse runtime 的基础上&#xff0c;基于云原生架构重构设计&#xff0c;并新增和优化了大量功能。在字节内部&#xff0c;ByteHouse被广泛用于各类实时分析领域&#xff0c;最大的一个集群规模大于2400节点&#xff0…

workerman开发者必须知道的几个问题

1、windows环境限制 windows系统下workerman单个进程仅支持200个连接。 windows系统下无法使用count参数设置多进程。 windows系统下无法使用status、stop、reload、restart等命令。 windows系统下无法守护进程&#xff0c;cmd窗口关掉后服务即停止。 windows系统下无法在一个…

初识Spring(普通方式Bean的读取过程)

1.SpringBoot 相⽐于 Servlet 的优点总结 1. 添加外部 jar 更容易&#xff0c;不易出错&#xff08;版本问题⽆需关注&#xff09;&#xff1b; 2. 调试项⽬更加⽅便&#xff0c;⽆需配置 Tomcat&#xff1b; 3. 发布项⽬更加⽅便&#xff0c;⽆需配置 Tomcat&#xff1b; 4. …

Redis学习笔记大全

文章目录 1、redis概述和安装1.1、安装redis1.2、启动redis方式1&#xff1a;前台启动&#xff08;不推荐&#xff09;方式2&#xff1a;后端启动&#xff08;推荐&#xff09; 1.3、关闭redis1.4、进入redis命令窗口1.5、redis命令大全1.6、redis介绍相关知识 2、redis 5大数据…

C#:如何用分部类将一个大文件改为多个小文件?

很多时候我们会发现&#xff0c;写来写去&#xff0c;一个文件慢慢就变得很大了&#xff0c;行数过千基本上就维护比较困难。 将公共代码模块化&#xff0c;可以减少一些代码&#xff0c;也是非常有效的。 那还有其它办法吗&#xff1f; 用 分部类 可以解决。 下面是简单的…

Java基础--->并发部分(1)

文章目录 线程基本概念线程的创建方式线程调度-------常用的方法线程的生命周期和状态并发编程的根本原因Java内存模型(JMM)多线程核心的根本问题volatile关键字保障原子性synchronized和ReentrantLock的区别 线程基本概念 ​ 进程是程序的一次执行过程&#xff0c;是系统运行程…

机器学习实战教程(十):逻辑回归

概述 逻辑回归&#xff08;Logistic Regression&#xff09;是一种用于解决二分类或多分类问题的统计学习方法。它以自变量线性组合的形式进行建模&#xff0c;并使用Sigmoid函数将结果映射到[0, 1]的值域内&#xff0c;表示样本属于某个类别的概率。 Logistic Regression是最…

STM32CubeMX配置I2C通讯

1.如上图所示点击New Project 2.如上图所示选择自己所开发的新品最后双击芯片型号 3.配置RCC&#xff0c;我的芯片使用的是外部高速晶振。这里如图所选。 4.配置一下串口 5.配置I2C 6.根据自己的硬件选择时钟源和主频 6.①填写项目名②选择项目路径③选择开发环境④获取代码 …

活动目录(Active Directory)安全审计

延迟响应变化的影响可能会使原本应该微不足道的颠簸滚雪球变成无法弥补的损害。这在 Windows Active Directory 环境中更为重要&#xff0c;因为这种延迟造成的损害可能会使组织损失数百万美元&#xff01;在这种情况下&#xff0c;需要一个警惕的警报系统&#xff0c;该系统可…

云原生-k8s核心概念(pod,deploy,service,ingress,configmap,volume)

Gitee-k8s学习 云原生实战-kubernetes核心实战 namespace Namespace是kubernetes系统中的一种非常重要资源&#xff0c;它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离 Pod Pod可以认为是容器的封装&#xff0c;一个Pod中可以存在一个或者多个容器。 De…

从零搭建MySQL监控平台(mysql-exporter+Prometheus+Grafana)

文章目录 一、软件安装二、 软件配置配置mysql_exporter配置prometheus配置Grafana 本文是我自己在Macbook上本地从零开始搭建一套MySQL监控平台&#xff0c;监控的也是我本机的MySQL&#xff0c;过程包括prometheus、mysql_exporter、Grafana的配置与下载。 一、软件安装 我是…

Python一行代码实现文件共享【内网穿透公网访问】

目录 1. 前言 2. 视频教程 3. 本地文件服务器搭建 3.1 python的安装和设置 3.2 cpolar的安装和注册 4. 本地文件服务器的发布 4.1 Cpolar云端设置 4.2 Cpolar本地设置 5. 公网访问测试 6. 结语 转载自内网穿透工具的文章&#xff1a;Python一行代码实现文件共享【内网…

践行公益担当|人情如故,爱心依旧

爱心助学 情暖童心 随着改革开放&#xff0c;少数民族地区发生了翻天覆地的变化&#xff0c;城乡经济持续发展&#xff0c;人民生活水平日益提高。但对于很多居住在偏远山区的民族自然村&#xff0c;由于山区的地形限制&#xff0c;自然生存环境恶劣&#xff0c;交通及文化、教…

Revit砌体排砖的几种方法对比

方法简介 传统砌体深化排砖是绘图者使用CAD 软件通过二维想象进行排布&#xff0c;在墙面转角、两面或多面墙相互咬砌的位置&#xff0c;门窗洞口过梁的位置&#xff0c;构造柱等位置由于二维图形的局限性很难观察出排布是否合理。然而复杂区域砌体排布若出错…

捷报连连丨小匠物联SILA第六届“智光杯”荣获两项跨界大奖

2023年4月26日&#xff0c;SILA第六届“智光杯”跨界奖项名单公布。 喜讯传来&#xff0c;小匠物联荣获SILA第六届“智光杯”跨界奖项-全屋智能及商用系统优秀新供应链奖、智能照明新锐优秀新供应链奖。 “智光杯”“智光杯”由上海浦东智能照明联合会&#xff08;SILA&#xf…

23.4.25总结

复习了MYSQL数据库的主键和外键的知识&#xff1a; 在设计表时&#xff0c;可以通过外键这个按钮&#xff0c;更改Update rule&#xff08;更新规则&#xff09;和Delete rule&#xff08;删除规则&#xff09;。 外键行为 默认情况下是&#xff1a;NO ACTION、RESTRICT 两…

【22-23 春学期】人工智能基础--AI作业2-监督学习

【22-23 春学期】AI作业2-监督学习_HBU_David的博客-CSDN博客 用自己的语言&#xff0c;解释以下概念 1 结构风险最小化 2 正则化 3 线性回归 4 逻辑斯蒂回归 5 Sigmoid 与 SoftMax 函数 6 决策树 7 信息熵 条件熵 信息增益 8 线性判别分析 LDA 9 概率近似正确 PAC …

最新:机器学习在生态、环境经济学中的实践技术应用及论文写作

查看原文>>>最新&#xff1a;机器学习在生态、环境经济学中的实践技术应用及论文写作 目录 专题一、理论基础与软件介绍 专题二、数据的获取与整理 专题三、常用评价方法与相关软件详细教学&#xff08;案例详解&#xff09; 专题四、写作要点与案例的讲解 近年来…