当前位置: 首页 > news >正文

Day 9

目录

  • 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;
    }
};

相关文章:

  • Node 处理 request 的过程中,都会更新哪些 metadata 和 property
  • 餐饮厨房开源监控安全系统的智能革命
  • 小刚说C语言刷题——第20讲 循环之嵌套循环
  • 【面经】兼顾频繁插入/删除和查询访问 非阻塞网络I/O模型 connect的阻塞性 `unique_ptr`的使用场景和析构机制
  • 20年AB1解码java
  • 【PyTorch项目实战】卷积(Convolution ) + 反卷积(Deconvolution)
  • 文章记单词 | 第27篇(六级)
  • WePY 框架:小程序开发的“Vue式”利器!!!
  • gogs私服对应SSH 协议配置
  • 基于 OpenHarmony 5.0 的星闪轻量型设备应用开发——Ch3 设备驱动开发
  • python基础:位置互换
  • 【前端】【React】useCallback的作用与使用场景总结
  • 银行业务知识序言
  • 基于labview的多功能数据采集系统
  • 已经安装了pip,出现pip command not found【解决方法】
  • 如何用VBA编辑器合并Word文档:详细教程
  • spark-rdd
  • 【补题】P9423 [蓝桥杯 2023 国 B] 数三角
  • 《软件工程类标准规范》写作方法和技巧
  • 【Python】什么是列表推导式?