測試平台:P8600 4G RAM。現有最高效解法(夜咖啡)穩定 195-200ms,eaglet 約 400ms,本解法穩定 170ms 左右。
cur = i * cols + j,提升快取局部性。up = cur - cols、down = cur + cols 等算術運算取得,避免巢狀迴圈。static public int countSpecialNumbers(string[] field, int A, int B) {
int count = 0;
int cols = field[0].Length + 2;
int rows = field.Length + 2;
string s = string.Concat(new string('0', cols + 1), String.Join("00", field), new string('0', cols + 1));
int number, up, down, cur;
for (int i = 1; i < rows - 1; i++) {
for (int j = 1; j < cols - 1; j++) {
cur = i * cols + j;
up = cur - cols;
down = cur + cols;
number = s[up - 1] + s[up] + s[up + 1] + s[cur - 1] + s[cur + 1] + s[down - 1] + s[down] + s[down + 1] - 384;
if (number >= A && number <= B) count++;
}
}
return count;
}
將二維問題轉為一維陣列運算,結合補零邊界與批次 ASCII 減法,達到極致效能。