1,問題:
輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。
2,想法都在**裡標註了:
/*
struct listnode
};*/
class solution
int count = 0;
listnode* temp = plisthead;
while (plisthead)
int m = count - k;
//倒數第k個,是順數第count - k +1個
if (m < 0)
else
return temp;}*/
//思路2:倒數第k個位置,是順數第n-k+1個位置
//設兩個指標都指向頭結點,那麼第乙個指標走k-1步到達順數第k位置
//然後第二個指標和第乙個指標一起走n-k步,即訪問完鍊錶,就到達了
//n-k+1位置,即倒數第k位置
if(plisthead == null || k <= 0)
listnode* temp1 = plisthead;
listnode* temp2 = plisthead;
//下邊for迴圈的意思:
//若i滿足for迴圈條件,表示還要往下走
//但是temp1->next如果等於空,就說明下邊沒有節點了,
//說明k比鍊錶長度大,返回空
//否則就往下走到順數k位置
for (int i =1; i < k; i++)
else
temp1 = temp1->next;
}//上面若沒有return,即走到了順數k位置
//那麼我再用下邊這個while迴圈,走到
//倒數k位置,即順數n-k+1位置即可
while (temp1->next)
return temp2;
}};
輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點
思路 兩個指標,先讓第乙個指標和第二個指標都指向頭結點,然後再讓第乙個指正走 k 1 步,到達第k個節點。然後兩個指標同時往後移動,當第乙個結點到達末尾的時候,第二個結點所在位置就是倒數第k個節點了。public class solution public listnode findkthtotai...
輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。
題目描述 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。解題思路 1.先遍歷鍊錶,獲得鍊錶中的總結點數。2.倒數第k個元素,即為順數第 size k 1 個元素。3.遍歷鍊錶,獲得第 size k 1的元素。public class listnode public class solution 統計鍊錶...
輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點
輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點 一,先排除掉非法情況,鍊錶為空和k值非法 二,計算鍊錶長度size 三,得到倒數第k個結點需要向後走的步數 steps size k 四,向後走steps步,得到倒數第k個結點 public class listnode public class solut...