zoukankan      html  css  js  c++  java
  • leetcode1007

     1 public class Solution
     2     {
     3         public int MinDominoRotations(int[] A, int[] B)
     4         {
     5             var na = A.Length;
     6             var nb = B.Length;
     7             if (na != nb)
     8             {
     9                 return -1;
    10             }
    11             var dic1 = new Dictionary<int, List<int>>();
    12             var dic2 = new Dictionary<int, List<int>>();
    13             for (var i = 1; i <= 6; i++)
    14             {
    15                 dic1.Add(i, new List<int>());
    16                 dic2.Add(i, new List<int>());
    17             }
    18 
    19             for (var i = 0; i < na; i++)
    20             {
    21                 var a = A[i];
    22                 dic1[a].Add(i);
    23 
    24                 var b = B[i];
    25                 dic2[b].Add(i);
    26             }
    27 
    28             var minchanges = na;
    29             var find = false;
    30             for (var i = 1; i <= 6; i++)
    31             {
    32                 var top = dic1[i];
    33                 var bottom = dic2[i];
    34                 var temp = top.Union(bottom).Distinct();
    35                 if (temp.Count() == na)
    36                 {
    37                     minchanges = Math.Min(minchanges, na - Math.Max(top.Count(), bottom.Count()));
    38                     find = true;
    39                 }
    40             }
    41             return find ? minchanges : -1;
    42         }
    43     }

    思路,分别记录上部和下部的每一个点数出现的索引,然后对以此判断每一个点数的并集,是否包含了全部的索引。

    这样的点数,就是可以满足在同一侧全是一样的点数。

    下面就要找最小的移动次数,发现最小的移动次数是保持这个点数出现的次数多的一面不动,而把这个点数出现在另一面的牌进行翻转。

    如代码所示:34行,求并集。37行,进行最小次数判断。

  • 相关阅读:
    node 搭建代理服务器
    jquery常见的方法
    静态布局字体标签
    ajax简单了解
    GET方式缓存清除
    Ajax使用概述
    SESSION技术
    COOKIE技术
    PHP操作数据库(二)-增删改查操作
    PHP操作数据库(一)-步骤介绍
  • 原文地址:https://www.cnblogs.com/asenyang/p/10507314.html
Copyright © 2011-2022 走看看