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

【每日刷题】Day98

【每日刷题】Day98

🥕个人主页:开敲🍉

🔥所属专栏:每日刷题🍍

🌼文章目录🌼

1. 大数加法_牛客题霸_牛客网 (nowcoder.com)

2. 大数乘法_牛客题霸_牛客网 (nowcoder.com)

3. 扑克牌顺子_牛客题霸_牛客网 (nowcoder.com)

1. 大数加法_牛客题霸_牛客网 (nowcoder.com)

//思路:模拟。模拟加法以及加法的进位。

class Solution {

public:

    string solve(string s, string t)

    {

        string ans;

        int i = s.size()-1;

        int j = t.size()-1;

        int flag = 0;

        while(i>=0||j>=0)

        {

//从字符串最后,也就是个位数开始获取

            int ret1 = i>=0?s[i]-'0':0;

            int ret2 = j>=0?t[j]-'0':0;

//相加,>=10需要进位,因此需要%10

            ans.insert(0,1,(ret1+ret2+flag)%10+'0');

//flag为进位标志

            if(ret1+ret2+flag>=10)

                flag = 1;

            else

                flag = 0;

            if(i>=0)

                i--;

            if(j>=0)

                j--;

        }

//如果出了循环flag还为1,则进位多出一位

        if(flag)

            ans.insert(0,1,'1');

        return ans;

    }

};

2. 大数乘法_牛客题霸_牛客网 (nowcoder.com)

//思路:模拟竖式乘法。

//看图理解,一看就会:

class Solution {

public:

    string solve(string s, string t)

    {

        if(s[0]=='0')

            return s;

        if(t[0]=='0')

            return t;

        string ans;

        int size = s.size()+t.size();

        int* arr = (int*)calloc(size,sizeof(int));

//这里空出数组0号位置,用于进到最高位

        int sub = size-1;

        for(int i = t.size()-1;i>=0;i--)

        {

            int tmp = sub;

//每一位相乘存入数组

            for(int j = s.size()-1;j>=0;j--)

            {

                arr[tmp--] += (s[j]-'0')*(t[i]-'0');

            }

            sub--;

        }

        int flag = 0;

        for(int i = size-1;i>=1;i--)

        {

//进位后的数字

            ans.insert(0,1,(arr[i]+flag)%10+'0');

//进位数

            flag = (arr[i]+flag)/10;

        }

        if(flag)

            ans.insert(0,1,flag+'0');

        return ans;

    }

};

3. 扑克牌顺子_牛客题霸_牛客网 (nowcoder.com)

//思路:遍历+哈希记数。

//我们对numbers中非0的数进行记数,如果有两个相同的数则不可能构成顺子

//记数的同时我们记录0的个数,使用zero变量接收。

//记录完后我们定位到除0外的最小值与最大值区间,从两边向区间中间遍历,记录区间内0的个数,使用flag变量接收。

//最后返回zero是否≥flag,如果zero≥flag,则该区间一定能构成顺子;反之,则一定不能。

class Solution {

public:

    bool IsContinuous(vector<int>& numbers)

    {

        int hash[14] = {0};

        int flag = 0;

        int zero = 0;

        int up = 0;

        int down = 13;

        for(int i = 0;i<numbers.size();i++)

        {

//计算非0值的个数

            if(numbers[i]!=0)

                hash[numbers[i]]+=1;

//计算0的个数

            else

                zero++;

//如果有两个相同的数则不可能构成顺子

            if(hash[numbers[i]]>1)

                return false;

        }

//定位到除0外的最大最小值区间

        while(!hash[up])

        {

            up++;

        }

        while(!hash[down])

        {

            down--;

        }

        while(up<=down)

        {

//计算0的个数

            if(!hash[up])

                flag++;

            if(!hash[down])

                flag++;

            if(up==down&&!hash[up])

                flag--;

            up++;

            down--;

        }

        return zero>=flag;

    }

};

http://www.lryc.cn/news/420094.html

相关文章:

  • 51单片机-LED实验二
  • 批发行业进销存-webview 读取NFC,会员卡 源码CyberWinApp-SAAS 本地化及未来之窗行业应用跨平台架构
  • 博弈dp,CF 731E - Funny Game
  • 基础知识:深入理解MongoDB、MySQL与Redis的应用与实践
  • Reids中List类型、Set类型、SortedSet类型的常用指令
  • K8S Ingress 常用配置
  • 【K8S】K8S架构及相关组件
  • 【MATLAB第108期】基于MATLAB的fast、vbsa、dynia、eet、glue、pawn、rsa敏感性分析模型合集(无目标函数)【更新中】
  • 【K8S】为什么需要Kubernetes?
  • 【Linux】Linux中查找字符串中的命令
  • 最新HTML设计搜索表单
  • JavaScript constructor原型原型继承
  • 使用Python+moviepy保存截取视频画面
  • 【DOCKER】显示带UI的软件
  • Atcoder Beginner Contest 366
  • 【hexo博客问题】
  • 用数组模拟栈和队列
  • Django内置后端和自定义后端
  • 嵌入式人工智能(OpenCV-基于树莓派的人脸识别与入侵检测)
  • 如何选择适合的香港云服务器提供商?
  • 安卓Android JAVA校招/实习面试合集:多线程、强软弱虚引用、进程、内存管理、Activity、Fragment......
  • Jeecgboot 字典值自动转化:DictAspect类方法改造,支持IPage、List、Object、Map类自动转化,附有源码
  • DVWA DOM Based Cross Site Scripting (DOM型 XSS)
  • LinkedList集合及迭代器的源码分析
  • Go调度器
  • 当node节点kubectl 命令无法连接到 Kubernetes API 服务器
  • 直接通过类CURL方式,与GRPC方法交互的命令行工具
  • Hive3:数据的加载与导出
  • React事件绑定的方式有哪些?区别?
  • ibis:极具潜力的Python数据分析新框架