日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

剑指offer之链表续

發(fā)布時(shí)間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 剑指offer之链表续 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

面試題17:合并兩個(gè)有序鏈表

這道題用遞歸,很容易實(shí)現(xiàn),但是一定要注意代碼魯棒性

下面是源碼:

public static ListNode MergeList(ListNode head1,ListNode head2){ListNode newHead = null;if(head1==null){return head2;}else{if(head2==null){return head1;}}if(head1.val<head2.val){newHead = head1;newHead.next = MergeList(head1.next,head2);}if(head1.val>head2.val){newHead = head2;newHead.next = MergeList(head1,head2.next);}return newHead;}

  通過(guò)這道題想到如果是有序數(shù)組的話,該如何合并,這里不能用遞歸,主要是因?yàn)閿?shù)組長(zhǎng)度的問題

可以借鑒劍指offer第4題,替換空格。源碼就不賦了,之前的博客中有提到過(guò)。

面試題15:鏈表中的倒數(shù)第K 個(gè)結(jié)點(diǎn)

當(dāng)一個(gè)指針無(wú)法解決問題的時(shí)候,考慮嘗試兩個(gè)或三個(gè)指針,同樣求鏈表的中間結(jié)點(diǎn)以及判斷單向鏈表是否有環(huán)都可以考慮使用兩個(gè)指針。

這道題可以考慮兩個(gè)指針,一個(gè)在前,另一個(gè)在他K-1的位置,但是要注意如果k 為0,頭結(jié)點(diǎn)為空,或者鏈表長(zhǎng)度小于K,這些情況

下面附上程序的源代碼:

public static ListNode findKNode(ListNode head, int k){if(head==null||k == 0){return null;}ListNode p1 = head;ListNode p2 = head;for(int i =0;i<k-1;i++){if(p1.next!=null){p1 = p1.next;}else{return null;}}while(p1.next!=null){p1 = p1.next;p2 = p2.next;}return p2;}

 面試題16:翻轉(zhuǎn)鏈表

 這道題用到了三個(gè)指針,只要保證翻轉(zhuǎn)的時(shí)候鏈表不斷就可以.

這道題也是leetcode上top10的題目;

Reverse Linked List

?Reverse a singly linked list.

下面附上代碼:

public ListNode reverseList(ListNode head) {ListNode n = head;ListNode l = null;ListNode r = null;ListNode newHead = null;while(n!=null){r = n.next;if(r==null){newHead = n;}n.next = l;l = n;n = r;}return newHead;}

  

?

轉(zhuǎn)載于:https://www.cnblogs.com/gracyandjohn/p/4549412.html

總結(jié)

以上是生活随笔為你收集整理的剑指offer之链表续的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。