題目:現有兩個公升序鍊錶,且鍊錶中均無重複元素。請設計乙個高效的演算法,列印兩個鍊錶的公共值部分。給定兩個鍊錶的頭指標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...