Day 9

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;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值