【LeetCode】 ——只有两个键的键盘(650)

只有两个键的键盘

在这里插入图片描述
分析:
注意以下几点:先开始已经有一个字符A,不支持部分复制,并且只能粘贴你上一次复制的字符

思路:我们先写出前十项观察一下
当n=1,return 0;
n=2,return 2;
n=3,return 3;
n=4,return 4;
n=5,return 5;
n=6,return 5;
n=7,return 7;
n=8,return 6;
n=9,return 9;
n=10,return 7;
由此可见,其实就是求它的因子个数的和。

方法一:非递归
class Solution 
{
public:
    int minSteps(int n) 
    {
    	int res=0;
    	for(int i=2;i<=n;i++)
    	{
    		while(n%i==0)
    		{
    			res+=i;
    			n/=i;
    		}
    	}
    	return res;
    }
}
方法二:递归
class Solution 
{
public:
    int minSteps(int n) 
    {
    	if(n==1)
    		return 0;
    	for(int i=2;i<=n;i++)
    	{
    		if(n%i==0)
    		{
    			return i+minSteps(n/i);
    		}
    	}
    	return n;
    }
};

在这里插入图片描述

原创文章 78 获赞 21 访问量 3552

猜你喜欢

转载自blog.csdn.net/Vicky_Cr/article/details/105428626