leetcode - 2095. Delete the Middle Node of a Linked List

Description

You are given the head of a linked list. Delete the middle node, and return the head of the modified linked list.

The middle node of a linked list of size n is the ⌊n / 2⌋th node from the start using 0-based indexing, where ⌊x⌋ denotes the largest integer less than or equal to x.

For n = 1, 2, 3, 4, and 5, the middle nodes are 0, 1, 1, 2, and 2, respectively.

Example 1:
在这里插入图片描述

Input: head = [1,3,4,7,1,2,6]
Output: [1,3,4,1,2,6]
Explanation:
The above figure represents the given linked list. The indices of the nodes are written below.
Since n = 7, node 3 with value 7 is the middle node, which is marked in red.
We return the new list after removing this node. 

Example 2:
在这里插入图片描述

Input: head = [1,2,3,4]
Output: [1,2,4]
Explanation:
The above figure represents the given linked list.
For n = 4, node 2 with value 3 is the middle node, which is marked in red.

Example 3:
在这里插入图片描述

Input: head = [2,1]
Output: [2]
Explanation:
The above figure represents the given linked list.
For n = 2, node 1 with value 1 is the middle node, which is marked in red.
Node 0 with value 2 is the only node remaining after removing node 1.

Constraints:

The number of nodes in the list is in the range [1, 10^5].
1 <= Node.val <= 10^5

Solution

Use fast, slow pointer. Every time, fast pointer moves 2 steps and slow pointer moves 1 step. When fast pointer reaches the end, the slow pointer points to the middle.

Time complexity: o ( n ) o(n) o(n)
Space complexity: o ( 1 ) o(1) o(1)

Code

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def deleteMiddle(self, head: Optional[ListNode]) -> Optional[ListNode]:
        ret_head = ListNode(-1)
        ret_head.next = head
        slow, fast = ret_head, head
        while fast and fast.next:
            fast = fast.next.next
            slow = slow.next
        # delete slow.next
        slow.next = slow.next.next
        return ret_head.next

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/424946.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ABAP - SALV教程05 添加页眉和页脚

先看看效果叭CL_SALV_TABLE提供了SET_TOP_OF_LIST方法设置页眉显示和SET_TOP_OF_LIST_PRINT方法设置页眉打印来实现添加页眉的目的。CL_SALV_TABLE提供了SET_END_OF_LIST方法设置页脚显示和SET_END_OF_LIST_PRINT方法设置页脚打印来实现添加页脚的目的。这个四个方法的传入参数…

计算机二级Python刷题笔记------基本操作题11、14、17、21、30(考察列表)

文章目录 第十一题&#xff08;列表遍历&#xff09;第十四题&#xff08;len&#xff09;第十七题&#xff08;len、insert&#xff09;第二十一题&#xff08;append&#xff09;第三十题&#xff08;二维列表&#xff09; 第十一题&#xff08;列表遍历&#xff09; 题目&a…

你敢信,copilot Pro这个带着Pro的产品是阉割版?

你敢信&#xff0c;copilot Pro这个带着Pro的产品是阉割版&#xff1f; 没错。 很多人以为copilot Pro带着Pro就是专业版&#xff0c;高大上。 但不知道的是&#xff0c;微软对于office copilot同时发布了两款产品&#xff1a; 针对个人家庭版office用户的copilot Pro&…

【C语言】linux内核dev_hard_start_xmit

一、中文注释 struct sk_buff *dev_hard_start_xmit(struct sk_buff *first, struct net_device *dev,struct netdev_queue *txq, int *ret) {struct sk_buff *skb first; // 初始化skb指针&#xff0c;指向第一个待发送的数据包int rc NETDEV_TX_OK; // 初始返回码为NETD…

C++ set和map使用

set和map 1.关联式容器2. 键值对3. set3.1 介绍3.2 简单使用 4.multiset5.map5.1 介绍5.2 简单使用 6. multimap 1.关联式容器 关联式容器是一种STL容器&#xff0c;用于存储键-值对。它们提供了一种通过键来快速查找值的机制。STL总共实现了两种不同结构的管理式容器&#xff…

编写dockerfile挂载卷、数据容器卷

编写dockerfile挂载卷 编写dockerfile文件 [rootwq docker-test-volume]# vim dockerfile1 [rootwq docker-test-volume]# cat dockerfile1 FROM centosVOLUME ["volume01","volume02"]CMD echo "------end------" CMD /bin/bash [rootwq dock…

ecmascript 6+(2)

引用数据类型&#xff1a; Object, Array, RegExp, Date等 包装类型&#xff1a;&#xff08;底层数据类型会将简单数据类型包装为对象&#xff09; String, Number, Boolean等&#xff08;都是基本数据类型的构造函数&#xff09; Object Object.keys(对象) 返回数组&…

4款塞纸条盲盒交友源码,可以对接公众号

一元盲盒交友源码/脱单盲盒源码/交友盲盒/恋爱盲盒公众号版 可以对接自己支付&#xff0c;全部自定义 没有任何bug版本&#xff0c;已经测试完全可以 免费源码&#xff0c;不包搭建指导 源码下载地址专业知识分享社区-专业知识笔记免费分享 (chaobiji.cn)

flink重温笔记(九):Flink 高级 API 开发——flink 四大基石之WaterMark(Time为核心)

Flink学习笔记 前言&#xff1a;今天是学习 flink 的第 9 天啦&#xff01;学习了 flink 四大基石之 Time的应用—> Watermark&#xff08;水印&#xff0c;也称水位线&#xff09;&#xff0c;主要是解决数据由于网络延迟问题&#xff0c;出现数据乱序或者迟到数据现象&…

Vue项目的快速搭建

Vue项目的快速搭建 一、下载并安装node.js二、安装Vue脚手架三、创建vue项目四、项目启动五、VS Code下载安装 一、下载并安装node.js 首先确保已经安装了Node.js。如果没有安装&#xff0c;可以去官网&#xff08;https://nodejs.org/&#xff09;下载并安装最新版本的Node.j…

CIP通讯介绍(欧姆龙PLC)

什么是CIP CIP通信是Common Industrial Protocl(CIP)的简称&#xff0c;它是一个点到点的面向对象协议&#xff0c;能够实现工业器件&#xff08;传感器&#xff0c;执行器&#xff09;之间的连接&#xff0c;和高等级的控制器之间的连接。目前&#xff0c;有3种网络DeviceNet…

c语言经典测试题9

1.题1 #include <stdio.h> int main() { int i 1; sizeof(i); printf("%d\n", i); return 0; } 上述代码运行结果是什么呢&#xff1f; 我们来分析一下&#xff1a;其实这题的难点就是sizeof操作后i的结果是否会改变&#xff0c;首先我们创建了一个整型i&a…

消息中间件之RocketMQ源码分析(二十七)

Broker提交或回滚事务消息 当生产者本地事务处理完成并且Broker回查事务消息后&#xff0c;不管执行Commit还是Rollback,都会根据用户本地事务的执行结果发送一个End_transaction的RPC请求给Broker&#xff0c;Broker端处理该请求的类是EndTransactionProcessor 第一步&…

记录github中那个是正常的文件下载的方式,idm正确的使用方式

百度网盘下载速度 文件说明 后缀 tar.gz 是linux 文件 zip 是 压缩文件不知道是哪个压缩文件 github 中的文件难下载 刚才我下载的时间是10.05出现了文件中断的清空 无法下载 第一个文件下载好的样子 还是用这个良心 20230924-1DM脚本激活 下载完成没有说怎么使用 我之前使用…

用python和pygame库实现刮刮乐游戏

用python和pygame库实现刮刮乐游戏 首先&#xff0c;确保你已经安装了pygame库。如果没有安装&#xff0c;可以通过以下命令安装&#xff1a; pip install pygame 示例有两个。 一、简单刮刮乐游戏 准备两张图片&#xff0c;一张作为背景bottom_image.png&#xff0c;一张作…

【详识JAVA语言】数组练习

数组转字符串 代码示例 import java.util.Arraysint[] arr {1,2,3,4,5,6};String newArr Arrays.toString(arr);System.out.println(newArr);// 执行结果 [1, 2, 3, 4, 5, 6] 使用这个方法后续打印数组就更方便一些. Java 中提供了 java.util.Arrays 包, 其中包含了一些操…

Nacos 2.3.0 安装配置详细流程(2.x.x版本基本都适用)

目录 1. 下载Nacos2. Nacos启动前的准备3. 可选&#xff1a;开启登录验证4. 启动服务器 1. 下载Nacos Nacos 2.3.0 Windows安装包下载地址&#xff1a;点击下载 其他版本下载&#xff1a;https://github.com/alibaba/nacos/releases 2. Nacos启动前的准备 创建数据库&#…

大小端问题

0. 介绍 大小端计算机存储数据而安排字节的两种顺序。 针对的是字节。 大端与我们平时书写的顺序一致。 1. 大小端的判定 不需要手动判断。 有一个头文件endian.h; 可能会有宏 __BYTE_ORDER __BIG_ENDIAN __LITTLE_ENDIAN通过库来进行判断。 手动判断 根据字节存取的顺序…

Shell输入输出重定向

Linux Shell 重定向分为两种&#xff0c;一种输入重定向&#xff0c;一种是输出重定向。其实输入输出方向就是数据的流动方向&#xff1a; 输入方向&#xff1a;就是数据从哪里流向程序。数据默认从键盘流向程序&#xff0c;如果改变了它的方向&#xff0c;数据就从其它地方流…

LLM 系列——BERT——论文解读

一、概述 1、是什么 是单模态“小”语言模型&#xff0c;是一个“Bidirectional Encoder Representations fromTransformers”的缩写&#xff0c;是一个语言预训练模型&#xff0c;通过随机掩盖一些词&#xff0c;然后预测这些被遮盖的词来训练双向语言模型&#xff08;编码器…