乾貨滿滿!!!面試必備OJ題 鍊錶篇(一)

2021-10-10 08:13:34 字數 2593 閱讀 4593

示例:

輸入:1-

>2-

>3-

>4-

>5-

>null

輸出:5

->4-

>3-

>2-

>1-

>null

class

solution

cur.next = prev;

prev = cur;

cur = curnext;

}return newhead;

}}

oj鏈結

給定乙個頭結點為 head 的非空單鏈表,返回鍊錶的中間結點。

如果有兩個中間結點,則返回第二個中間結點。

示例1:

輸入:[1,

2,3,

4,5]

輸出:3

示例2:

輸入:[1,

2,3,

4,5,

6]輸出:4 (由於該列表有兩個中間結點,值分別為 3 和 4,我們返回第二個結點。)

class

solution

return slow;

}}

oj鏈結

示例 1:

輸入: 1

2輸出: false

示例 2:

輸入: 122

1輸出: true

class

solution

if(head.next == null)

listnode fast = head;

listnode slow = head;

while

(fast != null && fast.next != null)

//slow就是中間位置,開始進行第二步

//2、進行反轉

listnode cur = slow.next;

while

(cur != null)

//3、開始判斷

while

(head != slow)

//偶數情況下

if(head.next == slow)

head = head.next;

slow = slow.next;

}return

true;}

}

oj鏈結

給定乙個鍊錶,判斷鍊錶中是否有環。

如果鍊錶中存在環,則返回 true 。 否則,返回 false。

}oj鏈結

給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。 如果鍊錶無環,則返回 null。

public

class

solution}if

(fast == null || fast.next == null)

slow = head;

while

(slow != fast)

return slow;

}}

oj鏈結

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。

public listnode deleteduplicates

(listnode head)

cur = cur.next;

}else

} tmp.next = null;

return newhead.next;

}

給定乙個鍊錶和乙個特定值 x,對鍊錶進行分隔,使得所有小於 x 的節點都在大於或等於 x 的節點之前。

示例:

輸入: head =1-

>4-

>3-

>2-

>5-

>

2, x =

3輸出:1-

>2-

>2-

>4-

>3-

>

5

//暴力解法

class

solution

else

}else

else

} cur = cur.next;}if

(bs == null)

//bs!=null;

be.next = as;

if(as != null)

return bs;

}}

oj鏈

面試必備OJ題 二叉樹高階篇

給定兩個二叉樹,想象當你將它們中的乙個覆蓋到另乙個上時,兩個二叉樹的一些節點便會重疊。你需要將他們合併為乙個新的二叉樹。合併的規則是如果兩個節點重疊,那麼將他們的值相加作為節點合併後的新值,否則不為 null 的節點將直接作為新二叉樹的節點。class solution if t1 null if ...

鍊錶相關演算法題 面試必備(一)

向單鏈表尾部插入元素 刪除單鏈表中第乙個值為x的節點 刪除單鏈表中的目標節點 從尾到頭列印單鏈表 單鏈表中倒數第k個節點 反轉單鏈表 k個一組反轉翻單鏈表 鍊錶是否有環以及環的入口 struct listnode listnode inserttail listnode phead,int x li...

資料結構 OJ面試題 基礎三道鍊錶題 1

203.移除鍊錶元素 刪除鍊錶中等於給定值 val 的所有節點。struct listnode removeelements struct listnode head,int val else return head 206.反轉鍊錶struct listnode reverselist struc...