剑指offer 66题 -- 连续子数组的最大和

class Solution {
public:
int FindGreatestSumOfSubArray(vector<int> array) {

  int maxNum =0x80000000;
  int curNum = 0;

  for(int i=0; i<array.size(); i++)
  {
    if(curNum <= 0)
      curNum = array[i];
    else
      curNum += array[i];

    if(curNum > maxNum)
      maxNum = curNum;
  }

    return maxNum;
}
};

时间: 2024-10-08 10:28:44

剑指offer 66题 -- 连续子数组的最大和的相关文章

剑指Offer对答如流系列 - 连续子数组的最大和

面试题42:连续子数组的最大和 题目描述 输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整/数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n). 问题分析 输入数组{1.-2.10.-4.7.2.-5} 很容易看出从第一个数字开始累加,若走到某一个数字时,前面的累加和为负数,说明不能继续累加了.比如1 和 -2累加后值为-1,后面的数字加上-1反而变小了,应舍弃.要从接下来的数字重新开始累加.注意在累加过程中,将每次累加和的最大值记录下来,遍历完成后,返回该数字

剑指offer系列56---连续子数组的最大和

[题目]输入一个整型数组,数组里有正数也有负数.数组中一个或连续多个整数组成一个子数组. * 求所有子数组和的最大值. * [思路]连续求和数组元素.一旦得到的和小于0,就抛弃前面的数组,从当前值重写开始求和. 1 package com.exe11.offer; 2 3 /** 4 * [题目]输入一个整型数组,数组里有正数也有负数.数组中一个或连续多个整数组成一个子数组. 5 * 求所有子数组和的最大值. 6 * [思路]连续求和数组元素.一旦得到的和小于0,就抛弃前面的数组,从当前值重写开

剑指OFFER----面试题42. 连续子数组的最大和

链接:https://leetcode-cn.com/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/submissions/ 代码: class Solution { public: int maxSubArray(vector<int>& nums) { int res = INT_MIN, s = 0; for (auto x: nums) { if (s < 0) s = 0; s += x; res = max(res, s);

剑指offer-面试题42-连续子数组的最大和-动态规划

/*题目; 输入一个整形数组(可能有正数和负数),求数组中连续子数组(最少有一个元素)的最大和. 要求时间复杂度为O(n). 先输入数组的格式,再依次输入数组的值.*//*思路: f(i) = pData[i](i=0或f(i-1)<0),f(i-1)+pData[i](f(i-1)>0且i!=0)*/#include<iostream>#include<string.h>#include<stdio.h>#include<set>#includ

剑指offer 66题 -- 将一个字符串中的空格替换成“%20”

class Solution {public: void replaceSpace(char *str,int length) { //变量定义区 int newtv = 0; int oldtv = 0; int spaceNum = 0; //入参有效性判断 if( NULL == str || length <= 0) return; //计算空格数目 int i =0; while(str[i] != '\0') { oldtv++; if(str[i] == ' ') spaceNum

剑指offer 66题 -- 字符串的排列

class Solution {public: vector<string> Permutation(string str) { vector<string> result; if(str.size()<=0) return result; int start = 0; permute( str, start, result); sort( result.begin(), result.end() ); return result; } //采用传引用的方式,处理递归过程中的

剑指offer 66题 -- 丑数

class Solution {public: int GetUglyNumber_Solution(int index) { //变量定义区 int subA=0, subB=0, subC=0; int sub =0; int* array = new int[index]; array[0] = 1; if(index <= 0) return 0; //分析:数组的后面的每一个元素必定是由数组前面的某一个乘以2,3,或者5得到 //  也就是说, 每个当前的值,都是由前面的某个值的2倍,

剑指 offer 第一题: 二维数组中的查找

打算写 图解剑指 offer 66 题 的系列文章,不知道大家有没有兴趣 ?? 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 题目分析 图 1 如果没有头绪的话,很显然使用 暴力解法 是完全可以解决该问题的. 即遍历二维数组中的每一个元素,时间复杂度:O(n^2). 其实到这里我们就可以发现,使用这种暴力解法并没有充分利用题目给出的信息.这

剑指OFFER之最大子向量和(连续子数组的最大和)(九度OJ1372)

题目描述: HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天JOBDU测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止).你会不会被他忽悠住? 输入: 输入有多组数据,每组测试数据包括两行. 第一行为一个整数n(0<=n<=100000),当