鍊錶12 列印兩個鍊錶的公共值

2021-07-31 08:34:20 字數 878 閱讀 1879

題目:現有兩個公升序鍊錶,且鍊錶中均無重複元素。請設計乙個高效的演算法,列印兩個鍊錶的公共值部分。給定兩個鍊錶的頭指標heada和headb,請返回乙個vector,元素為兩個鍊錶的公共部分。請保證返回陣列的公升序。兩個鍊錶的元素個數均小於等於500。保證一定有公共值測試樣例:, 返回:[2.4.6]

思路:給定的是兩個鍊錶,要求返回的是公共值組成的陣列。

每個鍊錶設定乙個指標p1,p2,每次比較p1和p2的值,如果p1.val==p2.val則將p1.val新增到vector中,然後p1=p1.next,p2=p2.next如果p1.valp2.val,那麼p2向下移動,再比較p1.val==p2.val,依次類推,直到p1==null或者p2==null時終止,最終返回vector即可。

注意:這道題目邏輯不難,關鍵是最後的將集合轉化為陣列返回,常識:集合可以使用toarray()轉化為object陣列,但是注意陣列之間不能直接進行強行轉化,

integer common=(vector.toarray());是型別轉化錯誤的,只能遍歷集合vector,將值逐個取出轉化為int,vector.get(i)也是object型別的,但是單個元素是可以進行強轉的,可以轉換成為integer,之後integer可以利用自動拆箱轉換為int型別。

public class common

//返回的是int型別的陣列,但是陣列無法動態地新增元素,只能使用vector來增加元素,最後返回時轉化為int即可

vector vector=new vector();

//建立兩條鍊錶用來進行遍歷

listnode p1=heada;

listnode p2=headb;

while(p1!=null&&p2!=null)else if(p1.val

nowcoder 列印兩個鍊錶的公共值

現有兩個公升序鍊錶,且鍊錶中均無重複元素。請設計乙個高效的演算法,列印兩個鍊錶的公共值部分。給定兩個鍊錶的頭指標heada和headb,請返回乙個vector,元素為兩個鍊錶的公共部分。請保證返回陣列的公升序。兩個鍊錶的元素個數均小於等於500。保證一定有公共值 測試樣例 返回 2.4.6 水題。不...

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

題目 給定兩個有序鍊錶的頭指標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...