剑指offer-刷题笔记-简单题-JZ42 连续子数组的最大和

剑指offer所有编程练习总结分析 给出剑指offer所有题目描述和对应的解题思路,并且在最有给出对应的代码展示和测试内容 由于牛客剑指Offer题目经过整理和筛选,是面试备考的经典资源之一,因此它的重要性在面试准备过程中是很高的。做这些题目可以帮助面试者熟悉常见的面试题型、巩固基础知识、提升编程能力,为应对面试提供了很好的准备。然而,还需注意不仅仅局限于做题,理解背后的原理和思想同样重要,以便能够在面试时灵活运用和展示自己的能力。 阅读详情

剑指offer-刷题笔记-简单题-JZ42 连续子数组的最大和

重点记录一下动态规划的方法,目前使用动态规划的方法共做了两道题,还有一个是JZ10 斐波那契数列,方法就是清楚每一个最优的子结构,比如斐波那契数列,f(1)=1,f(2)=1,f(3)=f(2)+f(1),f(n)=f(n-1)+f(n-2),并且最优子结构之间存在对应关系,将最优子结构存储,然后用的时候再取出。

动态规划解决JZ10 斐波那契数列
class Solution {
public:
int Fibonacci(int n) {
		
		int f[50];
		f[1] = 1;
		f[2] = 1;
		for (int i =3; i <= n;i++)
		{
			f[i] = f[i-2]+ f[i-1];
		}
		return f[n];
	}
};

算法导论中有一道切割钢条的问题,也适用于动态规划,可以计算得到最大收益为f(1) = 1,f(2)=5,f(3)=8,f(4)=10,最大收益即最大子结构,最大收益如何找到呐,就是两种,要么切开为前面的最大收益的和f(i)+f(j) i+j = n,要幺不切开为p(n),则对应关系为f(1) = max(p(1)),f(2) = max(p(2),f(1)+f(1)),f(3) = max(p(3),f(1)+f(2)),f(4) = max(p(4),f(2)+f(2),f(1)+f(3)),注意这里不要再将f(4)=f(1)+f(2)+f(1)或者其他的,因为每次取得都是前面最大收益,这样对应关系也有了,f(n)=max(p(n),f(i)+f(j)) i+j=n

在这里插入图片描述

动态规划解决切割钢条
 int buttom_up_cut(vector<int> p)
	{
		int size = p.size()-1;
	  	vector<int> f(size+2);
	  	f.pushback(p[0]);
		for(int i=1;i <= size;i++)
		{
			int q=-1;
			for(int j=1;j<=i;j++)
			{
				q = max(q, p[j-1]+f[i-j]);//为了保证最后的是最大值,不断更新q
			}
			f.pushback(q);
		}
		return f[size];
	}

版本1
class Solution {
public:
    int FindGreatestSumOfSubArray(vector<int> array) {
        //int result;
        if(array.size() == 1)
        {
            return array[0];
        }else{
            int count = array[0];//从第一个数字开始累加 
            int temp = count;//前一个最大值
            for(int i = 1;i<array.size();i++)
            { 
                if(count < 0)
                {
                    count = array[i];//序列第一个位置改变
                }
                else{
                    count += array[i];//不断累加
                }
                temp = temp > count ? temp : count;//判断加了元素之后最大值是否变小,正对最后一个数字为是负数
            }
            return temp;
        }

        //return result;
        
    }
};

同样的求连续子数组的最大和也可以用动态规划,即保证每一个子数组达到最优结构,再找到对应关系,类似的关系,f(1) = max(p(1),p(1)+f(0)),f(2) = max(p(2),p(2)+f(1)),f(i)=max(p(i),p(i)+f(i-1)),也就是说当前最有子结构应该为max(当前值,当前值+前一个最优子结构)

版本2-动态规划
class Solution {
public:
    int FindGreatestSumOfSubArray(vector<int> array) {
        int sz = array.size();
        vector<int> dp(sz+1, 1);
        dp[0] = 0; // 表示没有元素
        int ret = array[0];
        for (int i=1; i<=sz; ++i) {
            dp[i] = max(array[i-1], dp[i-1]+array[i-1]);
            ret = max(ret, dp[i]);//为了保证最后的是最大值,不断更新
        }
        return ret;
    }
};
ADS高级技巧:用DAC控件实现多变量参数扫描(以S参数和阻抗匹配为例) 本文深入解析了ADS软件中DAC控件的高级应用,指导用户如何利用其实现多变量参数扫描。通过构建支持多变量的MDF文件,并将其与原理图变量动态映射,可以高效完成如S参数和阻抗匹配等复杂场景的联合仿真与可视化分析,显著提升射频电路设计的效率和深度。 阅读详情

相关推荐

AI大模型与碳足迹评估结合模式及示范案例

AI大模型与碳足迹评估相结合,可以提供更精确、更快速的碳排放量计算,优化减排策略,并促进可持续发展目标的实现。

贾贾的博客 3943

【刷题之路】牛客剑指offer JZ42 连续子数组的最大和

在求最长回文子串的时候当一个子串的长度增加时,只可能有两种情况增长后的字串不是回文串和是回文串,如果是回文串,那么最长回文串的长度就一定会增加。而现在我们求的最大子串总和当子串的长度增加时,总和有可能是减小的,因为在子串增长的时候后面又可能遇到的是负数。每求出一个dp[i],我们都将它与现已有的最大子串总和max_sum进行比较,当我们遍历完数组之后,我们就求出了连续子数组的最大和。枚举出所有的子数组,求出子数组中元素的总和,每次都跟已有的最大子数组元素总和max_sum进行对比。

kk702392702的博客 903

Win11系统下Abaqus 2025子程序开发环境一站式配置指南

本文详细介绍了在Win11系统下配置Abaqus 2025子程序开发环境的完整流程,包括VS2022和Intel oneAPI的安装与优化,以及Abaqus 2025的目录规划与环境联调。通过避坑指南和实战案例,帮助用户高效完成开发环境配置,避免常见错误,提升工作效率。

weixin_28717431的博客 332

剑指offer第2版:动态规划+记忆化搜索

前三题是同一种模型,所以我分别用递推、记忆化、动归来做

weixin_51142926的博客 4638

STM32F103VET6实战:用W25Q64外部Flash实现Bootloader远程升级(含完整代码解析)

本文详细介绍了基于STM32F103VET6与W25Q64外部Flash的Bootloader远程升级实现方案,包含硬件选型、存储分区策略、双校验机制及完整代码解析。通过SPI接口实现固件存储与升级,适用于物联网设备开发,提升OTA功能可靠性。

weixin_42620340的博客 357

Unity面试题总结

Unity面试题

sinat_34014668的博客 1万+

《剑指offer》刷题记录汇总篇

《剑指offer》刷题汇总1 前言2 刷题网站3 刷题笔记汇总 1 前言   最近啃了个把月的数据结构与算法,有点飘了,准备拿牛客网的剑指offer模块练练手,个人觉得自己刚入门(或许还没入),所以这篇博客比较适合想学习数据结构或者刚接触数据机构的新手朋友朋友们,当然,大佬们也可以看看,一是指导,二是差缺补漏。   刷题顺序即题目顺序,时间的话大概一周 2 刷题网站 点击直达:剑指offer 3 刷题笔记汇总 题号 题目 知识点 JZ1 二维数组中的查找 数组、查找 JZ2 替换空格 字

郑德帅 864

Kettle Web版部署指南

看到以上的日志则表示启动成功。

2401_89221867的博客 1717

LeetCode刷题总结 - 剑指offer系列 - 持续更新

LeetCode刷题总结

qq_45464560的博客 5241

图神经网络实战(8)——图注意力网络(Graph Attention Networks, GAT)

图注意力网络 (Graph Attention Networks, GAT) 是对图卷积网络 (Graph Convolutional Network, GCN) 的改进,提出了一种通过自注意力 (self-attention) 过程计算的加权因子,而不是使用静态的归一化系数。在本节中,我们介绍了 GAT 架构。通过从线性变换到多头注意力的四个主要步骤,了解了 GAT 的工作原理,并在 NumPy 中从零开始构建了 GAT 层。最后,将 GAT 模型应用于 Cora 和 CiteSeer 数据集。

盼小辉丶的博客 1万+

【数据库系统工程师】5.4Internet基础知识

目录一、思维导图二、知识点1.Internet 概述2.Internet 地址(1)域名(2)IP 地址(3)NAT技术(4)IPv6简介3.Internet 服务(1)域名服务(2)远程登录服务(3)电子邮件服务(4)WWW服务(5)文件传输服务 一、思维导图 二、知识点 1.Internet 概述 2.Internet 地址 (1)域名 ○ 一个完整、通用的层次型主机域名由如下4部分组成: 计算机主机名.本地名.组名.最高层域名 (2)IP 地址 ○ 每个IP地址都由4个小于256的数字组成,数字之

邓邓子的博客 911

【剑指offer-C++】JZ42:连续子数组的最大和

【剑指offer-C++】JZ42:连续子数组的最大和

❀雾里看花花里看雾❀ 267

22、常见加密哈希算法及安全机制解析

本文详细解析了多种常见加密哈希算法,包括SHA系列、RIPEMD、Tiger、HAVAL、Whirlpool等,涵盖其工作原理、安全性与性能对比。同时探讨了哈希攻击方式如预映像攻击和彩虹表,并介绍了盐、MAC、HMAC等防御机制。结合密码存储、消息完整性验证及区块链应用案例,分析了不同场景下的算法选择建议,并展望了哈希算法在创新、融合与标准化方面的未来发展趋势。

seed的博客 390

【剑指offer】JZ85 连续子数组的最大和(二)

说明:经分析可知,最大子数组的和为4,有[4],[4,-1,1],[1,2,-3,4],[1,2,-3,4,-1,1],故返回其中长度最长的[1,2,-3,4,-1,1]1.子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组。说明:经分析可知,输入数组的子数组[3,10,-4,7,2]可以求得最大和为18,故返回[3,10,-4,7,2]输入:[1,-2,3,10,-4,7,2,-5]输入:[1,2,-3,4,-1,1,-3,2]

LouHerGetUp的博客 412

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【剑指offer系列——JavaScript版】每日2题——连续子数组的最大和

【剑指offer系列——JavaScript版】每日2题——连续子数组的最大和,文章对其细节认真分析,希望帮助到刷题迷茫的小伙伴,大家一起学习进步!

qq_50497708的博客 439

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

牛客刷题——剑指offer(第6期)

保姆级教学——牛客刷题——剑指offer(第6期)

weixin_59796310的博客 751

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

剑指offer笔记(六) 第40题至第46题

剑指offer笔记(六) 第40题至第46题前言一、JZ40 最小的k个数二、JZ41 数据流中的中位数三、JZ42 连续子数组的最大和四、JZ43 1~n整数中1出现的次数五、JZ44 数字序列中某一位的数字六、JZ45 把数组排成最小的数七、JZ46 把数字翻译成字符串八、总结 前言 这次主要记录剑指offer的7道题,主要使用的语言是python,下面将对这7道题的一些感悟和知识点进行汇总! 提示:以下是本篇文章正文内容,下面案例可供参考 截图来源于LeetCode 一、JZ40 最小的k个数

weixin_42269028的博客 362

剑指offer-刷题总结

1.前言   大概过了一两遍剑指offer,思路基本上是复制网上大佬的思想。希望面试的时候能自己默写出来把,现在把剑指offer的题型和结题思路总结一下,便于后序复习和进阶。 2.1 链表题 剑指offer_T3_从尾到头打印链表_C++ 思路1:利用栈先入后出的特性,顺序存入,倒序打印 思路2:利用两个节点(双指针)原地反转后再打印出来 思路3:利用stl的reverse() 函数实现反转后再打印 JZ14 链表中倒数最后k个结点 思路1:可以直接暴力遍历,如果已知链表的长度,则顺序遍历的长度就已知了 思

qq_35027690的博客 824

剑指offer刷题宝典--第3节

剑指offer刷题宝典--第3节,动态规划,回溯,DFS

weixin_41171614的博客 804

《剑指offer》Java版题解:动态规划篇一

目录 前言 一、JZ42连续子数组的最大和 二、JZ85连续子数组的最大和(二) 三、跳台阶 四、JZ10斐波那契数列 五、JZ71跳台阶扩展问题​ 六、JZ70矩形覆盖 总结 前言 本篇文章记录本人练习《剑指offer》动态规划篇的心得与体会,题目来源于牛客网,语言选用Java,如有提议和建议,欢迎在评论区不吝赐教。感谢~ 一、JZ42连续子数组的最大和 题解思路: 这题如果不使用动态规划的思想的话,我们可以通过两次循环遍历...

weixin_56032340的博客 705

剑指offer(C++)-JZ42:连续子数组的最大和(算法-动态规划)

C++实现——连续子数组的最大和(算法-动态规划)

翟天保的博客 1万+

【剑指offer-C++】JZ85:连续子数组的最大和(二)

【剑指offer-C++】JZ85:连续子数组的最大和(二)

❀雾里看花花里看雾❀ 682

剑指offer(C++)-JZ85:连续子数组的最大和(二)(算法-动态规划)

C++实现——连续子数组的最大和(二)(算法-动态规划)

翟天保的博客 1万+

剑指Offer:JZ30 - 连续子数组最大和(解题思路+Java代码)

HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和,你会不会被他忽悠住?(子向量的长度至少是1)

枫叶火火的博客 650

[剑指OFFER]之动态规划:JZ42 连续子数组的最大和

输入一个长度为n的整型数组array,数组中的一个或连续多个整数组成一个子数组,子数组最小长度为1。求所有子数组的和的最大值。

EndlessProcess的专栏 723

剑指 Offer JZ30 连续子数组的最大和

题目描述 {6, -3, -2, 7, -15, 1, 2, 2},连续子数组的最大和为 8(从第 0 个开始,到第 3 个为止)。 public class Solution { public int FindGreatestSumOfSubArray(int[] array) { int max=Integer.MIN_VALUE; for(int i=0;i<array.length;i++){ int temp=array[

sinat_31089473的博客 190
上一篇: 剑指offer-刷题笔记-简单题-JZ32 从上往下打印二叉树
下一篇: 剑指offer-刷题笔记-简单题-JZ50 第一个只出现一次的字符
xiaoliyu00
博客等级 码龄9年 4180粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值