LintCode 402: Continuous Subarray Sum

题目描述

给定一个整数数组,请找出一个连续子数组,使得该子数组的和最大。输出答案时,请分别返回第一个数字和最后一个数字的下标。(如果两个相同的答案,请返回其中任意一个)

样例

给定[-3, 1, 3, -3, 4], 返回[1,4].

Thu Feb 23 2017

思路

本题有很多解法,最巧妙的解法就是一遍扫描记忆的方法了,时间复杂度为\(O(n)\)。

用一个变量记录连续累加的和,当和为负数时,变量清零,从下一个数字开始累加记录。

在这里只需要注意一下一些小细节,比如如何记录最大子数组的起始位置,以及处理一下数组中所有的数都是负数的情况。

代码

// 连续子数组求和
vector<int> continuousSubarraySum(vector<int>& A)
{        int max_sum = -1, sum = 0, start;int is_all_negative = 1, max_num = -9e5, max_num_ind = -1vector<int> ans(2);for (int i = 0; i < A.size(); ++i){if (sum <= 0) start = i;sum += A[i];if (sum < 0) sum = 0;else if (sum > max_sum){is_all_negative = 0;max_sum = sum;ans[0] = start;ans[1] = i;}if (max_num < A[i]){max_num = A[i];max_num_ind = i;}}if (is_all_negative){ans[0] = ans[1] = max_num_ind;}return ans;
}

转载于:https://www.cnblogs.com/genkun/p/6435196.html

LintCode 402: Continuous Subarray Sum相关推荐

  1. LeetCode 523. Continuous Subarray Sum

    题目: Given a list of non-negative numbers and a target integer k, write a function to check if the ar ...

  2. LeetCode-Easy部分中标签为Dynamic Programming 523. Continuous Subarray Sum

    原题 Given a list of non-negative numbers and a target integer k, write a function to check if the arr ...

  3. [LintCode] Minimum Size Subarray Sum 最小子数组和的大小

    Given an array of n positive integers and a positive integer s, find the minimal length of a subarra ...

  4. 523. Continuous Subarray Sum

    class Solution { public:bool checkSubarraySum(vector<int>& nums, int k) {unordered_map< ...

  5. leetcode523 Continuous Subarray Sum

    思路: 令sum[p]表示p位置的前缀和.如果sum[i] % k == sum[j] % k (j - i > 1),则存在子段(i, j]的和能够整除k. 实现: 1 class Solut ...

  6. 【leetcode】523. Continuous Subarray Sum

    题目如下: 解题思路:本题需要用到这么一个数学定理.对于任意三个整数a,b,k(k !=0),如果 a%k = b%k,那么(a-b)%k = 0.利用这个定理,我们可以对数组从头开始进行求和,同时利 ...

  7. leetcode 523. Continuous Subarray Sum | 523. 连续的子数组和(同余定理)

    题目 https://leetcode.com/problems/continuous-subarray-sum/ 题解 没有想到 O(n) 的方法,于是直奔答案: 参考1:[宫水三叶]拓展到求方案数 ...

  8. LeetCode Subarray Sum Equals K

    原题链接在这里:https://leetcode.com/problems/subarray-sum-equals-k/description/ 题目: Given an array of integ ...

  9. leetcode-581-Shortest Unsorted Continuous Subarray

    题目描述: Given an integer array, you need to find one continuous subarray that if you only sort this su ...

最新文章

  1. 熬了几个大夜,学完一套985博士总结的「卷积神经网络、目标检测、OpenCV」学习笔记(20G高清/PPT/代码)...
  2. java 深拷贝 流_(转)Java技巧:深拷贝的两种方式
  3. 2021年春季学期-信号与系统-第十次作业参考答案-第四小题
  4. 随机数计算html,随机数的产生方法 电脑随机数产生的计算具体方法
  5. 计算机进位计数制实训课教案,《计算机应用基础》职高2010修订版 教案.doc
  6. 最大化平均值 (二分搜索法)
  7. JS转字符 判断数字等
  8. 解决Jenkins的job启动tomcat时会在job结束时关闭问题
  9. Git中Add后对部分文件进行取消
  10. centos 安装tmux
  11. linux学习小记 (一 )
  12. Android中的权限请求
  13. 15 年工龄的阿里P9职场历程自述
  14. C#判断一个数是否为素数
  15. 重磅白皮书发布,华为持续引领未来智慧园区建设新模式
  16. ubuntu 16.04 + GTX1050安装nvidia驱动
  17. multiple definition of...
  18. SAP 获取本机信息(IP及电脑名称)
  19. 实时计算Flink+Hologres
  20. 2018年山东外贸进出口1.93万亿元创历史新高

热门文章

  1. AliGraph:一个工业级的图神经网络平台
  2. 《阿里巴巴JAVA开发手册》发布详尽版,新增16条设计规约
  3. 低成本、高性能创客开发板——PYB Nano
  4. 【风农翻译】开始画像素画 #8
  5. 软件技术专业-就业提示(IT类详细岗位分化)
  6. LinuxUNIX系统编程手册(英文版)pdf
  7. Linux server配置安装Java,Tomcat服务器
  8. 简朴的生活、高贵的灵魂是人生的至高境界。——杨绛
  9. ESP8266串口模块的基本使用【转】
  10. web开发中的长度单位(px,em,ex,rem),如何运用,看完这篇就够了!