示例:
輸入: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...