博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Lintcode: Minimum Subarray
阅读量:6474 次
发布时间:2019-06-23

本文共 2261 字,大约阅读时间需要 7 分钟。

C++

Divide-Conquer[71% passed]

1 class Solution { 2 public: 3     /** 4      * @param nums: a list of integers 5      * @return: A integer denote the sum of minimum subarray 6      */ 7     int minSubArray(vector
nums) { 8 // write your code here 9 int n = nums.size();10 if (n == 1) {11 return nums[0];12 }13 int *arr = nums.data();14 return helper(arr, n);15 }16 int helper(int *arr, int n) {17 // terminate18 if ( n == 1 ) {19 return arr[0];20 }21 // divide22 int mid = n>>1;23 int ans = min(helper(arr, mid), helper(arr + mid, n - mid));24 // conquer25 int now = arr[mid - 1], may = now;26 for (int i = mid-2; i >= 0; --i) {27 may = min(may, now += arr[i]);28 }29 now = may;30 for (int i = mid; i <= n; ++i) {31 may = min(may, now += arr[i]);32 }33 // return34 return min(may, ans);35 }36 };

C++, dp

1 class Solution { 2 public: 3     /** 4      * @param nums: a list of integers 5      * @return: A integer denote the sum of minimum subarray 6      */ 7     int minSubArray(vector
nums) { 8 // write your code here 9 int n = nums.size();10 if (n == 1) {11 return nums[0];12 }13 vector
dp(n);14 dp[0] = nums[0];15 int ans = nums[0];16 for (int i = 1; i < n ; ++i) {17 dp[i] = min(nums[i], dp[i - 1]+nums[i]);18 ans = min(dp[i], ans);19 }20 return ans;21 }22 };

C++,dp,O(1) space

1 class Solution { 2 public: 3     /** 4      * @param nums: a list of integers 5      * @return: A integer denote the sum of minimum subarray 6      */ 7     int minSubArray(vector
nums) { 8 // write your code here 9 int n = nums.size();10 if (n == 1) {11 return nums[0];12 }13 int endHere = nums[0];14 int ans = nums[0];15 for (int i = 1; i < n ; ++i) {16 endHere = min(nums[i], endHere+nums[i]);17 ans = min(endHere, ans);18 }19 return ans;20 }21 };

 

转载地址:http://ghpko.baihongyu.com/

你可能感兴趣的文章
由中序遍历和后序遍历求前序遍历
查看>>
我学习参考的网址
查看>>
[Processing]点到线段的最小距离
查看>>
GitHub使用教程、注册与安装
查看>>
<<The C Programming Language>>讀書筆記
查看>>
git代码冲突
查看>>
解析查询 queryString 请求参数的函数
查看>>
学生选课系统数据存文件
查看>>
git bash 风格调整
查看>>
linux操作系统加固软件,系统安全:教你Linux操作系统的安全加固
查看>>
linux中yum源安装dhcp,24.Linux系统下动态网络源部署方法(dhcpd)
查看>>
C#技术------垃圾回收机制(GC)
查看>>
HDOJ-1010 Tempter of the Bone
查看>>
JavaNIO基础02-缓存区基础
查看>>
日本开设无人机专业,打造无人机“人才市场”
查看>>
190行代码实现mvvm模式
查看>>
兼容几乎所有浏览器的透明背景效果
查看>>
jeesite 框架搭建与配置
查看>>
Adb移植(一)简单分析
查看>>
Linux VNC server的安装及简单配置使用
查看>>