鍊錶演算法題

2021-10-08 18:20:07 字數 1528 閱讀 2500

leetcode鏈結

利用棧先入先出

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

p = head;

while(p)

p = head;//需要找到頭節點的位置

return p;}};

雙指標,畫**決

leetcode鏈結

class solution  

else

head = head->next;

}head->next = l1 == null ? l2 : l1;

return r->next;}};

實現思想:定義乙個新節點,比較倆個鍊錶的值,取較小值迭代即可

leetcode 環形鍊錶

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

return true;}};

實現思想:快慢指標,直到找到相交點;

4.兩個鍊錶第乙個公共節點

leetcode兩個鍊錶第乙個公共節點

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

return n1;}};

實現思想:走完自己的路後,再對方的路上再走一遍,公共節點個數相等,則走到非公共節點之和出恰好為公共節點;

5.複雜鍊錶的複製

leetcode鏈結

class solution 

}//第二步,處理複雜指標的random

void connectsiblingnodes(randomlistnode* phead)

pnode = pcloned->next;}}

//第三步,拆分鍊錶

randomlistnode* reconnectnodes(randomlistnode* phead)

//拆分各結點

while(pnode)

return pclonedhead;

}randomlistnode* clone(randomlistnode* phead)

};

解析:大佬解析

鍊錶 常見演算法題

struct listnode 定義鍊錶 就是最簡單的迴圈計數 int calculate listnode phead return nlength 採用 頭插法 順序遍歷原鍊錶,挨個將結點頭插到新鍊錶中。注意要先把這個結點給copy一下,去把副本進行頭插,不然的話原鍊錶關係就斷了 這樣的頭插法可...

鍊錶高頻演算法題

class solutionif l2 listnode dummy new listnode listnode res dummy res next null while l1 l2 else if l1 if l2 return dummy next class solution listnod...

鍊錶問題(演算法題)

1 從已排序的鍊錶中刪除重複的單元。如 輸入 1 1 2,輸出 1 2 如 輸入 1 1 2 2 3,輸出 1 2 3 思路 雙指標 快指標先往後移動,如果快指標的值不等於慢指標的值,就釋放掉中間的指標空間,並且將慢指標next指向快指標,把快指標賦值給快指標。node deleteduplicat...