子数组和最接近零问题:

对于长度为N的数组A,求连续子数组的和最接近0的值。

如:1,-2,3,10,-4,7,2,-5;该数组中子数组和最接近零的值为0,子数组为-4,7,2,-5。

程序实现:

 1 /***************************************
 2 FileName NearZeroSubArray.cpp
 3 Author : godfrey
 4 CreatedTime : 2016/5/3
 5 ****************************************/
 6 #include <iostream>
 7 #include <cstring>
 8 #include <vector>
 9 #include <algorithm>
10 #include <stdio.h>
11 #include <stdlib.h>
12
13 using namespace std;
14
15 int NearZeroSubArray(int* A,int size){
16     int sum[size+1];
17     memset(sum,0,(size+1)*sizeof(int));
18     for(int i=1;i<size;i++){
19         sum[i+1] = sum[i] + A[i];
20     }
21     sort(sum,sum+size+1);
22     int difference = abs(sum[1] - sum[0]);
23     int result = difference;
24     for(int i=1;i<size;i++){
25         difference = sum[i+1] - sum[i];
26         result = min(difference,result);
27     }
28     return result;
29 }
30 int main()
31 {
32     int a[] = {1,-2,3,10,-4,7,2,-5};
33     int result = NearZeroSubArray(a,sizeof(a)/sizeof(int));
34     cout<<"the FindNearZeroNum: ";
35     cout<<result<<endl;
36     return 0;
37 }

运行结果:

说明:本算法时间复杂度为O(nlogn)。

转载请注明出处:

C++博客园:godfrey_88

http://www.cnblogs.com/gaobaoru-articles/

转载于:https://www.cnblogs.com/gaobaoru-articles/p/5456710.html

子数组和最接近零问题相关推荐

  1. 求给定数组子数组中最接近0的和

    http://blog.kingsamchen.com/archives/649 一个整数数组,有正,有负,求子数组和最接近0的值 sum[i]表示从0累加到i的之和 在sum的最后要加一个0的项 然 ...

  2. 最大连续子数组和与JUnit测试

    [题目]最大连续子数组和(最大子段和) 背景 问题: 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a[j]的子段和的最大值.当 ...

  3. LintCode_138——子数组和为零

    题目: 给定一个整数数组,找到和为零的子数组.你的代码应该返回满足要求的子数组的起始位置和结束位置. 样例 给出[-3, 1, 2, -3, 4],返回[0, 2] 或者 [1, 3]. 解题思路: ...

  4. 算法题 子数组之和为零

    lintcode 138 子数组之和为零 给定一个整数数组,找到和为零的子数组.你的代码应该返回满足要求的子数组的起始位置和结束位置 这里给定是思路是这样的,依次求数组nums的前缀和,其前缀和的数组 ...

  5. lintcode 子数组问题(最全的面试子数组问题)

    前言 2017年的六月份到九月份,陆陆续续在leetcode上面刷了130道题目. 眼瞅着明年开年就要开始求职找实习.于是重新开始了一波刷题. 现在的选择是使用lintcode,相比leetcode, ...

  6. 【剑指offer-Java版】31连续子数组的最大和

    连续子数组最大和,要求O(n)时间复杂度 思路:核心思想就是当前遍历数组的时候,遇到的是一个正数,计算这个正数加上已有的和得到一个新的和 如果这个新的和比当前的正数大,那么保留该和否者更新和为当前正数 ...

  7. 算法 求子数组的最大和 C

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! //** ...

  8. 软工随堂练 找出和值最小的子数组 尹亚男 赵静娜

    #include <iostream.h> void main() {int a[10]={-3,-1,-1,0,-1,5,4,-1,3,-1},sum[10][10];//sum[i][ ...

  9. 【IT笔试面试题整理】连续子数组的最大和

    [试题描述]输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组. 求所有子数组的和的最大值.要求时间复杂度O(n). 思路:当我们加上一个正数时,和会增加:当我们加上一个 ...

最新文章

  1. iOS 让视图UIView 单独显示某一侧的边框线
  2. Angular应用 vendor.js里的magic number 16384是什么含义
  3. JSP 获得服务器时间和浏览器时间
  4. How to use fb.data.query to get friends info?
  5. 大规模领域词汇库项目DomainWordsDict:涵盖68个领域、共计916万的词汇库资源开放
  6. 专研自动驾驶,深动科技春季招聘启动,含社招和实习
  7. 数据挖掘前景及工作方向选择
  8. win10计算机管理看不见蓝牙,如何解决Win10设备管理器找不到蓝牙?
  9. 交叉编译nftables
  10. Cocos Creator 安卓复制功能
  11. 数据分析:基于Pandas的全球自然灾害分析与可视化
  12. Excel学习日记:L1-excel入门
  13. 【它山之玉】提高文章命中率的秘诀-科学网马臻
  14. 未能加载文件或程序集“System.Runtime, Version=4.2.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依
  15. java常见笔试编程题_9道常见的java笔试选择题
  16. swift AVFoundation AVPlayer 视频播放器——swift学习(十)
  17. BLE 技术(九)--- SIG MESH Models 是如何设计的(下)?
  18. QQ2009英文版的汉化包
  19. 计算机系毕业祝福语,送给毕业生的祝福语
  20. 用Linux配置yum软件仓库,三种方法部署YUM软件仓库

热门文章

  1. 如何调用别人提供的API?
  2. Android 动态Tab分页效果实现
  3. Bootstrap—基础样式定义
  4. Windows下删除.svn文件夹的最简易方法
  5. Css中路径data用法
  6. 第一章:火狐浏览器 : 环境配置: FireFox 版本38 + jdk 7 + selenium 2.53.6 + selenum-version 2.48.2...
  7. bash 中的变量可以这么用
  8. 远程教育中教师能力特点分析(转载)
  9. 小时和分钟的正则表达式
  10. 利用PowerDesigner比较2个数据库