Skip to content

Commit

Permalink
Merge pull request #3 from Amisha328/main
Browse files Browse the repository at this point in the history
Create 11_Maximum_Points.cpp
  • Loading branch information
Niraj-1729 authored Oct 19, 2023
2 parents b55e7a1 + 4ee406e commit e04e8ba
Showing 1 changed file with 50 additions and 0 deletions.
50 changes: 50 additions & 0 deletions 5 DSA/5 ARRAY/11_Maximum_Points.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
// Maximum Points You Can Obtain from Cards
// Problem link:
// https://leetcode.com/problems/maximum-points-you-can-obtain-from-cards/

#include <bits/stdc++.h>
using namespace std;

// Approach 1:
// Prefix Sum
class Solution {
public:

int maxScore(vector<int>& cardPoints, int k) {

int n = cardPoints.size();

vector<int> prefix_sum(n+1);

prefix_sum[1] = cardPoints[0];
for(int i = 1; i < n; i++)
{
prefix_sum[i+1] = prefix_sum[i] + cardPoints[i];
}

int middle_sum = prefix_sum[n];
for(int i = n-k; i <= n; i++)
{
middle_sum = min(middle_sum, prefix_sum[i]-prefix_sum[i-(n-k)]);
}

return prefix_sum[n]-middle_sum;

}
};

// Approach 2:
// Sliding Window
class Solution {
public:
int l = 0, r = n-k;
int tot_sum = accumulate(cardPoints.begin()+r, cardPoints.end(), 0LL);
int sum = tot_sum;
while(k--)
{
tot_sum += cardPoints[l++] - cardPoints[r++];
sum = max(sum, tot_sum);
}
return sum;
}
};

0 comments on commit e04e8ba

Please sign in to comment.