【每日刷题】Day15

【每日刷题】Day15

🥕个人主页:开敲🍉

🔥所属专栏:每日刷题🍍

目录

1. 141. 环形链表 - 力扣(LeetCode)

2. 142. 环形链表 II - 力扣(LeetCode)

3. 143. 重排链表 - 力扣(LeetCode)

1. 141. 环形链表 - 力扣(LeetCode)

//思路:快慢指针。pf1一次走两步,pf2一次走一步,如果是环形,pf1最终一定会追上pf2。如果不是环形,pf1最终会走出链表

typedef struct ListNode LN;

bool hasCycle(struct ListNode *head)

{

    if(head==NULL||head->next==NULL)

    {

        return false;

    }

    LN* pf1 = head;

    LN* pf2 = head;

    while(pf1)

    {

        if(pf1->next==NULL)

        {

            return false;

        }

        pf1 = pf1->next->next;

        if(pf1==pf2)

        {

            return true;

        }

        pf2 = pf2->next;

    }

    return false;

}

2. 142. 环形链表 II - 力扣(LeetCode)

//思路:快慢指针。pf1一次走两步,pf2一次走一步。当pf1 == pf2时,ptr从第一个节点与pf2同时前进,当相遇时,则是第一个入环的节点。

typedef struct ListNode LN;

struct ListNode *detectCycle(struct ListNode *head)

{

    LN* pf1 = head;

    LN* pf2 = head;

    if(head==NULL||head->next==NULL)

    {

        return NULL;

    }

    while(pf1)

    {

        if(pf1->next==NULL)

        {

            return NULL;

        }

        pf1 = pf1->next->next;

        pf2 = pf2->next;

        if(pf1==pf2)

        {

            LN* ptr = head;

            while(ptr!=pf2)

            {

                ptr = ptr->next;

                pf2 = pf2->next;

            }

            return ptr;

        }

    }

    return NULL;

}

3. 143. 重排链表 - 力扣(LeetCode)

//思路:本题的难点在于链表无法通过下标来访问其中的内容。但是我们知道数组可以通过下标来访问,那么很容易地可以想到用数据来解这道题。用一个数组1接收链表中每个节点val的值,再用一个数组2按照题目所给顺序从数组1中读取并存储val

typedef struct ListNode LN;

int ListNodeQua(LN* phead)//用于计算链表中节点个数

{

    LN* pmove = phead;

    int count = 0;

    while(pmove)

    {

        count++;

        pmove = pmove->next;

    }

    return count;

}

void reorderList(struct ListNode* head)

{

    LN* pmove = head;

    int n = ListNodeQua(head);

    int* arr = (int*)malloc(sizeof(int)*n);//数组1

    for(int i = 0;i<n;i++)//存储链表中的val

    {

        arr[i] = pmove->val;

        pmove = pmove->next;

    }

    int* arr1 = (int*)malloc(sizeof(int)*n);//数组2

    arr1[0] = arr[0];//第一个节点不变

    int x = n-1;//尾下标

    int y = 1;

    for(int i = 1;i<n;i++)//按照题目所给顺序从数组1中拿取数据

    {

        if(i%2==1)

        {

            arr1[i] = arr[x];

            x--;

        }

        else if(i%2==0)

        {

            arr1[i] = arr[y];

            y++;

        }

    }

    pmove = head;

    int j = 0;

    while(pmove)//最后再将数组2中的数据放入链表中

    {

        pmove->val = arr1[j++];

        pmove = pmove->next;

    }

}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ROS 2边学边练(25)-- 将多个节点组合到一个进程

前言 在ROS 2中&#xff0c;将多个节点&#xff08;Nodes&#xff09;组合到一个单独的进程&#xff08;Process&#xff09;中通常指的是使用“Composable Nodes”的特性。这个特性允许你定义可复用的组件&#xff08;Components&#xff09;&#xff0c;然后将这些组件加…

WPF-基础及进阶扩展合集(持续更新)

目录 一、基础 1、GridSplitter分割线 2、x:static访问资源文件 3、wpf触发器 4、添加xaml资源文件 5、Convert转换器 6、多路绑定与多路转换器 二、进阶扩展 1、HierarchicalDataTemplate 2、XmlDataProvider从外部文件获取源 3、TextBox在CellTemplate中的焦点问题…

系统边界图

系统边界图的定义&#xff1a; 系统边界图是系统工程和软件工程中的一种图形化工具&#xff0c;用于描述系统与外部世界之间的交互和界限。它展示了系统的组成部分以及这些组件如何与外部实体进行通信和交互。系统边界图通常包括系统内部的各个组件、外部实体以及它们之间的通信…

考研数学究竟有多难?基础差该如何复习?

考研数学的难度是相对的&#xff0c;它取决于考生的数学基础、备考时间、复习效率和解题技巧等多个因素。从历年的考试情况来看&#xff0c;考研数学确实具有一定的挑战性&#xff0c;主要体现在以下几个方面。 首先是知识覆盖面广&#xff0c;考研数学涵盖了高等数学、线性代…

集群伸缩简介

4.2.1.小结 Redis如何判断某个key应该在哪个实例&#xff1f; 将16384个插槽分配到不同的实例根据key的有效部分计算哈希值&#xff0c;对16384取余余数作为插槽&#xff0c;寻找插槽所在实例即可 如何将同一类数据固定的保存在同一个Redis实例&#xff1f; 这一类数据使用…

1042: 中缀表达式转换为后缀表达式

解法&#xff1a;直接给算法 创建一个栈和一个空的后缀表达式字符串。 遍历中缀表达式中的每个字符。 如果当前字符是操作数&#xff0c;直接将其添加到后缀表达式字符串中。 如果当前字符是操作符&#xff0c;需要将其与栈顶的操作符进行比较&#xff1a; 如果栈为空&#…

Mac下载的软件显示文件已损坏,如何解决文件已损坏问题

当在Mac上下载的软件显示文件已损坏时&#xff0c;这可能是因为多种原因导致的&#xff0c;包括网络问题、下载中断、软件未完整下载、文件传输错误等。解决这个问题需要采取一些步骤来排除可能的原因&#xff0c;并尝试修复文件。下面将详细介绍一些常见的解决方法&#xff1a…

Qt-绘制多边形、椭圆、多条直线

1、说明 所有的绘图操作是在绘图事件中进行。mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow>QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACEclass MainWindow : public QMainWindow {Q_OBJECTpublic:MainWi…

【详解算法流程+程序】DBSCAN基于密度的聚类算法+源码-用K-means和DBSCAN算法对银行数据进行聚类并完成用户画像数据分析课设源码资料包

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一个比较有代表性的基于密度的聚类算法。 与划分和层次聚类方法不同&#xff0c;它将簇定义为密度相连的点的最大集合&#xff0c;能够把具有足够高密度的区域划分为簇&#xff0c; 并可在噪声的空间数据…

MES管理系统中生产物料管理的设计

在数字化工厂建设的浪潮中&#xff0c;MES管理系统作为执行层的核心管理系统&#xff0c;其重要性日益凸显。特别是在生产物料管理方面&#xff0c;MES管理系统不仅承担物料计划指令的接收&#xff0c;还负责物料派工及使用反馈的数据收集&#xff0c;其业务流程的设计对数字化…

树莓派点亮双色LED

双色LED灯准确来说叫双基色LED灯,是指模块只能显示2种颜色,一般是红色和绿色,可以有三种状态 :灭,颜色1亮,颜色2亮,根据颜色组合的不同,分为红蓝双色,黄蓝双色,红绿双色等等。 接线:将引脚S(绿色)和中间引脚(红色)连接到Raspberry Pi的GPIO接口上,对Raspberry…

文献速递:深度学习胰腺癌诊断--胰腺肿瘤的全端到端深度学习诊断

Title 题目 Fully end-to-end deep-learning-based diagnosis of pancreatic tumors 胰腺肿瘤的全端到端深度学习诊断 01 文献速递介绍 胰腺癌是最常见的肿瘤之一&#xff0c;预后不良且通常是致命的。没有肿瘤的患者只需要进一步观察&#xff0c;而胰腺肿瘤的诊断需要紧…

【数据结构与算法】递推

来源&#xff1a;《信息学奥赛一本通》 所谓递推&#xff0c;是指从已知的初始条件出发&#xff0c;依据某种递推关系&#xff0c;逐次推出所要求的各中间结果及最后结果。其中初始条件或是问题本身已经给定&#xff0c;或是通过对问题的分析与化简后确定。 从已知条件出发逐…

浏览器工作原理与实践--跨站脚本攻击(XSS):为什么Cookie中有HttpOnly属性

通过上篇文章的介绍&#xff0c;我们知道了同源策略可以隔离各个站点之间的DOM交互、页面数据和网络通信&#xff0c;虽然严格的同源策略会带来更多的安全&#xff0c;但是也束缚了Web。这就需要在安全和自由之间找到一个平衡点&#xff0c;所以我们默认页面中可以引用任意第三…

web前端框架设计第四课-条件判断与列表渲染

web前端框架设计第四课-条件判断与列表渲染 一.预习笔记 1.条件判断 1-1&#xff1a;v-if指令&#xff1a;根据表达式的值来判断是否输出DOM元素 1-2&#xff1a;template中使用v-if 1-3&#xff1a;v-else 1-4&#xff1a;v-else-if 1-5&#xff1a;v-show&#xff08;不支…

【快捷部署】017_MongoDB(6.0.14)

&#x1f4e3;【快捷部署系列】017期信息 编号选型版本操作系统部署形式部署模式复检时间017MongoDB6.0.14Ubuntu 20.04apt单机2024-04-11 一、快捷部署 #!/bin/bash ################################################################################# # 作者&#xff1a;…

SQL注入sqli_labs靶场第十七题

B站教学视频很详细 【sql注入之sqli-labs系列教程(less11-17)】sqli-labs_33_less17_哔哩哔哩_bilibili 我将SQL语句在页面中显示&#xff0c;以便更深入学习。 1.寻找注入点 修改密码的一个页面。 输入正确的账号密码&#xff0c;可以看到&#xff0c;账号为admin&#xf…

PHP Storm 2024.1使用

本文讲的是phpstorm 2024.1最新版本激活使用教程&#xff0c;本教程适用于windows操作系统。 1.先去idea官网下载phpstorm包&#xff0c;我这里以2023.2最新版本为例 官网地址&#xff1a;https://www.jetbrains.com/zh-cn/phpstorm/ 2.下载下来后安装&#xff0c;点下一步 …

Qt5 编译oracle数据库驱动

库文件 1、Qt源码目录&#xff1a;D:\Qt5\5.15.2\Src\qtbase\src\plugins\sqldrivers\oci 2、oracle客户端SDK: https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html 下载各版本中的如下压缩包&#xff0c;一定要版本相同的 将两个压缩包…

性能升级,INDEMIND机器人AI Kit助力产业再蜕变

随着机器人进入到越来越多的生产生活场景中&#xff0c;作业任务和环境变得更加复杂&#xff0c;机器人需要更精准、更稳定、更智能、更灵敏的自主导航能力。 自主导航技术作为机器人技术的核心&#xff0c;虽然经过了多年发展&#xff0c;取得了长足进步&#xff0c;但在实践…