内容简介:给定一副牌,每张牌上都写着一个整数。此时,你需要选定一个数字仅当你可选的
914.卡牌分组
题目
给定一副牌,每张牌上都写着一个整数。
此时,你需要选定一个数字 X
,使我们可以将整副牌按下述规则分成 1 组或更多组:
X
仅当你可选的 X >= 2
时返回 true
。
示例 1:
**
输入:[1,2,3,4,4,3,2,1]
**输出:**true
**解释:**可行的分组是 [1,1],[2,2],[3,3],[4,4]
示例 2:
**
输入:[1,1,1,2,2,2,3,3]
**输出:**false
**解释:**没有满足要求的分组。
示例 3:
**
输入:[1]
**输出:**false
**解释:**没有满足要求的分组。
示例 4:
**
输入:[1,1]
**输出:**true
**解释:**可行的分组是 [1,1]
示例 5:
**
输入:[1,1,2,2,2,2]
**输出:**true
**解释:**可行的分组是 [1,1],[2,2],[2,2]
提示:
**
1 <= deck.length <= 10000 0 <= deck[i] < 10000
思考
计算两个数 a, b 的最大公约数
-
**a =
c
* b + ****d **
- d = 0 a = c * b
-
**d > 0 a = c * b + d *
->b = e d + f
- **f = 0 b = e * d <- a = c * ( e * d ) + ** d
- f > 0 ** b = e * d + ****f ****<- a = c * ( e * d + f ) + d **
测试最大公约数
package main
import "fmt"
func GreatestCommonDivisor(a, b int) int {
for b != 0 {
return GreatestCommonDivisor(b, a % b)
}
return a
}
func main() {
fmt.Println(GreatestCommonDivisor(6, 9)) // 3
fmt.Println(GreatestCommonDivisor(2, 8)) // 2
fmt.Println(GreatestCommonDivisor(2, 3)) // 1
}
Go实现
package main
import (
"fmt"
"math"
)
func GreatestCommonDivisor(a, b int) int {
// 定义求最大公约数的方法
for b != 0 {
return GreatestCommonDivisor(b, a % b)
}
return a
}
func hasGroupsSizeX(deck []int) bool {
// 1. 统计各个数出现的次数
m := make(map[int]int)
min := math.MaxInt64
for _, v := range deck {
if m[v] != 0{
m[v] += 1
} else {
m[v] = 1
}
}
fmt.Println("min: ", min)
// 2. 遍历找出最小次数
for i, v := range m {
fmt.Printf("数字:%d, 出现了 %d 次\n", i, v)
if min > v {
min = v
}
}
fmt.Printf("各个数出现的最小次数:%d\n", min)
// 3. 求次数与最小次数之间是否存在最大公约数
for _, v := range m {
fmt.Printf("min=%d, 与 %d 之间的最大公约数是 %d\n", min, v, GreatestCommonDivisor(min, v))
if(GreatestCommonDivisor(min, v)<=1) {
fmt.Println("false")
return false
}
}
fmt.Println("true")
return true
}
func main() {
a := []int{1,2,3,4,4,3,2,1}
hasGroupsSizeX(a)
}
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- mybatis从数据库中取数据且分组,返回分组数据
- Java8中使用stream进行分组统计和普通实现的分组统计的性能对比
- MongoDB 分组统计
- MySQL——分组查询
- SPL 分组优化技巧
- WAF分组安全策略匹配
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
高扩展性网站的50条原则
[美] Martin L. Abbott、[美]Michael T. Fisher / 张欣、杨海玲 / 人民邮电出版社 / 2012-6-3 / 35.00元
《高扩展性网站的50条原则》给出了设计高扩展网站的50条原则,如不要过度设计、设计时就考虑扩展性、把方案简化3倍以上、减少DNS查找、尽可能减少对象等,每个原则都与不同的主题绑定在一起。大部分原则是面向技术的,只有少量原则解决的是与关键习惯和方法有关的问题,当然,每个原则都对构建可扩展的产品至关重要。 主要内容包括: 通过克隆、复制、分离功能和拆分数据集提高网站扩展性; 采用横向......一起来看看 《高扩展性网站的50条原则》 这本书的介绍吧!