將兩個鍊錶合二為一,比如鍊錶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...