博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode1007
阅读量:5855 次
发布时间:2019-06-19

本文共 1110 字,大约阅读时间需要 3 分钟。

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
>();12 var dic2 = new Dictionary
>();13 for (var i = 1; i <= 6; i++)14 {15 dic1.Add(i, new List
());16 dic2.Add(i, new List
());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行,进行最小次数判断。

转载于:https://www.cnblogs.com/asenyang/p/10507314.html

你可能感兴趣的文章
Apache + Tomcat 配置负载均衡
查看>>
升级OpenSSl出现错误
查看>>
个人memcached演练内容聚集(共11)
查看>>
Sublime Text快捷键和使用技巧
查看>>
Unity游戏开发技巧集锦2.1.3实现效果
查看>>
ArduinoYun教程之Arduino编程环境搭建
查看>>
centos7.1 vnc 配置
查看>>
网络图片嗅探工具driftnet
查看>>
对“车库咖啡的网络现状改造”的一点个人看法
查看>>
MS-SQL2005服务启动发生错误1053处理
查看>>
linix下用keepalived搭建高可用myqsl-ha
查看>>
shell编程(二)
查看>>
wxPython如何布局
查看>>
bash代码执行-选择执行 if or case
查看>>
我的友情链接
查看>>
iOS 通知
查看>>
为什么我们需要uCos
查看>>
CentOS 5.3上安装Apache+php+Mysql+phpMyAdmin
查看>>
残差分析
查看>>
概念介绍及流程介绍
查看>>