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

Day 6

目录

  • 1.大数加法 (pass)
    • 1.1解析
    • 1.2代码
  • 2.链表相加(二) (pass)
    • 2.1解析
    • 2.2代码
  • 3.大数乘法 (pass) 无进位相乘相加
    • 3.1解析
    • 3.2代码

1.大数加法 (pass)

大数加法
技能:模拟+字符串

1.1解析

在这里插入图片描述

1.2代码

string solve(string s, string t) {
        string ret;//记录结果
        int i=s.size()-1,j=t.size()-1;
        int tmp=0;//进位位
        while(i>=0||j>=0||tmp)
        {
            if(i>=0) tmp+=s[i--]-'0';
            if(j>=0) tmp+=t[j--]-'0';
            ret+=tmp%10+'0';
            tmp/=10;
        }
        reverse(ret.begin(),ret.end());
        return ret;
    }

2.链表相加(二) (pass)

链表相加(二)
技能:模拟、链表

2.1解析

在这里插入图片描述

2.2代码

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 *	ListNode(int x) : val(x), next(nullptr) {}
 * };
 */
class Solution {
public:
    ListNode* reverse(ListNode* head)//头插
    {
        ListNode* newhead=new ListNode(0);
        ListNode* cur=head;
        while(cur)
        {
            ListNode* next=cur->next;
            cur->next=newhead->next;
            newhead->next=cur;
            cur=next;
        }
        cur=newhead->next;
        delete newhead;
        newhead=nullptr;
        return cur;
    }
    ListNode* addInList(ListNode* head1, ListNode* head2) {
        //1.逆序
        head1=reverse(head1);
        head2=reverse(head2);
        //2.高精度加法
        ListNode* newhead=new ListNode(0);
        ListNode* prev=newhead;
        ListNode* cur1=head1,*cur2=head2;
        int tmp=0;
        while(cur1||cur2||tmp)
        {
            if(cur1)
            {
                tmp+=cur1->val;
                cur1=cur1->next;
            }
            if(cur2)
            {
                tmp+=cur2->val;
                cur2=cur2->next;
            }
            prev=prev->next=new ListNode(tmp%10);
            tmp/=10;
        }
        cur1=newhead->next;
        delete newhead;
        newhead=nullptr;
        cur1=reverse(cur1);
        return cur1;
    }
};

3.大数乘法 (pass) 无进位相乘相加

大数乘法
技能:字符串

3.1解析

在这里插入图片描述

3.2代码

string solve(string s, string t) {
        reverse(s.begin(),s.end());
        reverse(t.begin(),t.end());
        int m=s.size(),n=t.size();
        vector<int> tmp(n+m);
        //无进位相乘,再相加
        for(int i=0;i<m;i++)
        {
            for(int j=0;j<n;j++)
            {
                tmp[i+j]+=(s[i]-'0')*(t[j]-'0');
            }
        }
        //处理进位
        int c=0;//进位位
        string ret;
        for(auto& x:tmp)
        {
            c+=x;
            ret+=c%10+'0';
            c/=10;
        }
        while(c)
        {
            ret+=c%10+'0';
            c/=10;
        }
        //处理前导0
        while(ret.size()>1&& ret.back()=='0') ret.pop_back();
        reverse(ret.begin(),ret.end());
        return ret;
    }
http://www.dtcms.com/a/107201.html

相关文章:

  • 在Android中创建DialogFragment
  • 【光电集成电路技术】基于单片机的音乐梦幻灯与USB转接器设计,电子琴硬件组成及仿真电路实现
  • 【Java 优选算法】二分算法(下)
  • OpenGL进阶系列20 - OpenGL SuperBible - bindlesstex 例子学习
  • Flutter求助贴
  • 失效模式分析(FMEA)、控制计划(CP)、流程图(Flowchart)的无缝衔接与高效管理--全星FMEA软件系统
  • 《自然-方法》2024年度技术:空间蛋白质组学(spatial proteomics)
  • PyArrow 核心技术与应用:高效数据处理与跨生态集成实践
  • C语言常见3种排序
  • 利用vmware快速安装一个可以使用的centos7系统
  • QML弹窗
  • H(e^j\omega) H(\omega)
  • 计算机网络复习 吉林大学
  • PH热榜 | 2025-04-02
  • OSI每一层的SAP和CEP分别是什么
  • 宠物店小程序怎么做?助力实体店实现营销突破
  • vue3+vite,引入Tailwind问题汇总
  • 模型开源|支持东方40语种+中国22方言的新SOTA语音大模型Dolphin开源啦!
  • 制造业数字化转型:流程改造先行还是系统固化数据?基于以MTO和MTS的投资回报分析
  • 防爆风扇选型指南:根据风量风压匹配应用场景​
  • C语言函数实战指南:从零到一掌握函数设计与10+案例解析(附源码)
  • PPTAgent:一款开源免费生成和评估幻灯片的项目
  • QILSTE/旗光
  • RabbitMQ基础
  • 【5090d】配置运行和微调大模型所需基础环境【一】
  • 简述竞赛经历在考研复试中的作用
  • rom定制系列------红米note8pro原生安卓12批量线刷 安卓14批量线刷定制功能项 解锁bl后fast刷写
  • Bash 花括号扩展 {start..end} 进阶使用指南——字典生成
  • Linux进程间通信(1)
  • 天梯赛 L2-025 分而治之