张家口网站建设vewan,优秀包装设计作品及解析,新闻发布系统,福田附近网站建设目录
1. 思路1#xff1a;倒数第K个节点#xff0c;就是整数第N-K1的节点
2. 思路2#xff1a;快慢指针 1. 思路1#xff1a;倒数第K个节点#xff0c;就是整数第N-K1的节点 链表中#xff0c;一共有N个节点#xff0c;如果我们想要得出倒数第K个节点#xff0c;我们…目录
1. 思路1倒数第K个节点就是整数第N-K1的节点
2. 思路2快慢指针 1. 思路1倒数第K个节点就是整数第N-K1的节点 链表中一共有N个节点如果我们想要得出倒数第K个节点我们就可以简单理解为正数第N-K1的节点。但因为需要多重判断这里更推荐第二种方法即快慢指针。
struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) {int n 0;struct ListNode* cur pListHead;//判断是否为链表是否为空if(pListHead NULL){return NULL;}while(cur){n;cur cur-next;}//检查k是否超出界限if(k n){return NULL;}n n-k;while(n--){pListHead pListHead-next;}return pListHead;
}
2. 思路2快慢指针 这里我们定义快指针fast,慢指针slow让快指针先走k步然后快慢指针同时走当快指针等于NULL时slow指针指向的节点就是倒数第K个节点 struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) {// write code herestruct ListNode* fast pListHead;struct ListNode* slow pListHead;while(k--){if(fast NULL){return NULL;}fast fast-next;}while(fast){fast fast-next;slow slow-next;}return slow;
}