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

wap网站开发视频教程/搜狗整站优化

wap网站开发视频教程,搜狗整站优化,ui界面设计素材,网站开发毕业生报告🦄个人主页:修修修也 🎏所属专栏:刷题 ⚙️操作环境:牛客网 目录 一.NC1 大数加法 题目详情: 题目思路: 解题代码: 二.NC40 链表相加(二) 题目详情: 题目思路: 解题代码: 三.NC10 大数乘法 题目详情: 题目思路: 解题代码: 结语 一.NC1 大数加法 牛客网题…

🦄个人主页:修修修也

🎏所属专栏:刷题

⚙️操作环境:牛客网


目录

一.NC1 大数加法

题目详情:

题目思路:

解题代码:

二.NC40 链表相加(二)

题目详情:

题目思路:

解题代码:

三.NC10 大数乘法

题目详情:

题目思路:

解题代码:

结语


一.NC1 大数加法

牛客网题目链接(点击即可跳转):NC1 大数加法

题目详情:

本题详情如下图:


题目思路:

本题解题思路如下:

        模拟小学列竖式加法即可,但是要注意进位和两个字符串的处理,可以写成一个循环逻辑走完的就不要分两步分多种情况讨论了.对情况的处理要尽量泛化,不要只思考到局部的情况就单拎出来写一个模块,实际上是存在共性的,多思考共性,会让代码和思路都简单不少.

        步骤越繁琐越容易出错,并且越不容易找到问题在哪里.


解题代码:

本题解题代码如下:

class Solution 
{
public: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)  //任意一个不为0就一直加{if(i>=0) tmp +=s[i]-'0';if(j>=0) tmp +=t[j]-'0';ret+=(tmp%10+'0');tmp/=10;i--;j--;}reverse(ret.begin(),ret.end());return ret;}
};

二.NC40 链表相加(二)

牛客网题目链接(点击即可跳转):NC40 链表相加(二)

题目详情:

本题详情如下图:


题目思路:

本题解题思路如下:

        本题解题我们要思考如何取链表尾部的数据逐一相加. 因为大数加法的底层逻辑都是类似于上面一题那样模拟小学列竖式算加法, 但是对于链表而言每次取尾部的结点非常麻烦,那自然我们就想到需要先将链表逆序一下,然后再参照大数相加的方法相加. 所以本题解题步骤分为两步, 首先将两个相加链表逆置, 然后逐一取下结点相加,相加的结果结点再头插到返回的链表中(这样保证返回的链表是正序,或者尾插进去再逆置也是可以的).


解题代码:

本题解题代码如下:

#include <algorithm>
class Solution 
{
public://链表逆序ListNode* reverse(ListNode* head){ListNode* newHead = new ListNode(0);ListNode* cur = head;while(cur!=nullptr){//头插cur结点进newHeadListNode* tmp = cur->next;cur->next=newHead->next;newHead->next=cur;cur=tmp;}return newHead->next;}ListNode* addInList(ListNode* head1, ListNode* head2) {ListNode* ret = new ListNode(0);//难点在找尾,那逆序不就好了^_^head1=reverse(head1);head2=reverse(head2);ListNode* cur3 = ret;//相加逻辑int tmp=0;while(head1!=nullptr||head2!=nullptr||tmp){if(head1!=nullptr){tmp+=head1->val;head1=head1->next;}if(head2!=nullptr){tmp+=head2->val;head2=head2->next;}//结果结点头插进新链表ListNode* newnode = new ListNode(tmp%10);newnode->next=cur3->next;cur3->next=newnode;tmp/=10;}return ret->next;}
};

三.NC10 大数乘法

牛客网题目链接(点击即可跳转):NC10 大数乘法

题目详情:

本题详情如下图:


题目思路:

本题解题思路如下:

        我们先用无进位相乘分别算出每一位数字相乘后的结果,将他们同位的值相加,然后最后再把无进位相乘的结果汇总为一个字符串,返回即可(注意返回前消灭前导0),具体看下图:


解题代码:

本题解题代码如下:

class Solution 
{
public:string solve(string s, string t) {string ret;//无进位相乘vector<int> tmp;tmp.resize(s.size()+t.size(),0);for(int i=s.size()-1;i>=0;i--){for(int j=t.size()-1;j>=0;j--){tmp[i+j]+=(s[i]-'0')*(t[j]-'0');}}//把每位乘的汇总相加,乘完是逆序的哈int c=0;int i=tmp.size()-1;while(i>=0||c){if(i>=0) c+=tmp[i];ret+=(c%10+'0');c=c/10;i--;}//消灭前导零while(ret[0]=='0' && ret.size()>1){ret.erase(ret.begin());}  reverse(ret.begin(),ret.end());return ret;}
};

结语

        说点啥好呢...少了点耐心和定力,以及很久没做过题,代码确实生疏了,链表的逆置都没法闭眼写出来,后续碰到问题还是多画图吧.多一点耐心...认真对待算法!

http://www.whsansanxincailiao.cn/news/30727200.html

相关文章:

  • 2015年做啥网站能致富/seo网站推广方法
  • 科技企业网站模板/网络营销的推广
  • .org网站开发/seo权威入门教程
  • 网站开发课程软件/怎么申请一个网站
  • 国土局网站建设方案/开发一个平台需要多少钱
  • 做网站的免费空间/竞价排名的弊端
  • 什么网站专门做批发/在哪里查关键词排名
  • 电子政务门户网站建设/优化网站哪个好
  • 建网站wordpress/中国免费网站服务器主机域名
  • 营销型企业网站的类型/淘客推广
  • 网站建设包含哪些方面/文章代写
  • 做网站seo赚钱吗/搜索引擎营销ppt
  • 做微信营销网站建设/网络推广企划
  • nas做网站要哪些东东/各平台推广费用
  • 汉中专业做网站/广州百度推广外包
  • 开通网站需要什么手续/现在阳性最新情况
  • 怎么看网站是用什么程序做的/网络营销推广专家
  • 建设网站的网络公司/云南网络推广服务
  • 品牌型网站设计/南通企业网站制作
  • 电子商务网站开发分几个模块/抖音搜索seo排名优化
  • 页面有哪几个网站可以做/宁波网络推广seo软件
  • 青岛网站设计/网站排名优化技巧
  • 网站http500内部服务器错误/关键词自助优化
  • 网站建设itcask/河南seo排名
  • 关于网站集约化建设公函/杭州百度快速排名提升
  • 汽修网站建设免费/百度查重工具
  • 中国网络游戏投诉平台/北京seo技术
  • 外贸网站建设升上去/中文域名注册
  • 网站做描本好处/seo线上培训班
  • 一级a做爰片免费网站孕交视频/今日疫情最新消息全国31个省