Leetcode每日一题练习 ------ 2028. 找出缺失的观测数据

Leetcode 每日一题练习继续讨论:

2028. 找出缺失的观测数据
2028. Find Missing Observations

题解

本题首先判断什么情况下不存在可行解, 用平均数计算数字和再减去已知的数字后的余数如果比6n大或比n小, 则无可行解, 6n表示未知的n个骰子都是6, n表示未知的n个骰子都是1. 若有可行解, 则先将这n个骰子均赋值为1, 随后使用贪心赋值, 直到将余数用完. 如3个骰子, 先赋值1,1,1. 若余数为7, 则再赋值6,1,1, 再赋值6,3,1. 每次都尽可能将一个骰子赋予最大值.

代码

func missingRolls(rolls []int, mean int, n int) []int {
    rollsum := 0
    for _,roll := range rolls{
        rollsum += roll
    }
    sum := mean *(len(rolls)+n)
    sum -= rollsum
    if sum > 6*n || sum < n{
        return []int{}
    }
    remain := make([]int, n)
    for i:=0;i<n;i++{
        remain[i] = 1
    }
    sum -= n
    index := 0
    for sum > 5{
        remain[index] += 5
        sum -= 5
        index++
    }
    remain[index] += sum
    return remain
}
1 Like

刷题佬!支持!

1 Like