160. 相交链表

图片说明

  • 双重遍历

    public class Solution {
      // 链表的节点完全相同应该就好理解了,并不是节点中的值相同。地址内存相同
      // 你不知道后面是否有跟前面一样的点
      // 双重遍历
      public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
          while (headA != null) {
              ListNode temp = headB;
              while (temp != null) {
                  if (headA == temp)
                      return headA;
                  temp = temp.next;
              }
              headA = headA.next;
          }
          return null;
      }
    }
  • 哈希表

    public class Solution {
      public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
          HashSet<ListNode> hs = new HashSet<ListNode>();
          while(headA!=null) {
              hs.add(headA);
              headA = headA.next;
          }
          while(headB!=null) {
              if(hs.contains(headB))
                  return headB;
              headB = headB.next;
          }
    
          return null;
      }
    }
  • 双指针

    public class Solution {
      // 链表的节点完全相同应该就好理解了,并不是节点中的值相同。地址内存相同
      // 你不知道后面是否有跟前面一样的点
      // 双重遍历
      public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
          int lenA = 0;
          int lenB = 0;
          ListNode tempA = headA;
          ListNode tempB = headB;
          while(tempA!=null) {
              lenA++;
              tempA = tempA.next;
          }
          while(tempB !=null) {
              lenB++;
              tempB = tempB.next;
          }
          if(lenA>lenB) {
              for(int i = 0 ; i < lenA-lenB ; i++) {
                  headA = headA.next;
              }
          }
          else {
              for(int i = 0 ; i < lenB - lenA; i++) {
                  headB = headB.next;
              }
          }
          while(headB!=null&&headA!=null) {
              if(headB == headA) {
                  return headB;
              }
              else {
                  headB = headB.next;
                  headA = headA.next;
              }
          }
          return null;
      }
    }
全部评论

相关推荐

05-21 15:47
门头沟学院 Java
浪漫主义的虹夏:项目有亮点吗,第一个不是纯玩具项目吗,项目亮点里类似ThreadLocal,Redis储存说难听点是花几十分钟绝大部分人都能学会,第二个轮子项目也没体现出设计和技术,想实习先沉淀,好高骛远的自嗨只会害了自己
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务