Current streak:
0 days
Longest streak:
12 days
Less
More
#include <bits/stdc++.h>
void setZeros(vector<vector<int>> &matrix)
{
int m=matrix.size();
int n=matrix[0].size();
set<int>row,col;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
// storing the postion of zero
if(matrix[i][j]==0){
row.insert(i);
col.insert(j);
}
}
}
for(int i:row){
for(int j=0;j<n;j++){
matrix[i][j]=0;
}
}
for(int j:col){
for(int i=0;i<m;i++){
matrix[i][j]=0;
}
}
}
#include<bits/stdc++.h>
int helper(int n,vector<vector<int>>& points,vector<vector<int>>& dp,int last,int day){
// base case
if(day==n)return 0;
if(dp[day][last] !=-1)return dp[day][last];
int maxi=0;
for(int i=0;i<3;i++){
// we cant count points earned on last day
if(i!=last){
int temp= points[day][i] + helper(n,points,dp,i,day+1);
maxi = max(maxi,temp);
}
}
return dp[day][last]=maxi;
}
int ninjaTraining(int n, vector<vector<int>> &points)
{
vector<vector<int>>dp(n,vector<int>(4,-1));
// here 3 as a last day means that no points earned before day 0
return helper(n,points,dp,3,0);
}