小夕的公众号发文方式
- 由于公众号的改版,如果不经常发文的话,小夕的读者朋友们会收不到小夕的写的文字,因此天天发文就很必要
- 但小夕的一篇漫画算法原创文章,大概需要5-10个小时的耗时,动画+漫画的那些图片制作起来非常费时间!
- 所以为了既天天发文,又能保持高质量的漫画算法原创文章的更新,现绝对用如下的发文方式
之前的原创动漫漫画算法文
戳一下即可进行跳转哦~
动漫算法:字节面试题太坑了,刚回答完,就被面试官diss了!
动漫算法:作业帮面试题:求一个数的二进制中1的个数
动漫算法:百度面试题:用两个栈实习一个队列
动漫算法:如何在二维数组中找到一个数?
动漫算法:美团面试题:根据前序序列和中序序列重建二叉树!
动漫算法:美团面试题,将链表逆序存放到数组中
动漫算法:腾讯面试题,请实现把字符串中的空格替换为“%20”
发文方式
- 小夕会天天更新文章,文章以小夕的每日在算法刷题群公布的题目的题解为主,另外每天小夕会在文章中聊一下在大厂百度(嗯~是的
小夕在百度工作
)的遇到的问题和一些工作经验(注意这些文章以每天刷题为主,所以这些文章第二天就会删除,所以请紧随小夕的步伐刷题,后续看情况再议,目前是决定当天发文,第二天删文) - 小夕的漫画算法原创文章会保持一周1-2篇的更新
- 这样小夕既能天天发文保持天天更新,又能保证高质量的算法原创文章了~
题目
输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6
。这个链表的倒数第3个节点是值为4的节点。
示例:给定一个链表: 1->2->3->4->5
, 和 k = 2
. 返回链表 4->5
.
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof
题解
使用两个指针,一前一后,前面的指针是before 后面的指针是after。before指针先走k步,然后before和after一起走,当before走到null节点时候,那么after节点就是倒数第K个节点。
图解
来源https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/solution/mian-shi-ti-22-lian-biao-zhong-dao-shu-di-kge-j-11/
Java解法
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode getKthFromEnd(ListNode head, int k) {
if(head == null || k 0) return null;
ListNode before = head;
ListNode after = head;
int i = 0;
while (i // before结点先走k步
if(before ==null) return null;
before = before .next;
i++;
}
while(before != null) { // 当before结点走到末尾,那么after结点就是倒数第k个节点!
before = before .next;
after = after.next;
}
return after;
}
}
Python解法
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def getKthFromEnd(self, head, k):
"""
:type head: ListNode
:type k: int
:rtype: ListNode
"""
before = head
after = head
i = 0
while(i before = before.next
i += 1
while before:
before = before.next
after = after.next
return after
C++
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* getKthFromEnd(ListNode* head, int k) {
if(!head || k <= 0) return NULL; //为空返回null
ListNode *before = head;
ListNode *after = head;
while(k--)
{
if(!before) return NULL; //当链表的节点不足k个时候 直接返回null
before = before->next; //将p移动到第k+1个节点
}
while(before)
{
before = before->next;
after = after->next;
}
return after;
}
};
js
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} head
* @param {number} k
* @return {ListNode}
*/
var getKthFromEnd = function(head, k) {
if(head==null || k == 0) return null;
let before = head
let after = head
let i = 0
while(i if(before == null) return null;
before = before.next
i++
}
while(before) {
before = before.next
after = after.next
}
return after
};
php
/**
* Definition for a singly-linked list.
* class ListNode {
* public $val = 0;
* public $next = null;
* function __construct($val) { $this->val = $val; }
* }
*/
class Solution {
function getKthFromEnd($head, $k) {
// 边界情况处理,从而提高代码的健壮性
if ($head == null || $k == 0) {
return null;
}
$before = $head;
$after = $head;
// before 提前节点先走k步
for ($i = 0; $i 1; $i++) {
if ($before ->next != null) {
$before = $before ->next;
} else {
return null; // 链表中没有足够的k个节点
}
}
// 提前和落后指针一起走
while ($before ->next != null) {
$before = $before ->next;
$after = $after ->next;
}
$head = $after;
return $head;
}
}
Go
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func getKthFromEnd(head *ListNode, k int) *ListNode {
if head == nil || k return nil;
}
var before = head
var after = head
for k>0 {
if before == nil {
return nil;
}
before= before.Next
k--
}
for before!=nil{
before = before.Next
after = after.Next
}
return after
}
小夕最后有话说
- 动画、漫画、加6种编程语言(Java、C++、PHP、GO、Python、JS)的讲解很费心血,希望大家能帮忙转发到朋友圈和身边的朋友,这样小夕的文章能让更多的人看见的话,小夕会更有动力更新文章的呀~。
- 点击阅读原文,查看小夕的leetcode题解,记得点个赞。(leetcode题解可以手动控制动画,更有助于你理解哦~)
- 公众号后台回复 打卡 查看公众号福利 坚持转发文章到朋友圈,小夕送上100元的红包给你,谢谢铁杆粉丝的支持。
- 加小夕微信 tiehanhan12342 拉你进算法刷题群。