Go语言每日一题——链表篇(七)

传送门

牛客面试笔试必刷101题 ----------------删除链表的倒数第n个节点

题目以及解析

题目

在这里插入图片描述

解题代码及解析

解析

这一道题与昨天的题目在解题思路上有一定的相似之处,都是基于双指针定义快慢指针,这里我们让快指针先走n步,又因为n一定为有效值,所以快指针为空时,慢指针刚好离快指针n个单位距离,即链表的倒数第n个节点

代码

package main

import _ "fmt"
import . "nc_tools"

/*
 * type ListNode struct{
 *   Val int
 *   Next *ListNode
 * }
 */

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param head ListNode类
 * @param n int整型
 * @return ListNode类
 */
func removeNthFromEnd(head *ListNode, n int) *ListNode {
   
	fast := head
	slow := head
	for i := 0; i < n+1; i++ {
   
		if fast == nil {
   
			return head.Next
		}
		fast = fast.Next
	}
	for fast != nil {
   
		slow = slow.Next
		fast = fast.Next
	}
	slow.Next = slow.Next.Next
	return head
}

总结:

这题依旧是一道链表题,但是它很好的体现双指针思想的引用,大家可以简单的思考一下,用这道题来作为双指针算法的练手题

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-02-09 09:58:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-09 09:58:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-09 09:58:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-09 09:58:01       20 阅读

热门阅读

  1. AcWing 829. 模拟队列

    2024-02-09 09:58:01       32 阅读
  2. 深入挖掘AI应用场景的存储架构

    2024-02-09 09:58:01       35 阅读
  3. Python中数字和字符串的最佳实践(下)

    2024-02-09 09:58:01       28 阅读
  4. CDN缓存404、403状态码

    2024-02-09 09:58:01       28 阅读
  5. 数据结构之基数排序

    2024-02-09 09:58:01       35 阅读
  6. servlet和cgi区别

    2024-02-09 09:58:01       35 阅读
  7. Nginx 缓存集成、清除、设置不缓存资源

    2024-02-09 09:58:01       32 阅读