lintcode --最大子陣列(c++實現)
class MaxSubArray {
public:
int maxSubArray(vector<int> &nums) {
// write your code here
// 判空
if (nums.size() == 0) {
return 0;
}
int tmpsum = nums[0];
int sum = tmpsum;
// 臨時和和0比較,大於0說明當前數值可以加進去,小於0則說明當前這個數值太小,抵消了前面的累加和,更新臨時和為當前值
// sum 記錄上一個被抵消的區間的和,並且取每次的較大者
for (int i = 1; i < nums.size(); i++) {
tmpsum > 0 ? tmpsum += nums[i] : tmpsum = nums[i];
tmpsum > sum ? sum = tmpsum : sum;
}
return sum;
}
};
相關推薦
lintcode --最大子陣列(c++實現)
class MaxSubArray { public: int maxSubArray(vector<int> &nums) { // write your code here // 判空 if (nums.s
Lintcode 最大子陣列 系列問題
問題1,最大子陣列 給定一個整數陣列,找到一個具有最大和的子陣列,返回其最大和。 樣例 給出陣列[−2,2,−3,4,−1,2,1,−5,3],符合要求的子陣列為[4,−1,2,1],其最大和為6 挑戰 要求時間複雜度為O(n) def max_sub(nums):
LintCode 最大子陣列(3種方法)
給定一個整數陣列,找到一個具有最大和的子陣列,返回其最大和。 樣例 給出陣列[−2,2,−3,4,−1,2,1,−5,3],符合要求的子陣列為[4,−1,2,1],其最大和為6 方法一:暴力
LintCode-最大子陣列 II
題目: 給定一個整數陣列,找出兩個 不重疊 子陣列使得它們的和最大。 每個子陣列的數字在陣列中的位置應該是連續的。 返回最大的和。 分析: 1.求一個最小的分割陣列,然後在左右邊界兩邊再分別求兩個最
LintCode-最大子陣列 III
給定一個整數陣列和一個整數k,找出k個不重疊子陣列使得它們的和最大。 每個子陣列的數字在陣列中的位置應該是連續的。 返回最大的和。 您在真實的面試中是否遇到過這個題? Yes 樣例 給出陣列[-1,4,-2,3,-2,3]以及k=2,返回 8 注意 子陣列
用c++實現環形陣列的最大子陣列之和(結對)
結對作業 1.分解問題,將環形陣列,剪開變成一個一維陣列。 2.用一維陣列的最大子陣列和解決。 對於一個環形陣列,對每一個一維陣列的表示共有n-1種 原始碼如下: 1 #include<iostream> 2 using namespace std; 3 int max_
用c++實現環形陣列的最大子陣列之和
分析: 1.將環形陣列,剪開變成一個一維陣列。 2.用一維陣列的最大子陣列和解決。 對於一個環形陣列,表示成一個一維陣列總共有n種。如圖所示: 程式程式碼: 1 #include<iostream> 2 using namespace std; 3 int mai
用c++實現環形陣列的最大子陣列的和
分析:對環形陣列確定首元素,從而變成一位陣列。因為有n個元素,所以有n種情況 如圖: 程式程式碼: #include<iostream> using namespace std; int max_sum1(int a[],int n) { int max_sum_h=a[0
Lintcode :45. 最大子陣列差
描述 給定一個整數陣列,找出兩個不重疊的子陣列A和B,使兩個子陣列和的差的絕對值|SUM(A) - SUM(B)|最大。 返回這個最大的差值。 子陣列最少包含一個數 樣例 給出陣列[1, 2, -3, 1],返回 6 挑戰 時間複雜度為O(n),空間複雜度為O(n)
Lintcode: 42. 最大子陣列 II
描述 給定一個整數陣列,找出兩個 不重疊 子陣列使得它們的和最大。 每個子陣列的數字在陣列中的位置應該是連續的。 返回最大的和。 樣例 給出陣列 [1, 3, -1, 2, -1, 2] 這兩個子陣列分別為 [1, 3] 和 [
用c++求一個二維整數陣列中最大子陣列之和(結對作業)
題目:返回一個二維整數陣列中最大子陣列之和。 要求: 1.輸入一個二維整形陣列,數組裡有正有負。 2.二維陣列中連續的一個子矩陣 組成一個數組,每個子陣列都有一個和。 3.求所有子陣列的和的最大值。 結對程式設計要求 兩人結對完成程式設計任務。 一人負責程式分析,程式碼程式設計。 一
Lintcode 41. 最大子陣列
描述:給定一個整數陣列,找到一個具有最大和的子陣列,返回其最大和。 個人思路:通過觀察可以知道,要想和最大,那麼這個子陣列的開頭元素和結尾元素必須是個非負數,因此採取的貪心策略是,先索引到陣列的第一個非負數,然後開始累加,當累加的索引指向另外一個非負數時,就比較之前的和
分治策略,求最大子陣列的和golang實現
package main import ( "fmt" ) func main() { a := []int{9, 6, -7, 1, 8, -20, 5, 3, 4, 0, 2} l, r, s := FindMaxSubArray(a, 0, 10)
返回一個整數陣列中最大子陣列的和 C語言
1、題目:返回一個整數陣列中最大子陣列的和。 2、要求: 要求程式必須能處理1000 個元素; 每個元素是int32 型別的; 輸入一個整形陣列,數組裡有正數也有負數。 陣列中連續的一個或多個整陣列成一個子陣列,每個子陣列都有一個和。 求所有子陣列的和的最大值。要求時間複雜度為O(n)。 3、設計思
[LintCode]41.最大子陣列
給定一個整數陣列,找到一個具有最大和的子陣列,返回其最大和。 樣例 給出陣列[−2,2,−3,4,−1,2,1,−5,3],符合要求的子陣列為[4,−1,2,1],其最大和為6 思路:將子串和為負
Python實現求解最大子陣列問題
#! /usr/bin/env python #coding=utf-8 def MaxCrossSubarray(a, low, mid, high): left_sum=-65535
LintCode 41 最大子陣列
題目:searchMatrix 要求: 給定一個整數陣列,找到一個具有最大和的子陣列,返回其最大和。 注意事項 子陣列最少包含一個數 樣例: 給出陣列[−2,2,−3,4,−1,2,1,−5,3],符合要求的子陣列為[4,−1,2,1],其
筆試最長子陣列和最大子矩陣c#
今天筆試題記錄下 1。最長和為0的子陣列,例如1,2,3,-2,4,-3,2,-4,-2,0,6,7結果是2,3,-2,4,-3,2,-4,-2,0 大致思想是用遞迴的做法:如果一個序列自身不是最長的和為0的子陣列,那麼就比較這個序列去掉左邊一位和去掉右邊一位的兩個序列中最
演算法導論-最大子陣列問題-線性時間複雜度演算法分析與實現
之前寫了最大子陣列問題的分治法,今天把這個問題的線性時間複雜度的演算法寫出來。 這個方法在演算法導論最大子陣列問題的課後思考題裡面提出來了,只是說的不夠詳細。 思考題如下:使用如下思想為最大子陣列問題設計一個非遞迴的,線性時間複雜度的演算法。從陣列左邊界開始,由左至右處理,
用分治法實現最大子陣列問題(Java)
終於把這個搞出來了,中間出現了好多小問題,虛擬碼和演算法思想可以參考演算法導論。package com.alibaba; public class MaxSubarray { public sta