# 1007. Minimum Domino Rotations For Equal Row

• Time:
• Space:
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 class Solution { public: int minDominoRotations(vector& tops, vector& bottoms) { const int n = tops.size(); vector countTops(7); vector countBottoms(7); vector countBoth(7); for (int i = 0; i < n; ++i) { ++countTops[tops[i]]; ++countBottoms[bottoms[i]]; if (tops[i] == bottoms[i]) ++countBoth[tops[i]]; } for (int i = 1; i <= 6; ++i) if (countTops[i] + countBottoms[i] - countBoth[i] == n) return n - max(countTops[i], countBottoms[i]); return -1; } }; 
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 class Solution { public int minDominoRotations(int[] tops, int[] bottoms) { final int n = tops.length; int[] countTops = new int[7]; int[] countBottoms = new int[7]; int[] countBoth = new int[7]; for (int i = 0; i < n; ++i) { ++countTops[tops[i]]; ++countBottoms[bottoms[i]]; if (tops[i] == bottoms[i]) ++countBoth[tops[i]]; } for (int i = 1; i <= 6; ++i) if (countTops[i] + countBottoms[i] - countBoth[i] == n) return n - Math.max(countTops[i], countBottoms[i]); return -1; } } 
 1 2 3 4 5 6 class Solution: def minDominoRotations(self, tops: List[int], bottoms: List[int]) -> int: for num in range(1, 7): if all(num in pair for pair in zip(tops, bottoms)): return len(tops) - max(tops.count(num), bottoms.count(num)) return -1