Tôi đã thực hiện một đánh giá cho phỏng vấn xin việc. Một trong 3 vấn đề mà tôi phải giải quyết trong một giờ là tìm ra giá trị tối đa trong một lưới nơi bạn đi qua nó và thêm 1 vào các yếu tố dựa trên các tọa độ được đưa ra. Tôi đã dành một chút thời gian cho vấn đề thứ hai và chỉ kết thúc với khoảng 20 phút cho lần này. Tôi đã không hoàn thành nó kịp thời nên nó làm phiền tôi.
Tôi chỉ muốn đảm bảo rằng giải pháp cho vấn đề vì tôi nhớ nó được tối ưu hóa.
Đầu vào là một mảng chuỗi gồm hai giá trị INT và kích thước của lưới.
Để minh họa, nếu các tọa độ được đưa ra là [3,2] [2,2] [1,3] thì
[1][1][0]
[1][1][0]
[1][1][0]
[1][1][0]
[2][2][0]
[2][2][0]
[1][1][0]
[2][2][0]
[3][3][1]
và như thế...
Tôi tin rằng kết quả cần thiết là giá trị tối đa không có trong [1,1] và số lần nó tồn tại trong lưới.
Đây là giải pháp tôi đưa ra. Có cách nào để tối ưu hóa nó không?
public static List twoDimensions[String[] coordinates, int n] {
List maxAndCount = new ArrayList[];
int[][] grid = new int[n][n];
int arrLength = coordinates.length;
int max = Integer.MIN_VALUE;
int count = 1;
for [int i = 0; i < arrLength; i++] {
String[] coors = coordinates[i].split[" "];
int row = Integer.parseInt[coors[0]];
int column = Integer.parseInt[coors[1]];
for [int j = 0; j < row; j++] {
for [int k = 0; k < column; k++] {
grid[j][k] += 1;
System.out.println["grid [" + j + "," + k + "]: " + grid[j][k]];
if [![j == 0 & k == 0] && grid[j][k] > max] {
max = grid[j][k];
count = 1;
} else if [grid[j][k] == max] {
count++;
}
}
}
}
maxAndCount.add[max];
maxAndCount.add[count];
return maxAndCount;
}
public static void main[String[] args] {
String[] coors = { "1 3", "2 4", "4 1", "3 2" };
System.out.println["The Max and count Are:" + twoDimensions[coors, 4].toString[]];
}
Sắp xếp 1783 thảo luận, bởi:
Vui lòng đăng nhập để đăng bình luận
14 giờ trước+ 0 bình luận+ 0 comments
if __name__ == '__main__': arr = [] for _ in range[6]: arr.append[list[map[int, input[].rstrip[].split[]]]] def sub_arr_sum[arr]: return sum[arr[0]] + arr[1][1] + sum[arr[2]] print[max[[sub_arr_sum[[row[j: j+3] for row in arr[i: i+3]]] for j in range[4] for i in range[4]]]]
4 ngày trước+ 0 bình luận+ 0 comments
private static int maximumHourGlass[List arr] { List maxes = new ArrayList[]; int looper = 1; int rowp = 0; int colp = 0; int sum = 0; for[int i = 0; i Initialize with 0 only if your matrix elements are positive # Here loop runs [R-2]*[C-2] times considering different top left cells for i in range[0, 4]: for j in range[0, 4]: # Considering arr[i][j] as top left cell of hour glass. SUM = [arr[i][j] + arr[i][j + 1] + arr[i][j + 2]] + [arr[i + 1][j + 1]] + [arr[i + 2][j] +arr[i + 2][j + 1] + arr[i + 2][j + 2]] #If previous sum is less then current sum then # update new sum in max_sum if[SUM > max_sum]: max_sum = SUM else: continue return print[max_sum] MaxSum[arr]