650. 2 Keys Keyboard

Posted stAr_1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了650. 2 Keys Keyboard相关的知识,希望对你有一定的参考价值。

public int minSteps(int n) {
        /*
        由于只能复制全部或者一个,所以:
        如果一个数不是质数,那么最快的就是由最大的公因子复制而来
        如果一个数是质数,那么所有方式都大于等于全部由1复制而来
        网上看了看这个规律都是观察得出的,所以直接背过:
        两个键的键盘问题(只能全部复制或者粘贴问题):
        非质数就考虑最大公因子,质数就直接返回n(当然考察质数也是需要循环判断没有因子)
         */
        if (n <= 1)
            return 0;
        int[] dp = new int[n+1];
        dp[0] = 0;
        dp[1] = 0;
        for (int i =2;i < n+1;i++ )
        {
            for (int j = i-1;j > 0;j--)
            {
                if (i % j == 0)
                {
                    //i/j是(i/j-1)+1,(i/j-1)代表粘贴(i/j-1),后边加的1是复制
                    dp[i] = dp[j] + (i/j);
                    break;
                }
            }
        }
        return dp[n];
    }

 

以上是关于650. 2 Keys Keyboard的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode刷题总结:650. 2 Keys Keyboard

leetcode 650. 2 Keys Keyboard 只有两个键的键盘(中等)

650. 2 Keys Keyboard

[LeetCode] 2 Keys Keyboard 两键的键盘

2 Keys Keyboard

[leetcode-651-4 Keys Keyboard]