zoukankan      html  css  js  c++  java
  • 160. 相交链表 力扣(简单) 链表题总有点不熟练

    题目描述:

    给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。

    图示两个链表在节点 c1 开始相交:

     

    题目数据 保证 整个链式结构中不存在环。

    注意,函数返回结果后,链表必须 保持其原始结构 。

    题源:https://leetcode-cn.com/problems/intersection-of-two-linked-lists/

    代码:

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
          /*ListNode *res=NULL;
          while(headA!=NULL)
          {
              ListNode *h=headB;
              while(h!=NULL)
            {
                if (h==headA){res=headA; break;}
                h=h->next;
            }
            if (res!=NULL) break;
            headA=headA->next;
          }
          return res;*/  //暴力法一
          int l1=0,l2=0;
          ListNode *t=headA,*res=NULL;
          while (t!=NULL)
          {
              l1++;
              t=t->next;
          }
          t=headB;
          while (t!=NULL)
          {
              l2++;
              t=t->next;
          }
          if(l2>l1) {t=headA; headA=headB; headB=t; swap(l1,l2);}
          for(int i=1;i<=l1-l2;i++)  headA=headA->next;
          while(headA!=NULL)
          {
              if (headA==headB) {res=headB; break;}
              headA=headA->next;
              headB=headB->next;
          }
          return res;
        }  // 统计两个链表的长度,让长链表走完差值,再一起向后推动
    };
    

      

  • 相关阅读:
    单向绑定和双向绑定
    Vue
    事件处理
    网关
    同时加载多个配置集
    Nacos Group方案
    DataID方案
    maven_provided说明
    C#大数据导入-SqlBulkCopy
    https://webyog.com/product/monyog/
  • 原文地址:https://www.cnblogs.com/stepping/p/14967539.html
Copyright © 2011-2022 走看看