Current Position: SDE1 at Paytm
Location: Noida, India
Date: October 15, 2021


Q1
Solution:
vector<int> findSongs(int rideDuration, vector<int> a) {
if(rideDuration < 30) return {-1,-1};
int x = rideDuration - 30;
vector<int>res(2);
res[0]=-1;
res[1]=-1;
int ma = INT_MIN;
map<int,int>m;
for(int i=0;i<a.size();i++){
if(m.count(x-a[i]) && i!= m[x-a[i]] &&(ma < max(a[i],x-a[i])) ){
res[0] = m[x-a[i]];
res[1] = i;
ma = max(a[i],x-a[i]);
}
m[a[i]]=i;
}
return res;
}


Q2
Solution:
int distanceTraversed(vector<vector<int>> a) {
int n = a.size();
int m = a[0].size();
queue<pair<int,int>>q;
vector<vector<bool>>vis(n,vector<bool>(m,false));
if(a[0][0] != 1) return -1;
q.push({0,0});
vis[0][0] = true;
vector<vector<int>>dir = {{1,0},{-1,0},{0,1},{0,-1}};
int moves = 0;
while (!q.empty()) {
int size = q.size();
for(int j=0;j<size;j++){
pair<int,int>temp = q.front();
int x = temp.first, y = temp.second;
q.pop();
if(a[x][y] == 9) return moves;
for(int i=0;i<4;i++){
int xx = x+dir[i][0], yy = y+dir[i][1];
if(xx<0 || yy<0 || xx>=n || yy>=m || a[xx][yy]==0 || vis[xx][yy]) continue;
vis[xx][yy] = true;
q.push({xx,yy});
}
}
moves++;
}
return -1;
}