文章目录
- BC146 添加逗号
- DP2 跳台阶
- JZ61 扑克牌顺子
- 解法一:排序+模拟
- 解法二:规律+哈希
BC146 添加逗号
BC146 添加逗号
#include<iostream>
#include<string>using namespace std;int main()
{string s;cin>>s;string ans;for(int i=0;i<s.size();i++){ans+=s[i];if((s.size()-1-i)%3==0&&i!=s.size()-1) ans=ans+",";}cout<<ans<<endl;return 0;
}
DP2 跳台阶
DP2 跳台阶
#include<iostream>
#include<vector>using namespace std;int n;
vector<int> dp(n+1);int main()
{cin>>n;dp[1]=1;dp[2]=2;for(int i=3;i<=n;i++){dp[i]=dp[i-1]+dp[i-2];}if(n==1||n==0) cout<<n<<endl;else cout<<dp[n]<<endl;return 0;
}
JZ61 扑克牌顺子
JZ61 扑克牌顺子
解法一:排序+模拟
class Solution {
public:bool IsContinuous(vector<int>& numbers) {sort(numbers.begin(),numbers.end());int z=0,gap=0;for(int i=0;i<numbers.size()-1;i++){if(numbers[i]==0) z++;else if(numbers[i]==numbers[i+1]) return false;else {gap+=numbers[i+1]-numbers[i]-1;}}return z>=gap;}
};
解法二:规律+哈希
非0元素没有重复:
- 最大值-最小值<=4
- 不会出现重复元素
#include <algorithm>
class Solution {bool hash[14]={0};
public:bool IsContinuous(vector<int>& numbers) {int maxV=0,minV=14;for(auto x:numbers){if(x){if(hash[x]) return false; // 出现重复元素hash[x]=true;maxV=max(maxV, x);minV=min(minV, x);}}return maxV-minV<=4;}
};