leetcode 最大子序列和:

最大子序列和

首先想到的就是最大子序列和 ,题目只要求最初最大子序列的和,能够想到的是还能变为求最大子序列

实际上能够想到的最简单的就是求最大子序列和,就是最大值,负值直接跳过,保持最大值就可以,不由就能想到  num[i] < 0 的都可以去掉   也就是  num[i] + num[i+1] 和 num[i+1]做比较 取最大值;

因此我们能够想到 动态规划转移方程: f(i) = MAX(f(i-1)+nums[i],nums[i])

class Solution {public int maxSubArray(int[] nums) {// 求最大的子序列和  求子序列 就会想到 动态规划// 数组子序列int max = nums[0];int pre = 0 ;for(int i = 0 ; i < nums.length;i++){pre = Math.max(pre+nums[i],nums[i]);max = Math.max(max,pre);}return max;}
}

总结:一般来说:求数组子序列的或者相关的子序列问题,往往都能想到使用动态规划;

如果是字符串的子序列就会很容易牵扯到 KMP等问题

接下来我们可以想一下,这道题如果是求子序列的值呢?

public static int maxSubArray(int[] nums) {// 求最大的子序列和  求子序列 就会想到 动态规划// 数组子序列//如果符合条件就加入 不符合就删除List<Integer> list = new ArrayList<>();int max = nums[0];int pre = 0;for (int i = 0; i < nums.length; i++) {// pre = Math.max(pre + nums[i], nums[i]);//将所有符合条件的值都加入列表if (pre + nums[i] >= nums[i]) {pre = pre + nums[i];list.add(nums[i]);} else {pre = nums[i];list.clear();list.add(nums[i]);}max = Math.max(max, pre);}//在进行一个循环 把最大序列所有值找出来int sum = 0;List<Integer> result = new ArrayList<>();for (int i = 0; i < list.size(); i++) {sum += list.get(i);result.add(list.get(i));if (max == sum){break;}}//所求的最大子序列System.out.println(result);return max;}

7-leetcode最大子序列和相关推荐

  1. LeetCode 891. 子序列宽度之和(数学)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个整数数组 A ,考虑 A 的所有非空子序列. 对于任意序列 S ,设 S 的宽度是 S 的最大元素和最小元素的差. 返回 A 的所有子序列的宽度之 ...

  2. C# LeetCode 匹配子序列的单词数

    public static int NumMatchingSubseqB(string s, string[] words){int count = 0;//符合条件的数量foreach (strin ...

  3. LeetCode 907. 子数组的最小值之和(单调栈)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个整数数组 A,找到 min(B) 的总和,其中 B 的范围为 A 的每个(连续)子数组. 由于答案可能很大,因此返回答案模 10^9 + 7. 示 ...

  4. 天池 在线编程 所有子数组之和(排列组合)

    文章目录 1. 题目 2. 解题 2.1 暴力解 2.1 O(n) 解 1. 题目 给定一个数组nums, 你需要返回这个数组所有子数组之和. 如果nums = [2, 4, 1], 数组所有的子集是 ...

  5. 2022年京东NLP实习面试题7道

    问题1:Beam Search生成的句子基本都一样,是否有方法扩展生成句子的多样性. 解决方法:通过分组加入相似性惩罚,具体可以参考论文 Diverse beam search: https://ar ...

  6. 贪婪算法(greedy Algorithm)

    贪婪算法的应用: 相关算法练习题: LeetCode股票买卖的最佳时机 LeetCode判断子序列 LeetCode 分发饼干 LeetCode跳跃游戏 LeetCode加油站 一.简单调度问题: 给 ...

  7. LeetCode简单题之最长和谐子序列

    题目 和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 . 现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度. 数组的子序列是一个由数组派生出来的 ...

  8. 刻意练习:LeetCode实战 -- Task26.判断子序列

    背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务.本期训练营采用分类别练习的模式,即选择了五个知识点(数组.链表.字符串.树.贪心算法),每个知 ...

  9. leetcode 583. Delete Operation for Two Strings | 583. 两个字符串的删除操作(最长公共子序列,DP)

    题目 https://leetcode.com/problems/delete-operation-for-two-strings/ 题解 本题实质上是个最长公共子序列问题,又是经典的 递归-> ...

最新文章

  1. hdu1576 mod 运算的逆元
  2. Go web之旅(Request分析)
  3. 光子筛matlab,一种振幅调制器件产生椭圆涡旋光的方法与流程
  4. python【力扣LeetCode算法题库】289- 生命游戏
  5. C++语言基础(15)-友元函数和友元类
  6. 《操作系统》实验报告——进程管理
  7. knockout + easyui = koeasyui
  8. sublime学习笔记
  9. silverlight 上下标
  10. jsp中为什么有时out.write不能写,为什么?
  11. 制作自己的W7系统的主题包自己制作
  12. Mac中Safari浏览器转换IE各版本
  13. [二分 树形DP] CEOI2017. Mousetrap
  14. 第7章 - 多无人机系统的协同控制 --> 无人机飞行原理
  15. iOS appicon 与 launchImage 尺寸一览
  16. 用VBA检查Word文档中是否存在位于行首的脚注引用,如存在则通过调整字符间距使其移动到非行首的位置
  17. 国外十大在线支付服务网站
  18. 淘宝电商产品jQuery图片放大镜代码
  19. cpu、socket、core、thread 等术语之间的关系
  20. 数据库连接技术 - 数据库连接池

热门文章

  1. 盲人摸象符合格式塔心理学派的理论寓意吗?|小白心理-312/347考研答疑
  2. 一眼看懂map和flatmap的区别
  3. 一些人程序员伤心和开心的话
  4. matlab2c使用c++实现matlab函数系列教程-sinc函数
  5. c语言%X与%x的区别
  6. 用c语言实现银行存款程序
  7. 信息学奥赛一本通 1955:【11NOIP普及组】瑞士轮 | OpenJudge NOI 4.1 4363:瑞士轮 | 洛谷 P1309 [NOIP2011 普及组] 瑞士轮
  8. 屋价高涨影响年轻人成家生育 房事成为韩国大事
  9. windows下npm安装vue 问题和解决方法
  10. 读《暗时间》的很多摘抄与很少感悟