微软面试100题系列-数组连续和最大
来源:互联网 发布:windows图形编程 pdf 编辑:程序博客网 时间:2024/06/06 00:30
题目:
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为 O(n)。
例如输入的数组为 1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为 3, 10, -4, 7, 2,
因此输出为该子数组的和 18。
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为 O(n)。
例如输入的数组为 1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为 3, 10, -4, 7, 2,
因此输出为该子数组的和 18。
#include <stdio.h>#include <stdlib.h>#define MIN_INT (1 << (sizeof(int) * 8 - 1) | 1)int max_sum(int * arr, int sz){int i, j, sum, max_sum = MIN_INT;int * p_tmp = (int *)malloc(sizeof(int) * sz);if(NULL == p_tmp || sz < 0)return MIN_INT;p_tmp[0] = arr[0];for(i = 1; i < sz; i++)p_tmp[i] = p_tmp[i - 1] + arr[i];for(i = 0; i < sz; i++){for(j = i; j < sz; j++){if(i == j)sum = arr[i];elsesum = p_tmp[j] - p_tmp[i];if(sum > max_sum)max_sum = sum;}}if(p_tmp != NULL)free(p_tmp);return max_sum;}int main(int c, char * v[]){int arr[] = {1, -2, 3, 10, -4, 7, 2, -5};printf("%d\n", max_sum(arr, sizeof(arr) / sizeof(int) ));}
0 0
- 微软面试100题系列-数组连续和最大
- 微软面试100题系列---求子数组的最大和
- 微软面试100题系列---最大二维子矩阵和
- (微软面试100题)求子数组的最大和
- 【从零单排之微软面试100题系列】03之求子数组的最大和
- 微软面试(3/100)--求子数组的最大和
- 微软面试100题之第三题:求子数组的最大和
- 求子数组的最大和 【微软面试100题 第三题】
- 微软等数据结构+算法面试100题(44)-- 求子数组的最大和
- 微软面试100题之三 求子数组的最大和
- 微软等面试100题筛选答案-3-求子数组最大和
- 动态规划算法 (微软笔试题,求连续子数组的最大和)
- 微软等数据结构+算法面试100题(15)--求最大连续递增数字串
- 面试经典(6)--连续子数组最大和--二维
- 面试算法(三十一)连续子数组的最大和
- 微软面试100道之3 求子数组的最大和(数组)
- 【剑指offer系列】 连续子数组的最大和___31
- 微软面试题系列:求子数组最大和
- 寒假训练的小总结
- 雅芳涉嫌贿赂中国官员 或面临1.32亿美元罚款
- 微软面试100题系列-设计包含 min 函数的栈
- 10859 - Placing Lampposts(树形dp)
- ios项目设置arc和非arc
- 微软面试100题系列-数组连续和最大
- SRM 606 DIV1 450
- Permutation Sequence
- Linux的回环接口lo
- NSString属性声明中的copy和retain区别
- 理解autorelease
- 锻造模拟:接触+弹塑性分析
- ios开发之View属性hidden, opaque, alpha的区别
- 带摩擦的接触分析实例