【レビュー日記】2028.不足している観測データを探す

オファーが届きました。友達を掘って受け取りましょう!私は2022年の春の採用チェックインイベントに参加しています。クリックしてイベントの詳細を表示します。

【レビュー日記】2028.不足している観測データを探す

この執筆日記の12番目の記事のタイトルは次のとおりです。2028。欠落している観測データコンテストを見つける

1.トピックの説明:

しばらく質問を読んだ後、最初の反応はこれが数学的な質問であるということです。注意深く読んだ後、それは確かに別の数学的な質問ですが、プログラミングによって実装する必要があります。一緒に分析しましょう。

2.思考分析:

1.この質問はどのような考えを調べますか?あなたはどう思いますか?

タイトルに記載されている情報によると、これらの重要なポイントがあることがわかります。

  • 指定されたrolls配列の要素と、補足する必要のある要素データ範囲は、どちらも1〜6です。
  • これで、欠測データを計算するための平均値とn + mの数がわかりました。または、観測データ全体を見つけることができます。
  • nに対応する配列を見つけます。多くのバージョンが存在する可能性があり、1つのバージョンを出力するだけで済みます。

例に従って推論することができます。

例:ロール= [1,5,6]、平均= 3、n = 4

2028.欠落している観測値を見つける

上記のシミュレーションによると、コアポイントはn個の数値を与えることができるremainingSumの合計を計算することであることがわかります。remainingSumがnより小さいか、remainingSumが6 * nより大きい場合、それは私たちの意味を満たしません。

要件を満たすremainingSumを取得すると、n個の数値に対応する値を割り当てることができ、割り当てのロジックも非常に単純です。

必要なremainingSumが取得された場合、remainingSum / nは6以下である必要があり、等しい場合は、余りがあってはなりません。

次に、割り当ての原則は、remainingSum %nによって得られた余りを複数のポイントに分割し、それらを各平均に追加することです。

3.コーディング

上記の論理と分析に従って、それを次のコードに変換することができます。これは、数学的方法に従って処理できます。

エンコーディングは次のとおりです。

func missingRolls(rolls []int, mean int, n int) []int {
    remainSum := mean * (len(rolls) + n )
    for _,num := range rolls {
        remainSum = remainSum - num
    }

    // 如果剩余的数据不在 n - 6*n 之间,那么就是找不到缺失的数据
    if remainSum < n || remainSum > 6 * n {
        return nil
    }

    // 开始构造数据,此处的 remainSum 一定在  n - 6*n 之间 , 则 remainSum / n 一定是 shang 小于 6 ,再加上 yushu
    // 则我们可以构造这么一个版本:yushu 个 shang+1 , 和 (n-yushu)个 shang 即可
    shang,yushu := remainSum/n , remainSum %n

    res := make([]int, n)
    for i:=0;i<n;i++{
        res[i] = shang
        if i < yushu{
            res[i]++
        }
    }

    return res
}
复制代码

実際のコーディングは確かに上記のアイデアの翻訳です。翻訳されたコードは、主にnで伝送できるデータの範囲と、nデータの値を割り当てる方法を考慮するために上記のとおりです。

4.要約:

理解するのは難しいことではありません。ここでは、ループはn + mであるため、時間計算量はO(n + m)であり、空間計算量はO(1)です。

元のタイトルアドレス:2028。欠落している観測値の検索

私は今日ここにいます、私が学んだこと、何か逸脱があれば、私を訂正してください

いいね、フォロー、お気に入りへようこそ

友達、あなたのサポートと励ましは、私が共有を続け、品質を向上させる動機です

さて、これが今回です

テクノロジーはオープンであり、私たちの精神はオープンでなければなりません。変化を受け入れ、太陽の下で生き、前進します。

私は小悪魔の少年哪吾です、好きで、フォローして集めて、また会いましょう〜

おすすめ

転載: juejin.im/post/7079621946685521933