482. License Key Formatting
class Solution {
public:
string licenseKeyFormatting(string S, int K) {
string s,p="-";
int sum=0;
for(int i=S.size()-1;i>=0;i--)
{
if(S[i]=='-')
continue;
if((S[i]>='A'&&S[i]<='Z')||(S[i]>='0'&&S[i]<='9'))
s+=S[i];
else s.push_back(S[i]-32);
sum++;
if(sum==K)
{
s+=p;
sum=0;
}
}
if(s.back()=='-')
s.erase(s.begin()+s.size()-1);
reverse(s.begin(),s.end());
return s;
}
};
注:题目较简单,从后到前遍历一遍后再翻转即可,时间复杂度O(n),空间复杂度O(n)。超过98.81%,用时20min(理解题意理解错了。。除了第一个组合我以为第一个组合不用改,结果空在那想。。)。
485. Max Consecutive Ones
class Solution {
public:
int findMaxConsecutiveOnes(vector<int>& nums) {
int max=0,sum=0;
for(int i=0;i<nums.size();i++)
{
if(nums[i]==0)
sum=0;
else
{
sum++;
max=max>sum?max:sum;
}
}
return max;
}
};
注:题目较简单,从前到后遍历一遍即可,时间复杂度O(n),空间复杂度O(1)。超过53.76%,用时5min。
509. Fibonacci Number
动态规划:
class Solution {
public:
int fib(int N) {
if(N==0)
return 0;
vector<int> a(N+1, -1);
a[0] = 0;
a[1] = 1;
for(int i=2;i<=N;i++)
a[i] = a[i-1] + a[i-2];
return a[N];
}
};
递归:
class Solution {
public:
int fib(int N) {
vector<int> a(N+1, -1);
return recurrent(a,N);
}
int recurrent(vector<int> &a, int N)
{
if(a[N]!=-1)
return a[N];
if(N==0)
{
a[N] = 0;
return a[N];
}
if(N==1)
{
a[N] = 1;
return a[N];
}
a[N] = recurrent(a, N-1) + recurrent(a, N-2);
return a[N];
}
};
注:题目较简单,动态规划或者记忆化搜索。
Runtime: 4 ms, faster than 85.24% of C++ online submissions for Fibonacci Number.
Memory Usage: 8.4 MB, less than 21.21% of C++ online submissions forFibonacci Number.