子数组和最接近零问题
子数组和最接近零问题:
对于长度为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
子数组和最接近零问题相关推荐
- 求给定数组子数组中最接近0的和
http://blog.kingsamchen.com/archives/649 一个整数数组,有正,有负,求子数组和最接近0的值 sum[i]表示从0累加到i的之和 在sum的最后要加一个0的项 然 ...
- 最大连续子数组和与JUnit测试
[题目]最大连续子数组和(最大子段和) 背景 问题: 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a[j]的子段和的最大值.当 ...
- LintCode_138——子数组和为零
题目: 给定一个整数数组,找到和为零的子数组.你的代码应该返回满足要求的子数组的起始位置和结束位置. 样例 给出[-3, 1, 2, -3, 4],返回[0, 2] 或者 [1, 3]. 解题思路: ...
- 算法题 子数组之和为零
lintcode 138 子数组之和为零 给定一个整数数组,找到和为零的子数组.你的代码应该返回满足要求的子数组的起始位置和结束位置 这里给定是思路是这样的,依次求数组nums的前缀和,其前缀和的数组 ...
- lintcode 子数组问题(最全的面试子数组问题)
前言 2017年的六月份到九月份,陆陆续续在leetcode上面刷了130道题目. 眼瞅着明年开年就要开始求职找实习.于是重新开始了一波刷题. 现在的选择是使用lintcode,相比leetcode, ...
- 【剑指offer-Java版】31连续子数组的最大和
连续子数组最大和,要求O(n)时间复杂度 思路:核心思想就是当前遍历数组的时候,遇到的是一个正数,计算这个正数加上已有的和得到一个新的和 如果这个新的和比当前的正数大,那么保留该和否者更新和为当前正数 ...
- 算法 求子数组的最大和 C
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! //** ...
- 软工随堂练 找出和值最小的子数组 尹亚男 赵静娜
#include <iostream.h> void main() {int a[10]={-3,-1,-1,0,-1,5,4,-1,3,-1},sum[10][10];//sum[i][ ...
- 【IT笔试面试题整理】连续子数组的最大和
[试题描述]输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组. 求所有子数组的和的最大值.要求时间复杂度O(n). 思路:当我们加上一个正数时,和会增加:当我们加上一个 ...
最新文章
- iOS 让视图UIView 单独显示某一侧的边框线
- Angular应用 vendor.js里的magic number 16384是什么含义
- JSP 获得服务器时间和浏览器时间
- How to use fb.data.query to get friends info?
- 大规模领域词汇库项目DomainWordsDict:涵盖68个领域、共计916万的词汇库资源开放
- 专研自动驾驶,深动科技春季招聘启动,含社招和实习
- 数据挖掘前景及工作方向选择
- win10计算机管理看不见蓝牙,如何解决Win10设备管理器找不到蓝牙?
- 交叉编译nftables
- Cocos Creator 安卓复制功能
- 数据分析:基于Pandas的全球自然灾害分析与可视化
- Excel学习日记:L1-excel入门
- 【它山之玉】提高文章命中率的秘诀-科学网马臻
- 未能加载文件或程序集“System.Runtime, Version=4.2.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依
- java常见笔试编程题_9道常见的java笔试选择题
- swift AVFoundation AVPlayer 视频播放器——swift学习(十)
- BLE 技术(九)--- SIG MESH Models 是如何设计的(下)?
- QQ2009英文版的汉化包
- 计算机系毕业祝福语,送给毕业生的祝福语
- 用Linux配置yum软件仓库,三种方法部署YUM软件仓库
热门文章
- 如何调用别人提供的API?
- Android 动态Tab分页效果实现
- Bootstrap—基础样式定义
- Windows下删除.svn文件夹的最简易方法
- Css中路径data用法
- 第一章:火狐浏览器 : 环境配置: FireFox 版本38 + jdk 7 + selenium 2.53.6 + selenum-version 2.48.2...
- bash 中的变量可以这么用
- 远程教育中教师能力特点分析(转载)
- 小时和分钟的正则表达式
- 利用PowerDesigner比较2个数据库