We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
/*
* Complete the 'maxSubarray' function below.
*
* The function is expected to return an INTEGER_ARRAY.
* The function accepts INTEGER_ARRAY arr as parameter.
*/
vector maxSubarray(vector arr) {
vector result(2); // Create a vector of array with size 2
//maxSubarray Sum
int maxSum = INT32_MIN;//assgining a minimum value to the maxSum
int currSum = 0;
for(int i=0;i<=arr.size()-1;i++){
currSum += arr[i];
if (currSum > maxSum){
maxSum = currSum;
}
if(currSum < 0){
currSum = 0;
}
}
//--------------
//maxSubsequence Sum
int sum = 0;
for (int i = 0; i < arr.size(); ++i) {
int num = arr[i];
if (num > 0) {
sum += num;
}
}
if (sum == 0) {
sum = *std::max_element(arr.begin(), arr.end());
}
// Fill the individual vectors with some values
result[0] = maxSum;
result[1] = sum;
return result;
}
int main()
{
ofstream fout(getenv("OUTPUT_PATH"));
string t_temp;
getline(cin, t_temp);
int t = stoi(ltrim(rtrim(t_temp)));
for (int t_itr = 0; t_itr < t; t_itr++) {
string n_temp;
getline(cin, n_temp);
int n = stoi(ltrim(rtrim(n_temp)));
string arr_temp_temp;
getline(cin, arr_temp_temp);
vector<string> arr_temp = split(rtrim(arr_temp_temp));
vector<int> arr(n);
for (int i = 0; i < n; i++) {
int arr_item = stoi(arr_temp[i]);
arr[i] = arr_item;
}
vector<int> result = maxSubarray(arr);
for (size_t i = 0; i < result.size(); i++) {
fout << result[i];
if (i != result.size() - 1) {
fout << " ";
}
}
fout << "\n";
}
fout.close();
return 0;
The Maximum Subarray
You are viewing a single comment's thread. Return to all comments →
EASY C++ SOLUTION
include
using namespace std;
string ltrim(const string &); string rtrim(const string &); vector split(const string &);
/* * Complete the 'maxSubarray' function below. * * The function is expected to return an INTEGER_ARRAY. * The function accepts INTEGER_ARRAY arr as parameter. */
vector maxSubarray(vector arr) { vector result(2); // Create a vector of array with size 2 //maxSubarray Sum int maxSum = INT32_MIN;//assgining a minimum value to the maxSum int currSum = 0; for(int i=0;i<=arr.size()-1;i++){ currSum += arr[i]; if (currSum > maxSum){ maxSum = currSum; } if(currSum < 0){ currSum = 0; } } //-------------- //maxSubsequence Sum int sum = 0; for (int i = 0; i < arr.size(); ++i) { int num = arr[i]; if (num > 0) { sum += num; } } if (sum == 0) { sum = *std::max_element(arr.begin(), arr.end()); }
}
int main() { ofstream fout(getenv("OUTPUT_PATH"));
}
string ltrim(const string &str) { string s(str);
}
string rtrim(const string &str) { string s(str);
}
vector split(const string &str) { vector tokens;
}