【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;
    }
};

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章