方法一:规律
解题思路:
class Solution {
public:
int bulbSwitch(int n) {
return sqrt(n);
}
};
方法二:动态规划
解题思路:
会超出时间限制。
class Solution {
public:
int bulbSwitch(int n) {
vector<int> dp(n+1, 1);
dp[0] = 0;
if(n <= 3) return dp[n];
else{
for(int i = 4; i <= n; i++){
int count = 0;
for(int j = 2; j <= i; j++){
if(i % j == 0) count++;
}
if(count % 2 == 0) dp[i] = dp[i-1] + 1;
else dp[i] = dp[i-1];
}
return dp[n];
}
}
};