Appearance
Pick from both sides!
Problem Description
Given an integer array A of size N.
You have to pick exactly B elements from either left or right end of the array A to get the maximum sum.
Find and return this maximum possible sum.
NOTE: Suppose B = 4 and array A contains 10 elements then
- You can pick the first four elements or can pick the last four elements or can pick 1 from the front and 3 from the back etc. you need to return the maximum possible sum of elements you can pick.
Problem Constraints
1 <= N <= 10^5
1 <= B <= N
-10^3 <= A[i] <= 10^3Input Format
First argument is an integer array A.
Second argument is an integer B.Output Format
Return an integer denoting the maximum possible sum of elements you picked.Example Input
Input 1:
A = [5, -2, 3 , 1, 2]
B = 3
Input 2:
A = [1, 2]
B = 1Example Output
Output 1:
8
Output 2:
2Example Explanation
Explanation 1:
Pick element 5 from front and element (1, 2) from back so we get 5 + 1 + 2 = 8
Explanation 2:
Pick element 2 from end as this is the maximum we can getSolution
swift
import Foundation
class Solution {
func solve(_ A: inout [Int], _ B: inout Int) -> Int {
let len = A.count
var head = [Int](repeating:0,count:B+1)
var end = [Int](repeating:0,count:B+1)
for i in 1...B{
head[i] = head[i-1] + A[i-1]
end[i] = end[i-1] + A[len-i]
}
var m = Int.min
for i in 0...B {
m = max(m,head[i]+end[B-i])
}
return m
}
}