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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

玩转算法值面试-第五章 -在链表中穿针引线

發布時間:2024/7/5 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 玩转算法值面试-第五章 -在链表中穿针引线 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

5-123
數組中可以隨機訪問,相反鏈表就不行
leetcode:206

反轉一個鏈表,鏈表如果沒有特別聲明,則節點的值不發生改變


一共需要三個指針:current指向當前需要處理的指針
next指向當前需要處理的元素的下一個元素的指針
pre保存修改之后鏈表指向的指針

首先實現一個節點的反轉

然后將pre、cur、next進行更新(向后移動一個指針
pre更新為cur指針
cur更新為next指針
next由于本身的更新指向下一個元素的位置


然后再重復前面的操作:將cur指向pre指針,然后更新pre、cur、next指針

練習題:leetcode 92

using namespace std;struct ListNode{int val;ListNode *next;ListNode(int x) :val(x), next(NULL){} }; ListNode* creatLinkedList(int arr[], int n){if(n==0)return NULL;ListNode* head=new ListNode(arr[0]);ListNode* curNode=head;for(int i=1; i<n; i++){curNode->next=new ListNode(arr[i]);curNode=curNode->next;}return head; }void printLinkedList(ListNode* head){ListNode* curNode=head;while(curNode != NULL){cout<< curNode->val<<"->";curNode=curNode->next;}cout<<"NULL"<<endl;return;}void deleteLinkedList(ListNode* head){ListNode* curNode=head;while(curNode!=NULL){ListNode* DelNode=curNode;curNode=curNode->next;delete delNode;}return; } class Solution{pulic:ListNode* reverseList(ListNode* head){ListNode* pre=NULL;ListNode* cur=head;while(cur != NULL){ListNode* next=cur->next;cur->next=pre;pre=cur;cur=next;}return pre;//pre指向該鏈表的頭結點 } };int main(){int arr[]={1,2,3,4,5};int n=sizeof(arr)/sizeof(int);//計算出arr數組中的長度 ListNode* head=createLinkedList(arr,n);printLinkedList(head);ListNode* head2=Solution().reverseList(head);printLinkedList(head2);deleteLinkedList(head2);return 0; }

思考題:leetcode 83

leetcode86

leetcode 328題


設立鏈表的虛擬頭結點


舉例:如刪除3的元素



該邏輯對刪除最后一個元素依然使用,對刪除第一個元素不適用。

增加一個虛擬變量


練習題:leetcode 82

leetcode 21

5-4 5 6
leetcode 24





創建幾個指針去預先保留要處理的幾個節點

思考:可不可以不用next

練習題:leetcode 25

leetcode 147 為一個鏈表進行插入排序

leetcode 148 SORT LIST
寫一個排序算法,用O(n *logn)的時間復雜度為一個鏈表進行排序

自頂向上,自頂向下


雙指針技術
leetcode 19題

優化之后:只遍歷一遍鏈表,p和q之間的距離一定,p之前有多少個點不確定,當q移到NULL時停止。



總結

以上是生活随笔為你收集整理的玩转算法值面试-第五章 -在链表中穿针引线的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。