1. The final uniform character should be either A[0] or B[0]
2. A[0] could be at the top, or the bottom. Same applies to B[0]
3. If A[0] works, no need to check B[0]; Because if both A[0] and B[0] exist in all dominoes, the result should be the same.
1 class Solution { 2 public int minDominoRotations(int[] A, int[] B) { 3 if (A.length < 1 || B.length < 1 || A.length != B.length) return -1; 4 int n = A.length; 5 for (int i = 0, a = 0, b = 0; i < n && (A[0] == A[i] || A[0] == B[i]); i ++) { 6 if (A[i] != A[0]) a ++; // a stands for try to put A[0] at top 7 if (B[i] != A[0]) b ++; // b stands for try to put A[0] at bottom 8 if (i == n - 1) return Math.min(a, b); 9 } 10 11 for (int i = 0, a = 0, b = 0; i < n && (B[0] == A[i] || B[0] == B[i]); i ++) { 12 if (A[i] != B[0]) a ++; 13 if (B[i] != B[0]) b ++; 14 if (i == n - 1) return Math.min(a, b); 15 } 16 return -1; 17 } 18 }
转载于:https://www.cnblogs.com/EdwardLiu/p/11615274.html
相关资源:JAVA上百实例源码以及开源项目