# LeetCode : 0053. Maximum Subarray (array)
###### tags:`leetcode`
```
#include <bits/stdc++.h>
#include <iostream>
#include <vector>
#include <unordered_map>
using std::vector;
using std::unordered_map;
using namespace std;
class BaseVectorPrint {
public:
void BasePrint00(vector<int>& num) {
for (size_t i = 0; i < num.size(); ++i) {
cout << "[" <<num.at(i) << "]" << "; ";
}
cout << endl;
}
void BasePrint01(vector<int>& num) {
for (size_t i = 0; i < num.size(); ++i) {
cout << num[i] << "; ";
}
cout << endl;
}
void BasePrint02(vector<int>& num) {
for (const auto &item : num) {
cout << item << "; ";
}
cout << endl;
}
void TwoDimensionalPrint(vector<vector<int>> &num){
for (int i = 0; i < num.size(); i++)
{
for (int j = 0; j < num[i].size(); j++)
{
cout << "[" << num[i][j] << "]";
}
cout << endl;
}
}
};
class BaseSolution {
public:
int maxSubArray(vector<int>& nums) {
int max_sunarry = INT_MIN;
for (int i = 0 ; i < nums.size();i++){
int current_array = 0;
// clear next run subarray Value.
for(int j = i ; j < nums.size(); j++){
current_array +=nums[j];
//check subarry is max or not
max_sunarry = max(max_sunarry,current_array);
}
}
return max_sunarry;
}
//time complexity O(N^2)
//space complexity O(1)
};
int main(void)
{
BaseVectorPrint printVector;
BaseSolution runfunc;
vector<int> test01 = { -2, 1, -3, 4, -1, 2, 1, -5, 4 };
vector<int> test02 = { 1 };
vector<int> test03 = { 5, 4, -1, 7, 8 };
vector<int> ans ;
ans = runfunc.maxSubArray(test01);
//printVector.BasePrint00(ans);
printf("and = %d\n", ans);
//printf("%d\n",input_Nums);
printf("test\n");
system("pause");
}
```