2021/12/24

学习一个月,老子要进wxg。 1.从尾到头打印链表 直接list.add(0,listnode.val)即可 2.反转链表 三个指针,首先判断越不越界。设为h,p,q. 之后记得补充p.next=h.head=null 3.合并两个排序的链表 首先创建两个指针merge,current。 merge为头指针,判断list1,list2中那个小哪个即为merge 首先list1.val和list2.val进行比较, current的下一个即为上述较小一个。 public ListNode Merge(ListNode list1,ListNode list2) { if(list1==null) return list2; if(list2==null) return list1; ListNode merge=null; ListNode current=null; while (list1!=null&&list2!=null){ if(list1.val<=list2.val){ if(merge==null){ merge=current=list1; }else { current.next=list1; current=current.next; } list1=list1.next; }else { if(merge==null){ merge=current=list2; }else { current.next=list2; current=current.next; } list2=list2.next; } } if(list1==null){ current.next=list2; }else { current.next=list1; } return merge; } 4.两个链表的第一个公共结点 while (p!=null||q!=null){ if(p==q)return p; p=p==null?pHead2:p.next; q=q==null?pHead1:q.next; } 5.链表中环的入口结点 可以用一个set,判断即可。 也可用快慢指针,fast和slow相遇后将fast放到头部,slow不动,然后fast每次只走一步,slow也走一步,再次相遇即为环节点。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务