17.8 给定一个整数数组(有正数和负数),找出总和最大的连续序列,并返回总和。

解法:

就是求连续子序列的和最大,不过存在一个问题:

假设整个数组都是负数,怎么样才是正确的行为呢?看看这个简单的数组{-3,-10,-5},一下答案每个都可以说的通:

-3(假设子序列不能为空)

0(子序列的长度为空)

INT_MIN(视为错误的情况)

我们会选择第二种(maxSum=0),但并没有所谓的“正确”答案。这一点可以跟面试官好好讨论一番。

C++实现代码:

#include<iostream>
using namespace std; int getMaxSum(int a[],int n)
{
int sum=;
int maxSum=;
int i;
for(i=;i<n;i++)
{
sum+=a[i];
if(sum>maxSum)
maxSum=sum;
if(sum<)
sum=;
}
return maxSum;
} int main()
{
int arr[]={,-,-,,-,,,-,,};
cout<<getMaxSum(arr,)<<endl;
}

careercup-中等难度 17.8的更多相关文章

  1. OC语言实现中等难度通讯录

    实现中等难度通讯录.需求: 1.定义联系⼈人类Contact.实例变量:姓名(拼⾳音,⾸首字⺟母⼤大写).性别.电话号码. 住址.分组名称.年龄.⽅方法:⾃自定义初始化⽅方法(姓名.电话号码).显⽰示 ...

  2. careercup-中等难度 17.12

    17.12 设计一个算法,找出数组中两数之和为指定值的所有整数对. 解答 时间复杂度O(n)的解法 我们可以用一个哈希表或数组或bitmap(后两者要求数组中的整数非负)来保存sum-x的值, 这样我 ...

  3. careercup-中等难度 17.11

    17.11 给定rand5(),实现一个方法rand7().也即,给定一个产生0到4(含)随机数的方法,编写一个产生0到6(含)随机数的方法. 解法: 这个函数要正确实现,则返回0到6之间的值,每个值 ...

  4. careercup-中等难度 17.9

    17.9 设计一个方法,找出任意指定单词在一本书中的出现频率. 解法: 1 单次查询 遍历这本书的每个单词,计算给定单词出现的次数.时间复杂度O(n),我们无法继续优化它,因为书中的每个单次都需要访问 ...

  5. careercup-中等难度 17.7

    17.7 给定一个整数,打印该整数的英文描述(例如“One Thousand,Two Hundred Thirty Four”). 解法: 举个例子,在转换19 323 984时,我们可以考虑分段处理 ...

  6. careercup-中等难度 17.6

    17.6 给定一个整数数组,编写一个函数,找出索引m和n,只要将m和n之间的元素排好序,整个数组就是有序的.注意:n越小越好,也就是说,找出符合条件的最短序列. 解法: 开始解题之前,让我们先确认一下 ...

  7. careercup-中等难度 17.5

    17.5 写一个函数来模拟游戏. 游戏规则如下: 4个槽,里面放4个球,球的颜色有4种,红(R ),黄(Y),绿(G),蓝(B).比如, 给出一个排列RGGB,表示第一个槽放红色球,第二和第三个槽放绿 ...

  8. careercup-中等难度 17.4

    17.4 编写一个方法,找出两个数字中最大的那一个.不得使用if-else或其他比较运算符. 解法: 我们可以通过一步步的分析来将需要用到的if-else和比较操作符去掉: If a > b, ...

  9. careercup-中等难度 17.3

    17.3 写一个算法计算n的阶乘末尾0的个数? 解答: 首先,算出n的阶乘的结果再去计算末尾有多少个0这种方法是不可取的, 因为n的阶乘是一个非常大的数,分分种就会溢出.我们应当去分析, 是什么使n的 ...

随机推荐

  1. ORACLE SQLloader详细语法

    Oracle   SQL   Loader的详细语法     SQL*LOADER是ORACLE的数据加载工具,通常用来将操作系统文件迁移到ORACLE数据库中.SQL*LOADER是大型数据     ...

  2. ios开发中常用的也是最基本的mysql语句

    MySQL常用基本SQL语句小结——(转) sql语言不经常用,每次再用都隔好久的时间,以致最基本的都想不起来了,只好转一篇记着= - 找的时候方便 SQL分类:  DDL—数据定义语言(CREATE ...

  3. FZU 2129 子序列个数

     Problem Description 子序列的定义:对于一个序列a=a[1],a[2],......a[n].则非空序列a'=a[p1],a[p2]......a[pm]为a的一个子序列,其中1& ...

  4. Python环境变量设置

    在Windows环境下安装了python后,为了方便运行.py文件,可以设置环境变量如下: 环境变量位置 添加值 添加后效果 系统变量中的PATH python.exe所在目录,比如D:\Python ...

  5. 最近升级了一下小老婆(8核 2x8G DDR3 128G SSD)

    晒图(笔者的硬件知识属于小白级别, 且看且参考吧): 另外优化一下休眠&虚拟内存功能节省SSD空间: 1. 台式机, 休眠功能基本没必要, 果断关掉 C:\Windows\system32&g ...

  6. Unity3D知识点

    世界空间(World):整个虚拟世界的3d空间,在Unity3d中以米作为单位,如长100米宽100米高100米的立体空间. 屏幕空间(Screen):屏幕2d空间,大小就是屏幕的大小,以像素作为单位 ...

  7. 垃圾回收(GC)的三种基本方式

    垃圾(Garbage)就是程序需要回收的对象,如果一个对象不在被直接或间接地引用,那么这个对象就成为了「垃圾」,它占用的内存需要及时地释放,否则就会引起「内存泄露」.有些语言需要程序员来手动释放内存( ...

  8. MSSQLSERVER数据库- 数据类型Timestamp

    Timestamp:亦称时间戳数据类型,它提供数据库范围内的惟一值,反应数据库中数据修改的相对顺序,相当于一个单调上升的计数器.当它所定义的列在更新或者插入数据行时,此列的值会被自动更新,一个计数值将 ...

  9. flex开发小技巧集锦

    关于flex开发网上有非常多的相关信息介绍,因此我们要想学习关于flex开发的知识信息技能是一件非常简单和方便的事情.而针对于flex开发小编要告诉大家的是一些flex开发小技巧.利用这些小技巧能够有 ...

  10. (JAVA版)冒泡排序

    核心代码: public void bubbleSort(){ ;i<length-;i++){ ;j<length-i-;j++){ ]) swap(j,j+); } } } publi ...