ブラシLeetCode-一方向チェーンテーブル
チェーンテーブル 知識点 チェーンテーブルの長所と短所 解題構想 コード実装 小結
インテリジェントポイント
チェーンテーブル:チェーンテーブルはメモリに不連続であるため、メモリの断片化の問題を効果的に解決することができる.チェーンテーブルを勉強して、まず絵図解法を使うことをマスターして、構想をもっとはっきりさせます;
チェーンテーブル(Linked List):一般的なデータ構造であり、線形テーブルであるが、メモリ連続でデータを格納するのではなく、各ノードにデータ自体を格納するほか、メモリの後継点を格納するポインタを開いた.
チェーンテーブルのメリットとデメリット
チェーンテーブル構造を使用すると、配列が予めデータサイズを知る必要があるという欠点を克服でき、チェーンテーブル構造はコンピュータのメモリ空間を十分に利用し、柔軟なメモリ動態管理を実現することができる.しかし、チェーンテーブルは配列のランダム読み出しの利点を失い、同時にチェーンテーブルはノードのポインタドメインを増加させるため、空間オーバーヘッドが比較的大きい.チェーンテーブル分類:一方向チェーンテーブル、双方向チェーンテーブル、ループチェーンテーブル
問題を解く構想.
同じ下付き文字のサイズを比較し、比較して交換します.比較法:逐一比較、循環構造再帰法:1、終了条件2、戻り値3、本級再帰内容はちょっと難しい
コード実装
Python:
C++
小結
前の人が書いた優秀な推薦コードをよく見て、自分の頭の中に溶け込んでチェーン時計を以前学んだことがあるのはただ勉強しただけで、問題を実践したことがなくて、ただひたすら自己感動して堅持して、今回知識を学んで比較するモードはとても良いです
インテリジェントポイント
チェーンテーブル:チェーンテーブルはメモリに不連続であるため、メモリの断片化の問題を効果的に解決することができる.チェーンテーブルを勉強して、まず絵図解法を使うことをマスターして、構想をもっとはっきりさせます;
チェーンテーブル(Linked List):一般的なデータ構造であり、線形テーブルであるが、メモリ連続でデータを格納するのではなく、各ノードにデータ自体を格納するほか、メモリの後継点を格納するポインタを開いた.
チェーンテーブルのメリットとデメリット
チェーンテーブル構造を使用すると、配列が予めデータサイズを知る必要があるという欠点を克服でき、チェーンテーブル構造はコンピュータのメモリ空間を十分に利用し、柔軟なメモリ動態管理を実現することができる.しかし、チェーンテーブルは配列のランダム読み出しの利点を失い、同時にチェーンテーブルはノードのポインタドメインを増加させるため、空間オーバーヘッドが比較的大きい.チェーンテーブル分類:一方向チェーンテーブル、双方向チェーンテーブル、ループチェーンテーブル
問題を解く構想.
同じ下付き文字のサイズを比較し、比較して交換します.比較法:逐一比較、循環構造再帰法:1、終了条件2、戻り値3、本級再帰内容はちょっと難しい
コード実装
Python:
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
begin = ListNode(0)
res = begin
while l1 and l2:
if l1.val < l2.val:
res.next = l1
l1 = l1.next
else:
res.next = l2
l2 = l2.next
res = res.next
res.next = l1 if l1 else l2
return begin.next
C++
/**
* Definition for singly-linked list.
*
* ,
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
// * : ?
if(l1 == NULL) {
return l2;
}
if(l2 == NULL) {
return l1;
}
ListNode* ihead = new ListNode(0);
ListNode* node = ihead;
while (l1 && l2)
{
if (l1->val > l2->val) swap(l1, l2);
node->next = l1;
node = node->next;
l1 = l1->next;
}
node->next = l1 ? l1 : l2;
return ihead->next;
}
};
小結
前の人が書いた優秀な推薦コードをよく見て、自分の頭の中に溶け込んでチェーン時計を以前学んだことがあるのはただ勉強しただけで、問題を実践したことがなくて、ただひたすら自己感動して堅持して、今回知識を学んで比較するモードはとても良いです