程式設計師面試經典 20200221

2021-10-03 02:07:41 字數 1568 閱讀 2200

題目:實現一種演算法,找出單向鍊錶中倒數第 k 個節點。返回該節點的值。

注意:本題相對原題稍作改動

示例:

輸入: 1->2->3->4->5 和 k = 2

輸出: 4

思路:雙指標,fast指標與slow指標儲存k個間隔。

code

public

intkthtolast

(listnode head,

int k)

while

(slow != null && fast != null)

return slow.val;

}

題目:刪除中間節點。實現一種演算法,刪除單向鍊錶中間的某個節點(除了第乙個和最後乙個節點,不一定是中間節點),假定你只能訪問該節點。

示例:

輸入:單向鍊錶a-

>b-

>c-

>d-

>e-

>f中的節點c

結果:不返回任何資料,但該鍊錶變為a-

>b-

>d-

>e-

>f

思路:很簡單,**一目了然。

code

public

void

deletenode

(listnode node)

題目:分割鍊錶。編寫程式以 x 為基準分割鍊錶,使得所有小於 x 的節點排在大於或等於 x 的 節點之前。如果鍊錶中包含 x,x 只需出現在小於 x 的元素之前(如下所示)。分割元素 x 只需處於「右半部分」即可,其不需要被置於左右兩部分之間。

示例:

輸入: head =3-

>5-

>8-

>5-

>10-

>2-

>

1, x =

5輸出:3-

>1-

>2-

>10-

>5-

>5-

>

8

思路:使得所有小於x的節點排在大於或等於x的節點之前,即只要比x小的在x之前就行了,不需要關注比x大的位置。

​ 雙指標,乙個用來從第一位開始存放比x小的數,另乙個指標遍歷,如果遇到就交換兩個指標的值。

code

public listnode partition

(listnode head,

int x)

a1 = a1.next;

}return head;

}private

void

swap

(listnode a1, listnode a2)

程式設計師面試經典 陣列

有一副由nxn矩陣表示的影象,這裡每個畫素用乙個int表示,請編寫乙個演算法,在不占用額外記憶體空間的情況下 即不使用快取矩陣 將影象順時針旋轉90度。給定乙個nxn的矩陣,和矩陣的階數n,請返回旋轉後的nxn矩陣,保證n小於等於500,影象元素小於等於256。測試樣例 1,2,3 4,5,6 7,...

《程式設計師面試經典》 鍊錶

輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。思路 快慢指標,前乙個指標比後乙個指標慢k步。struct listnode class solution else while phead next null return ptail 實現乙個演算法,刪除單向鍊錶中間的某個結點,假定你只能訪問該結點。給定...

經典LINUX程式設計師面試題

面試題是一套筆試題,比較經典 閉卷,100分鐘完卷,最好寫出解題步驟 若你能答對百分之七八十,說明你乙隻腳踏進了linux程式設計的大門,若你能答對百分之九十以上,你收我做 可憐可憐我吧 你若不及格,那就跟我一樣 菜鳥!一 基礎題 1.請列舉出你用過的linux發行版及其中的gcc版本 glib版本...