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

怎么做系统网站北京建设大学

怎么做系统网站,北京建设大学,用asp做网站需要什么软件,三把火科技网站设计每日一题(两数相加) 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.yayakq.cn/news/435575/

相关文章:

  • 如何做产品网站网页设计深圳设计公司深圳设计公司排名
  • 网站 需求文档今天的新闻头条
  • 吉林省工程信息网官网网络优化大师手机版
  • 冀州网站建设公司个人建站软件公司
  • 网站建设 小程序制作网站建设与管理试卷
  • 天天网站南宁网络营销策划推广公司
  • 做网站需要注册商标多少类代理网页 在线
  • 网站备案查询不到说明啥物联网工程主要学什么
  • 免费的空间网站数码设计网站
  • 网页微信版可以加入腾讯会议吗seo难不难
  • 建营销网站数字尾巴 wordpress
  • 网站开发 之cookie品牌包包都有哪些牌子
  • 电子商务网站怎么备案个人网站建设公司地址
  • 宜昌网站开发网站建设消费调查问卷
  • 江苏荣邦建设有限公司网站音乐外链生成网站怎么做
  • 淘客网站开发流程网络营销服务管理
  • 新网站建设一般多少钱网站建设外文文献翻译
  • 长春网站营销手机网站设计字体多大
  • 网站定制论文1500字左右小程序代理合同范本
  • 深圳企业官网网站建设哪家好怎么把网站黑了
  • 龙岗网站建设公司怎么样百度号码认证平台取消标记
  • 响应页手机网站源码2022互联网+创新创业项目
  • 南京建设网站哪家好外贸网站开发推广
  • 安卓网站开发建一个com网站要多少钱
  • 专做水果店加盟的网站铁威马内置wordpress目录
  • 中小型网站建设方案阿里云官方网站
  • 特性设计的网站第一免费营销型网站
  • 淘宝联盟手机网站建设wordpress主题怎么使用
  • 柳州网站建设找哪家wordpress_主题教程
  • 做网站需要多少钱 做seo排名点击首页