(1)兩個鍊錶的第乙個公共結點
位元組跳動的hr人真的很好 和藹可親 就像傅姓洲洲學長一樣 人超好 給我出的題很簡單,,可惜我 面位元組一點沒準備 怕是一年多沒寫** 我連這個都沒寫出來 我人傻了 我是飛舞
首先是比較常規的寫法.我們維護乙個map,然後遍歷一下這倆鍊錶 ,找見相同的就返回好咯.
/*
struct listnode
};*/
class solution
else
phead1=phead1->next;
}if(phead2)
else
phead2=phead2->next;}}
return null;
}};
然後hr小哥又問 你能不能別靠map ,我說 我行!當我不行的時候我就站到行人道上 這樣我就變成了行人
/*
struct listnode
};*/
class solution
return p1;
}};
(2)鍊錶中環的入口節點....捂臉.我第一次面試的時候,劍指刷的只剩了這個題,然後他就考了......有時候就是這麼點背.......但是主要還是怪自己菜 真的飛舞
首先是比較好想的辦法.寫乙個map,然後往裡存節點.掃一遍就能找到如果有環.環的開始節點.
/*
struct listnode
};*/
class solution
return null;
}};
這時候...我不等你說了 不用map是吧?
那可以迴圈.找有沒有環,找環的長度,然後快慢指標直接求環的開始節點.
/*
struct listnode
};*/
class solution
if(p1==null||p2==null)return null;
int len=1;
p1=p1->next;
while(p1!=p2)
p1=p2=phead;
while(len--)
while(p1&&p2&&p1!=p2)
return p1;
}};
(3)刪除列表中重複的節點
注意審題,,不是保留乙個 ,,是重複的都刪掉.
/*
struct listnode
};*/
class solution
p=p->next;
last->next=p;
}else
}return ans->next;
}};
這裡寫來寫去到處越界,索性不要考慮**需不需要寫判空的條件,直接都寫上就老了.因為有可能這個鍊錶就是乙個222這種 所以先整乙個新的頭結點指向煉表頭,再做刪重的操作.
看見題解裡有遞迴寫法...我總感覺這題寫遞迴更難想........咱也貼乙個遞迴的寫法好了.
/*
struct listnode
};*/
class solution
else
return phead;
}};
劍指offer 鍊錶
單向鍊錶的結構定義 typedef int datatype struct listnode 問題1 往鍊錶的末尾新增乙個結點 給定頭結點,往末尾插入乙個結點 void insertnode listnode head,datatype key listnode p head while p nex...
劍指offer 鍊錶
鍊錶 鍊錶是一種動態資料結構 struct listnode 往鍊錶的末尾新增乙個節點的c 程式如下 void addtotail listnode phead,int value 注意第乙個引數phead是乙個指向指標的指標。當我們往乙個空鍊錶插入乙個結點時,else pnode m pnext ...
劍指offer 鍊錶
在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。思路1 遞迴版 class solution 找到當前節點與下乙個節點不重複的點,從不重複的點開始遞迴 return deleteduplication phead next else 思路2 非遞迴版 ...