Frage im Vorstellungsgespräch bei Microsoft

Maximum continguous subarray of an array,

Antwort im Vorstellungsgespräch

Anonym

9. Feb. 2013

Let's assume the array contains both negative and positive values. We will keep track of the beginning and end of the current sub-array which gives us the greatest sum. // Find. max contiguous subarray void subArray(const vector& arr, int& start, int& end, int& sum) { if (arr.empty()) return; sum = 0; int currSum(0), i(0), j(0); for ( ; i = 0) currSum += arr[j++]; else { // found a new subarray with greater sum ==> update variables if (currSum > sum) { sum = currSum; start = i; end = j-1; } // reset variables currSum = 0; i = ++j; } } // edge case - very large number in the last position if (currSum > sum) { sum = currSum; start = i; end = j-1; } }