2020年のvivo春募集筆記試験質問分析

2020年のvivo春募集筆記試験の3番目の質問の分析

N日目の携帯電話の生産を数える

タイトルの説明を見てください

/**
 * 在vivo产线上,每位职工随着对手机加工流程认识的熟悉和经验的增加,日产量也会不断攀升。
 * 假设第一天量产1台,接下来2天(即第二、三天)每天量产2件,接下来3天(即第四、五、六天)每天量产3件 ... ...
 * 以此类推,请编程计算出第n天总共可以量产的手机数量。
 * 输入例子1:
 * 11
 *
 * 输出例子1:
 * 35
 *
 * 例子说明1:
 * 第11天工人总共可以量产的手机数量
 */

これは本質的にステップ関数であり、ステップの幅は日数に関連しています。この問題には定型的な解決策があるはずですが、私は漠然としていて考えられません。
ですから、全員に十分な理解のある解決策を提供してください。

LeetcodeのジャンプゲームIIを覚えていますか?その質問の要件は、最後にジャンプするために最小のホップ数を使用することです。その質問を解決するためのO(n)ソリューションがあります。つまり、ジャンプポイントを選択し、次のジャンプポイントに到達したときに、前の2つのジャンプポイントの違いに応じて最大ジャンプ距離は、新しい次のジャンプポイントを選択します。

この問題は、各ジャンプの最大長が1増えることを除いて、上記のジャンプゲームと非常に似ています。解決策を以下に示します。

    public class Solution {
    
    
        /**
         *
         * @param n int整型 第n天
         * @return int整型
         */
        public int solution (int n) {
    
    
            int currGap=1;
            int nextPos=1;//需要更新每天生产数量变化的地方
            int phoneNum=0;
            for(int i=1;i<=n;i++){
    
    
                phoneNum+=currGap;
                if(i==nextPos){
    
    
                    currGap++;
                    nextPos=i+currGap;
                }
            }
            return phoneNum;
        }
    }

おすすめ

転載: blog.csdn.net/qq_23594799/article/details/106604061