Untitled
unknown
csharp
3 months ago
1.2 kB
7
Indexable
public class NeighborSum { private record Pair(int adjSum, dgSum); int n; Dictionary<int, Pair> map; int[][] adjDir = new [ [0,1],[0,-1],[1,0],[-1,0] ]; int[][] dgDir = new [ [1,1],[1,-1],[-1,1],[-1,-1] ]; public NeighborSum(int[][] grid) { map = new(); n = grid[0].Length; if(n == 0) return; for(int x = 0;x<n;x++){ for(int y=0;y<n;y++){ int adj = 0; int dg = 0; for(int i=0;i<4;i++){ // 0,0 int nR = x + adjDir[i][0]; int nC = y + adjDir[i][1]; if(nR > 0 && nR < n && nC > 0 && nC < n){ adj += grid[nR][nC]; } } for(int i=0;i<4;i++){ int nR = x + dgDir[i][0]; int nC = y + dgDir[i][1]; if(nR > 0 && nR < n && nC > 0 && nC < n){ dg += grid[nR][nC]; } } map[grid[x][y]] = new Pair(adj, dg); } } } public int AdjacentSum(int value) { // handle not available cases if(map.Count == 0) return -1; if(map.ContainsKey(value)) return map[value].adjSum; else return -1; } public int DiagonalSum(int value) { if(map.Count == 0) return -1; if(map.ContainsKey(value)) return map[value].dgSum; else return -1; } }
Editor is loading...
Leave a Comment