C 求兩個鍊錶的交點

2021-10-08 20:35:37 字數 1139 閱讀 9857

int

main()

;int b[lenb]=;

for(

int i =

0; i < lena; i++

)for

(int i =

0; i < lenb; i++

)return0;

}

結果:

b[3]

= 3 in array a.

b[4]

= 1 in array a.

b[7]

= 1 in array a.

// 演算法寫在乙個類裡

class

solution

while

(headb)

return

null;}

};

先對齊兩條鍊錶,使其同時出發能同時到達交點,(即讓長的那條鍊錶的出發點後移到與短的煉表頭出發點對齊),空間複雜度o(1)

// 遍歷鍊錶獲得鍊錶長度

intget_list_len

(listnode* head)

return len;

}// 使長鍊錶定位到對齊位置

listnode*

forward_long_list

(int longl,

int shortl, listnode* head)

return head;

}// 演算法寫在乙個類裡

class

solution

else

while

(heada&&headb)

heada = heada-

>next;

headb = headb-

>next;

}return

null;}

};// 以下為測試

intmain()

結果:

交點為:6
ps: 小象學院教程 的筆記

leetcode題號: 160

求兩個單向鍊錶的交點

題目 給出兩個單向鍊錶,判斷其是否有交點 如果存在交點,請找出交點 解題思路 如果存在交點,則兩個鍊錶的節點結構必定是同構的 如果存在交點,則兩個鍊錶必定程式y字形,而不可能是x形 如果存在交點,兩個鍊錶在交點及其之後的部分是一致的 這點很關鍵,一致的意思包括兩部分 長度和內容。基於以上三點,可以給...

求兩個交叉鍊錶的交點

如果兩個鍊錶相交,又都不存在環,那麼從第乙個相交點開始之後的結點都相同 構成了乙個y型 因此,只要分別遍歷這兩個鍊錶,找到末尾結點,如果末尾結點相同,即可確認相交。如果要求這種情況的交點,由於相交部分全部都相同,所以彼此的長度差異存在於相交之前的部分。因此,只需要先得到兩個鍊錶的差d,然後將較長的鍊...

C Python 求兩個鍊錶的交點

已知鍊錶a的頭節點指標heada,鍊錶b的頭節點指標headb。兩個鍊錶相交,求兩鍊錶交點對應的節點 如果兩個鍊錶沒有交點,則返回null 在求交點的過程中,不可以破壞鍊錶的結構或者修改鍊錶的資料域 可以確保傳入的鍊錶a與鍊錶b沒有任何環 實現演算法盡可能時間複雜度o n 空間複雜度o 1 incl...