列印兩個有序鍊錶的公共部分 Python 版

2021-08-11 05:50:13 字數 1061 閱讀 1470

題目

給定兩個有序鍊錶的頭指標head1 和head2,列印兩個鍊錶的公共部分

**

這個函式中我使用了我自己寫的單鏈錶類,這個**在另外一篇blog裡。

python版本的單鏈錶類

該問題的函式如下:

class

linkedlistalgorithms

(object):

def__init__

(self):

pass

defprint_common_part

(self, head1, head2):

# 給定兩個鍊錶的頭指標,列印出公共的部分

if head1.next == 0

or head2.next == 0:

print

'no common part between two linked lists.'

common =

while head1 is

notnone

and head2 is

notnone:

if head1.value > head2.value:

head2 = head2.next

elif head1.value < head2.value:

head1 = head1.next

else:

head1, head2 = head1.next, head2.next

if head1 == 0

or head2 == 0:

break

print

'common part: ', common

分析

由於是有序鍊錶,所以就不需要一遍遍地去搜尋鍊錶中的每個值的大小,如果遇到無序鍊錶,第一件事還是要先排序,畢竟排序的時間複雜度可以做到o(nlogn),而一遍遍的搜尋的話,複雜度一定是o(n^2)。

然後使用兩個指標,不斷地向後推進鍊錶中的位置,直到其中一方搜尋完整個鍊錶。

列印兩個有序鍊錶的公共部分

題目 給定兩個有序鍊錶的頭指標head1和head2,列印兩個鍊錶的公共部分。1 head1的值小於head2,則head1往下移動 2 head1的值小於head2,則head2往下移動 3 相等則列印任何乙個鍊錶節點的值,head1和head2都往下移動。4 當head1或head2移動到nul...

列印兩個有序鍊錶的公共部分

引言 給定兩個鍊錶,列印兩個鍊錶中的公共部分。思路從兩個鍊錶的第乙個節點的value值開始比較,誰小移動誰。如果相等就輸出,並同時移動到下乙個節點。public class twolinkedlistsame public static void twolinkedlistsames node he...

列印兩個有序鍊錶的公共部分

說明 本文是左程雲老師所著的 程式設計師面試 指南 第二章中 列印兩個有序鍊錶的公共部分 這一題目的c 復現。感謝左程雲老師的支援。題目 給定兩個有序鍊錶的頭指標 head1 和 head2,列印兩個鍊錶的公共部分。思路 依次比較 編譯環境 centos6.7 x86 64 gcc 4.4.7 實現...