题目:
有一个 n * m 的二维数组(n 表示二维数组的长度, m 表示二维数组每个元素的长度)
1. 找出最小值是多少
2. 计算以最小值为中心其 9宫格内所有元素的和
如果最小值在边界则不存在的按 0 计算
import java.util.Arrays;
import java.util.Random;
public class Test1 {
public static void main(String[] args) {
int n = 5;
int m = 6;
int[][] nums = new int[5][6];
Random random = new Random();
for (int i = 0; i < nums.length; i++) {
for (int j = 0; j < nums[i].length; j++) {
nums[i][j] = random.nextInt(50);
}
}
for (int i = 0; i < nums.length; i++) {
System.out.println(Arrays.toString(nums[i]));
}
// 找最小值
int rMin = 0; // 行
int cMin = 0; // 列
for (int i = 0; i < nums.length; i++) {
for (int j = 0; j < nums[i].length; j++) {
if (nums[rMin][cMin] > nums[i][j]){
rMin = i;
cMin = j;
}
}
}
// 默认全是 0
int tl = 0, t = 0, tr = 0, l = 0, r = 0, bl = 0, b = 0, br = 0;
// 上左
if ((rMin - 1) >= 0 && (cMin - 1) >= 0){
tl = nums[rMin - 1][cMin - 1];
}
// 上
if ((rMin - 1) >= 0){
t = nums[rMin - 1][cMin];
}
// 上右
if ((rMin - 1) >= 0 && (cMin + 1) < m){
tr = nums[rMin - 1][cMin + 1];
}
// 左
if ((cMin - 1) >= 0){
l = nums[rMin][cMin - 1];
}
// 右
if ((cMin + 1) < m){
r = nums[rMin][cMin + 1];
}
// 左下
if ((rMin + 1) < n && (cMin - 1) >= 0){
bl = nums[rMin + 1][cMin - 1];
}
// 下
if ((rMin + 1) < n){
b = nums[rMin + 1][cMin];
}
// 右下
if ((rMin + 1) < n && (cMin + 1) < m){
br = nums[rMin + 1][cMin + 1];
}
System.out.println(rMin + ", " + cMin);
System.out.println(nums[rMin][cMin]);
int sum = tl + t + tr + l + nums[rMin][cMin] + r + bl + b + br;
System.out.println(sum);
}
}
- 生成一个随机数组
- 求最小值
- 找左上,上,右上,左,右,左下,右下,下的元素