You are on page 1of 6

Array of N

Array of N java 11 public int solution(int[] A, int K) {


int[][] left = new int[A.length][2];
int leftMin = A[0];
int leftMax = A[0];
left[0][0] = Integer.MAX_VALUE;
left[0][1] = Integer.MIN_VALUE;
for(int i = 1; i < A.length; i++) {
left[i][0] = leftMin;
left[i][1] = leftMax;
leftMin = Math.min(leftMin, A[i]);
leftMax = Math.max(leftMax, A[i]);
}

int[][] right = new int[A.length][2];


int rightMin = A[A.length - 1];
int rightMax = A[A.length - 1];
right[A.length - 1][0] = Integer.MAX_VALUE;
right[A.length - 1][1] = Integer.MIN_VALUE;
for(int i = A.length - 2; i >= 0; i--) {
right[i][0] = rightMin;
right[i][1] = rightMax;
rightMin = Math.min(rightMin, A[i]);
rightMax = Math.max(rightMax, A[i]);
}
int res = Integer.MAX_VALUE;
for(int i = 0; i <= A.length - K; i++) {
int min = Math.min(left[i][0], right[i + K - 1
][0]);
int max = Math.max(left[i][1], right[i + K -
1][1]);
res = Math.min(res, max - min);
}

return res;
}
Balloon code python
Biggest of X
Robot code c++ #include<bits/stdc++.h>
using namespace std;

unordered_map<string, bool> visited;


unordered_set<string> st;
vector<string> grid;

void dfs(int i, int j, int dir) {


int m = grid.size();
int n = grid[0].size();
if(i == m || i == -1 || j == n || j == -1) {
if(i == m) dfs(i-1, j, 2);
else if(i == -1) dfs(i+1, j, 0);
else if(j == n) dfs(i, j-1, 1);
else if(j == -1) dfs(i, j+1, 3);
return;
}
string key = to_string(i) + "_" + to_string(j) + "_" +
to_string(dir);
if(visited.find(key) != visited.end()) return;
visited[key] = true;
if(grid[i][j] != 'X') {
string k = to_string(i) + "_" + to_string(j);
st.insert(k);
if(dir == 0) dfs(i, j+1, 0);
else if(dir == 1) dfs(i+1, j, 1);
else if(dir == 2) dfs(i, j-1, 2);
else if(dir == 3) dfs(i-1, j, 3);
}
else {
if(dir == 0) dfs(i, j-1, 1);
else if(dir == 1) dfs(i-1, j, 2);
else if(dir == 2) dfs(i, j+1, 3);
else if(dir == 3) dfs(i+1, j, 0);
}
return;
}
int main() {
grid = {"...X..",".X.XXX", "......", "X....."};
dfs(0, 0, 0);
cout << st.size();
return 0;
}

You might also like