Knight Dialer LeetCode solution in Java
1class Solution {2public int knightDialer(int n) {3var dp = new long[10];4var tmp = new long[10];5Arrays.fill(dp, 1);6for (int i = 1; i < n; i++) {7tmp[1] = dp[6] + dp[8];8tmp[2] = dp[7] + dp[9];9tmp[3] = dp[4] + dp[8];10tmp[4] = dp[0] + dp[3] + dp[9];11tmp[5] = 0;12tmp[6] = dp[0] + dp[1] + dp[7];13tmp[7] = dp[2] + dp[6];14tmp[8] = dp[1] + dp[3];15tmp[9] = dp[2] + dp[4];16tmp[0] = dp[4] + dp[6];17for (int j = 0; j < 10; j++) tmp[j] = tmp[j] % 1000000007;18var arr = dp;19dp = tmp;20tmp = arr;21}22long res = 0;23for (int i = 0; i < 10; i++) {24res = (res + dp[i]) % 1000000007;25}26return (int) res;27}28}