// 面试题42:连续子数组的最大和
// 题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整
// 数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。 #include <iostream> bool g_InvalidInput = false;//全局错误处理方式 int FindGreatestSumOfSubArray(int *pData, int nLength)
{
if ((pData == nullptr) || (nLength <= ))//输入无效测试
{
g_InvalidInput = true;
return ;
} g_InvalidInput = false; int nCurSum = ;//当前累加和
int nGreatestSum = 0x80000000;//当前最大和
for (int i = ; i < nLength; ++i)
{
if (nCurSum <= )//如果当前累加和小于0,还不如从下个节点开始
nCurSum = pData[i];
else//否则就加上下个节点
nCurSum += pData[i]; if (nCurSum > nGreatestSum)//只记录其中的最大值
nGreatestSum = nCurSum;
} return nGreatestSum;
} // ====================测试代码====================
void Test(const char* testName, int* pData, int nLength, int expected, bool expectedFlag)
{
if (testName != nullptr)
printf("%s begins: \n", testName); int result = FindGreatestSumOfSubArray(pData, nLength);
if (result == expected && expectedFlag == g_InvalidInput)
printf("Passed.\n");
else
printf("Failed.\n");
} // 1, -2, 3, 10, -4, 7, 2, -5
void Test1()
{
int data[] = { , -, , , -, , , - };
Test("Test1", data, sizeof(data) / sizeof(int), , false);
} // 所有数字都是负数
// -2, -8, -1, -5, -9
void Test2()
{
int data[] = { -, -, -, -, - };
Test("Test2", data, sizeof(data) / sizeof(int), -, false);
} // 所有数字都是正数
// 2, 8, 1, 5, 9
void Test3()
{
int data[] = { , , , , };
Test("Test3", data, sizeof(data) / sizeof(int), , false);
} // 无效输入
void Test4()
{
Test("Test4", nullptr, , , true);
} int main(int argc, char* argv[])
{
Test1();
Test2();
Test3();
Test4();
system("pause");
return ;
}

《剑指offer》第四十二题(连续子数组的最大和)的更多相关文章

  1. 剑指Offer(三十):连续子数组的最大和

    .# 剑指Offer(三十):连续子数组的最大和 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net ...

  2. (剑指Offer)面试题31:连续子数组的最大和

    题目: 输入一个整型数组,数组里有正数也有负数,数组中一个或连续多个整数组成一个子数组,求所有子数组的和的最大值.要求时间复杂度为O(n) 思路: 1.数组累加 从头到尾逐个累加数组中的每个数字,当累 ...

  3. 【剑指offer】面试题31:连续子数组的最大和

    题目: 在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2, ...

  4. 《剑指offer》— JavaScript(30)连续子数组的最大和

    连续子数组的最大和 题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好 ...

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

    题目描述: HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天JOBDU测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但 ...

  6. 面试题四十二:连续子数组的最大和,要求时间复杂度为 n

    方法一:举例分析数组的规律,累加数组逐步保存最大值:累加中和<0,则遗弃前面的累加和:重新开始: int FindMaxArray(int [] A) {               if(A= ...

  7. 《剑指offer》第二十二题(链表中倒数第k个结点)

    // 面试题22:链表中倒数第k个结点 // 题目:输入一个链表,输出该链表中倒数第k个结点.为了符合大多数人的习惯, // 本题从1开始计数,即链表的尾结点是倒数第1个结点.例如一个链表有6个结点, ...

  8. 《剑指offer》第十二题(矩阵中的路径)

    // 面试题:矩阵中的路径 // 题目:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有 // 字符的路径.路径可以从矩阵中任意一格开始,每一步可以在矩阵中向左.右. // 上.下移动 ...

  9. 剑指Offer(三十二):把数组排成最小的数

    剑指Offer(三十二):把数组排成最小的数 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/b ...

  10. php算法题---连续子数组的最大和

    php算法题---连续子数组的最大和 一.总结 一句话总结: 重要:一定要本机调试过了再提交代码,因为很容易出现考虑不周的情况,或者修改了之后没有考虑修改的这部分 利用空间来换时间,或者利用空间来换算 ...

随机推荐

  1. SVN的标准目录结构

    SVN目录规范 在visualSVN中创建仓库时,可以选择svn目录结构 Trunk主干目录,此目录下的文件为基准文件. Brancher 用于开发的分支目录 Tags用于发布的版本目录 假设有一个项 ...

  2. [重要] Django 多条件多表查询实例问题

    当时想做一个多条件查询,但是对于要查询的信息,是分布在不同的表里,这就涉及到了多表查询问题. DjangoBook里提到了一些查询的方式,但是不够全面,就去百度搜了下. 当去网上百度搜多表查询,或多条 ...

  3. Win7的话,可能有十种简单的方法进行提速呢

    1.窗口转换更快速 Windows7绚丽的效果的确美观,但漂亮的效果就需要拿速度来交换,因此如果你想要Windows7中的各个窗口切换得更快速,那关闭窗口最大.最小化的动画效果后,你会发现窗口切换得更 ...

  4. python简说(二十四)发送网络请求

    一.get,post请求import requestsurl='http://127.0.0.1:8999/api/upload'# data = {'username':'testuser1','p ...

  5. 复选框批量删除操作-jquery方式

    1.首先在页面添加一个批量删除的按钮:<li class="btns"><input id="deleteSubmit" class=&quo ...

  6. Codeforces Round #439 (Div. 2) Problem C (Codeforces 869C) - 组合数学

    — This is not playing but duty as allies of justice, Nii-chan! — Not allies but justice itself, Onii ...

  7. bash 特性

    命令hash: 缓存此前命令的查找结果:key-value key:搜索键 value:值

  8. wait()和notify()的理解与使用

    void notify() Wakes up a single thread that is waiting on this object’s monitor. 译:唤醒在此对象监视器上等待的单个线程 ...

  9. 分块读取Blob字段数据(MSSQL)

    MSSQL中提供了一个功能,能够分块读取Blob字段中的数据,写了一个存储过程代码如下: CREATE PROCEDURE PRO_GET_FILE_DATA     @PKG_ID INT,     ...

  10. 01MySQL的 库、表初步认识

    一.安装&完全卸载 1.引导式安装 https://dev.mysql.com/downloads/installer/ 2.下载压缩包,解压后用控制台安装 初始化 mysqld --init ...