查找连表的倒数第k个节点

居安思危

在这里插入图片描述

何解?

1、假如有1、2、3三个节点,找倒数第二个,实际是整数第几个? 3-2+1 = 2 : 及 length - k + 1 ,所以先遍历找节点长度,在遍历找所需节点

	// 今天这不是力扣的
	var findNode = function(head , k){
		let length = 0 , prev = head
		while(prev){
			length++
			prev = prev.next
		}
		prev = head
		let num = length - k + 1
		// 需要找的节点是第num个,但实际需要移动的次数是 num - 1 次
		while(num > 1){
			num--
			prev = prev.next
		}
		return prev
	}

2、快慢指针法,让快指针先移动k-1步,在快慢同时遍历,当快指针走到尾时,慢指针也就指在了所需节点

	var findNode = function(head , k){
		let fast = head , slow = head ,num = k-1
		while(num > 0){
			num--
			fast = fast.next
		}
		while(fast.next !== null){
			fast = fast.next
			slow = slow.next
		}	
		return slow	
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值