目录
- 1.添加逗号 (pass)
- 1.1 解析
- 1.2代码
- 2.跳台阶 (pass)
- 2.1 解析
- 2.2 代码
- 3.扑克牌顺子 (pass)
- 3.1 解析
- 3.2 代码
1.添加逗号 (pass)
添加逗号
模拟、字符串
1.1 解析
1.2代码
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
//方法一:
int main()
{int n=0;cin>>n;string ret;int count=0;//计数while(n){count++;ret+=to_string(n%10);n/=10;if(count%3==0) ret+=',';}//判断最后一个位置if(ret.back()==',') ret.pop_back();reverse(ret.begin(),ret.end());cout<<ret;return 0;
}//方法二:
int main()
{string s;cin>>s;string ret;for(int i=0;i<s.size();i++){ret+=s[i];if((s.size()-i-1)%3==0&&i!=s.size()-1) ret+=',';}cout<<ret;return 0;
}
2.跳台阶 (pass)
跳台阶
线性dp
2.1 解析
2.2 代码
int jumpFloor(int number) {//创建dp表vector<int> dp(number+1);//初始化dp[0]=1,dp[1]=1;//填表for(int i=2;i<=number;i++)dp[i]=dp[i-1]+dp[i-2];return dp[number];}//优化:
int jumpFloor(int number) {int a=1,b=1;int c=1;int count=2;while(count<=number){count++;a=b;b=c;c=a+b;}return c;}
3.扑克牌顺子 (pass)
扑克牌顺子
模拟
3.1 解析
3.2 代码
//方法一:模拟+排序
bool IsContinuous(vector<int>& nums) {int count=0;//统计0的个数sort(nums.begin(),nums.end());for(int i=0;i<nums.size()-1;i++){if(nums[i]==0) count++;else{if(nums[i+1]==nums[i]) return false;//出现重复if(nums[i+1]-nums[i]-1>count) return false;//相差的数个数,小于0的个数else count-=nums[i+1]-nums[i]-1;}}return true;}
//方法二:规律
class Solution {bool hash[14]={0};//统计是否出现过
public:bool IsContinuous(vector<int>& nums) {int maxval=0,minval=14;for(auto& x:nums){if(x){if(hash[x]) return false;//出现重复hash[x]=true;maxval=max(x,maxval);minval=min(x,minval);}}return maxval-minval<=4;}
};