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

潮州移动网站建设网络营销的工具和方法有哪些

潮州移动网站建设,网络营销的工具和方法有哪些,wordpress自带主题下载,网站设计批发每日一题(两数相加) 2. 两数相加 - 力扣(LeetCode) 思路 思路: 由于链表从头开始向后存储的是低权值位的数据,所以只需要两个指针p1和p2,分别从链表的头节点开始遍历。同时创建一个新的指针new…

每日一题(两数相加)

2. 两数相加 - 力扣(LeetCode)

在这里插入图片描述

思路

思路:

  1. 由于链表从头开始向后存储的是低权值位的数据,所以只需要两个指针p1和p2,分别从链表的头节点开始遍历。同时创建一个新的指针newhead,(用于构造新链表,将创建的新节点进行头插)。并在这个构造的新链表的相应的节点中存储p1和p2对应值的相加结果。

  2. 但是p1和p2所对应的节点的值相加可能会产生进位,所以创建一个pre变量用于存储相应的进位值。(假设p1和p2所指向的节点的值是n1和n2,那么产生的进位值就是:pre = (n1+n2+pre)/10;同时对应新的创建的节点的值就应该是 (pre+n1+n2)%10;。对应代码如下:

        struct ListNode* p1=NULL,   *p2 = NULL, *newhead = NULL,*tail = NULL;int pre = 0;//pre一开始的值必须是0if(!l1)return l2;if(!l2)return l1;p1 = l1;p2 = l2;while(p1&&p2){
    struct ListNode* newnode = (struct ListNode*)malloc(sizeof(struct ListNode));newnode->val = (p1->val+p2->val+pre)%10;newnode->next = NULL;if(newhead == NULL){//更新pre(进位)pre = (p1->val + p2->val)/10;newhead = tail = newnode;}else{//更新pre(进位)pre = (p1->val + p2->val+pre)/10;tail->next = newnode;tail = tail->next;}p1 = p1->next;p2 = p2->next;}
    
  3. 假如遇到的链表有以下这种长短不一的情况:就需要接着遍历那个较长的链表,将较长的链表中未被遍历的节点的值与pre的值一起参与运算,(因为这俩个链表的相同长度的部分的链表的最后一个节点中存储的值也会存在相加产生进位的情况)。代码实现如下:

    while(p2)//当p2没有走完{
    struct ListNode* newnode = (struct ListNode*)malloc(sizeof(struct ListNode));newnode->val = (p2->val+pre)%10;newnode->next = NULL;//更新prepre = (p2->val+pre)/10;p2 = p2->next;tail->next = newnode;tail = tail->next;} while(p1)//当p1没有走完{
    struct ListNode* newnode = (struct ListNode*)malloc(sizeof(struct ListNode));newnode->val = (p1->val+pre)%10;newnode->next = NULL;//更新prepre = (p1->val+pre)/10;p1 = p1->next;tail->next = newnode;tail = tail->next;}
    

    在这里插入图片描述

  4. 假如链表是如下这几种情况,即便是将两个链表都遍历之后,此时的进位值仍然是1,说明此时的相加计算还没有结束,此时还需要一个节点来存储进位值,所以在将两个链表遍历结束之后,需要对pre的值进行判断,假若pre的值是0,则直接返回newhead即可,pre的值若是1,则还需要创建一个节点。代码如下:

    if(pre){
    struct ListNode* newnode = (struct ListNode*)malloc(sizeof(struct ListNode));newnode->val = pre;newnode->next = NULL;tail->next = newnode;tail = tail->next;}
    

    在这里插入图片描述在这里插入图片描述

代码实现

struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2){struct ListNode* p1=NULL,   *p2 = NULL, *newhead = NULL,*tail = NULL;int pre = 0;if(!l1)return l2;if(!l2)return l1;p1 = l1;p2 = l2;while(p1&&p2){
struct ListNode* newnode = (struct ListNode*)malloc(sizeof(struct ListNode));newnode->val = (p1->val+p2->val+pre)%10;newnode->next = NULL;if(newhead == NULL){//更新pre(进位)pre = (p1->val + p2->val)/10;newhead = tail = newnode;}else{//更新pre(进位)pre = (p1->val + p2->val+pre)/10;tail->next = newnode;tail = tail->next;}p1 = p1->next;p2 = p2->next;}if(pre){
struct ListNode* newnode = (struct ListNode*)malloc(sizeof(struct ListNode));newnode->val = pre;newnode->next = NULL;tail->next = newnode;tail = tail->next;}return newhead;
}

完结

两数相加的链表习题的分析就到这里啦,若有不足,欢迎评论区指正,下期见!

http://www.ds6.com.cn/news/42779.html

相关文章:

  • 鞍山专业做网站公司色盲眼中的世界
  • 济南网站建设技术支持seo合作代理
  • 网站后台管理系统模板策划方案网站
  • 沭阳网站制作今日国际新闻事件
  • 制作图片模板小红书seo排名规则
  • 360做企业网站多少钱网络营销乐云seo
  • 网站开发快递文件seo如何快速出排名
  • 企业网站建设宣贯南京百度提升优化
  • 公司营销网站怎么做网站查询地址
  • 网站建设企业宣传口号打开百度首页
  • 做玻璃瓶的网站合肥网络关键词排名
  • 做代购网站有哪些求几个微信推广平台
  • 东莞网站视频舆情分析网站
  • 大公司做网站的优势网站站长工具
  • 莱芜 网站seo查询是什么
  • win7云主机怎么做网站网站收录免费咨询
  • 镇网站建设管理工作总结网站制作哪家公司好
  • 福田做棋牌网站建设哪家好色盲悖论
  • wap html网站模板seo的工具有哪些
  • 温州建设网站制作营销必备十大软件
  • 智慧团建注册登录入口下载湖南专业关键词优化服务水平
  • 莱西做网站百度关键词优化培训
  • 深圳有什么做招聘网站的公司吗收录网站查询
  • 找外包网站 和自己做最吸引人的营销广告文案
  • 网站建设 淘宝客末班郑州网络营销学校
  • 公司网站建设行业怎么样自建站seo如何做
  • 做动态网站的步骤手机版百度一下
  • web网站开发的流程图推广赚钱app哪个靠谱
  • 华人国际婚恋网站建设方案网站设计的基本原则
  • 怎样使自己做的网站上线看片应该搜什么关键词哪些词