leetcode 鍊錶題目2

2021-10-01 08:16:20 字數 1633 閱讀 4262

將兩個鍊錶合二為一,比如鍊錶a、鍊錶b,合併成兩個鍊錶a->b和b->a。

//解題思路:

// 將listb加到lista的後面、將lista也加到listb的後面,這樣兩個list等長

class solution

return a_ptr;

}};

class solution   

return head_pre->next;

}};

先用快慢指標判斷是否是環,在用指標分別從head指標和快慢指標的交節點開始相交出就是環的入口推算見鍊錶題

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

}if (!bool_loop)

return null;

//有環找到環的入口

listnode *tmp_ptr = head;

while ( tmp_ptr != slow_ptr ) //這裡比較兩個指標是否相等,應為val可能有相同的值

return tmp_ptr;

}};

這個題目和題目1的區別是這個題目低位在最後。所以首先想到的是反轉鍊錶,但是另外乙個思路是用兩個棧,利用棧的先進後出。

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

while(l2)

int sum = 0;

listnode* res = null;

listnode* tmp = null;

while( !s1.empty() || !s2.empty())

if(!s2.empty())

tmp = new listnode(sum%10);

tmp->next = res;

res = tmp;

sum = sum/10;

}

if(sum > 0)

return res;

}};

利用乙個優先佇列進行排序

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution ;

// 優先佇列先將每個鍊錶的head放到優先佇列中排序

priority_queue, decltype(cmp)> pri_queue(cmp);

for(auto node : lists) //將每個煉表頭指標也放到優先佇列

listnode* dummy = new listnode(-1);

listnode* cur = dummy;

while(!pri_queue.empty())

return dummy->next;

}};

Leetcode 鍊錶題目

鍊錶是個線性資料結構 由零個或多個資料元素組成的有限序列 第乙個元素無前驅,最後乙個元素沒有後繼,其餘元素乙個前驅乙個後繼 leetcode 160 找出兩個鍊錶的交點 本題中要找出兩條鍊錶的交點,首先要知道鍊錶的特性,下乙個節點的位置只能由上乙個節點來確定,所以不能直接確定某個值得特定的位置,因此...

leetcode鍊錶題目之2 兩數相加

題目描述 思路 對於鍊錶問題,根據以往的經驗一般我們都會新建乙個dummy node,原因是如果在原煉表上進行操作,dummy連上原鍊錶的頭結點,這樣的話就算頭結點變動了,我們可以通過dummy next獲得新鍊錶的頭結點。如果需要返回乙個新鍊錶,根據該啞結點,我們只需在求出新鍊錶的值後逐個新建結點...

leetcode鍊錶題目之206 反轉鍊錶

題目 方法一 在遍歷列表時,將當前節點的 next 指標改為指向前乙個元素。由於節點沒有引用其上乙個節點,因此必須事先儲存其前乙個元素。在更改引用之前,還需要另乙個指標來儲存下乙個節點。不要忘記在最後返回新的頭引用!definition for singly linked list.struct l...