【每日刷题】Day16

【每日刷题】Day16

🥕个人主页:开敲🍉

🔥所属专栏:每日刷题🍍

🌼文章目录🌼

1. 24. 两两交换链表中的节点 - 力扣(LeetCode)

2. 160. 相交链表 - 力扣(LeetCode)

3. 136. 只出现一次的数字 - 力扣(LeetCode)

1. 24. 两两交换链表中的节点 - 力扣(LeetCode)

 //0ms  100%思路:创建新链表,malloc新节点按照题目所给顺序存储原链表节点,新链表逐个连接新节点

typedef struct ListNode LN;


 

 int ListNodeQua(LN* phead)//计算原链表节点数

 {

    LN* pmove = phead;

    int count = 0;

    while(pmove)

    {

        count++;

        pmove = pmove->next;

    }

    return count;

 }

struct ListNode* swapPairs(struct ListNode* head)

{

    if(head==NULL)

    {

        return NULL;

    }

    if(head->next==NULL)

    {

        return head;

    }


 

    int n = ListNodeQua(head);

    LN* sentry = (LN*)malloc(sizeof(LN));//新链表哨兵位

    LN* pmove = head;//原链表奇数位节点

    LN* pmove1 = sentry;//用于遍历新链表连接新节点

    int i = 0;

    while(i<n/2)//交换次数即为循环次数

    {

        LN* pmove2 = pmove->next;//原链表偶数位节点

        LN* pget1 = (LN*)malloc(sizeof(LN));//新节点1

        pget1 = pmove2;//存储原链表偶数位节点

        pmove1->next = pget1;//连接新节点

        pmove1 = pmove1->next;//往后遍历以连接下一个节点

        LN* pget2 = (LN*)malloc(sizeof(LN));//新节点2

        pget2 = pmove;//存储原链表奇数位节点

        pmove->next = pmove2->next;//这里需要注意,由于原链表奇数位节点的next指向后一个偶数位节点,而下面我们在让新链表连接新节点时,会导致相邻两个节点成环,因此这里需要在新链表连接新节点前让奇数位节点的next指向下一个奇数位节点

        pmove1->next = pget2;//连接新节点

        pmove1 = pmove1->next;//往后遍历以连接下一个节点

        pmove = pmove->next;//由于上面我们奇数位节点next指向了下一个奇数位节点,因此这里直接走向next即可进行下一个交换

        i++;

    }

    LN* phead = head;

    if(n%2==1)//如果链表个数为奇数个,则在最后一次交换后会遗漏下最后一个节点,这里只需要直接将最后一个节点连接上即可

    {

        while(phead->next)

        {

            phead = phead->next;

        }

        pmove1->next = phead;

    }

    return sentry->next;

}

2. 160. 相交链表 - 力扣(LeetCode)

//思路:根据题目要求我们容易想到用两个指针遍历两个链表,当指针相等时就是相交的起始节点,直接返回。但是也容易发现一个问题,链表的长度不是严格相等的,因此,若是两个指针都在第一个节点同时遍历则可能会错过。那么我们这里的思路就是如何让两个指针刚好相遇——让较长的链表的指针先走过两链表长度差值的节点数。

typedef struct ListNode LN;

int ListNodeQua(LN* phead)//计算链表节点数

{

    LN* pmove = phead;

    int count = 0;

    while(pmove)

    {

        count++;

        pmove = pmove->next;

    }

    return count;

}


 

int my_abs(int x,int y)//返回两链表节点数差值(正数)

{

    return x>y?x-y:y-x;

}


 

struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB)

{

    if(headA==NULL||headB==NULL)

    {

        return NULL;

    }

    LN* pf1 = headA;

    LN* pf2 = headB;

    int a = ListNodeQua(headA);//链表A的节点数

    int b = ListNodeQua(headB);//链表B的节点数

    int x = my_abs(a,b);//两链表节点数差值的绝对值

    int flag = a>b?1:0;//用于判断需要哪个链表的指针走

    while(x)

    {

        if(flag)//如果flag为1,则说明链表A较长,则让pf1的指针走过x个节点

        {

            pf1 = pf1->next;

        }

        else//否则则是链表B较长,让pf2走过x个节点

        {

            pf2 = pf2->next;

        }

        x--;

    }

    while(pf1&&pf2)//这时再让pf1、pf2同时走,相遇时直接返回

    {

        if(pf1==pf2)

        {

            return pf1;

        }

        pf1 = pf1->next;

        pf2 = pf2->next;

    }

    return NULL;

}

3. 136. 只出现一次的数字 - 力扣(LeetCode)

//思路:这里需要知道的知识——

1、0^上任何数都等于任何数本身

2、两个相同的数^起来等于0

知道了这两个知识后,这道题就变得非常简单,因为数组中只有一个数字出现一次,其余的数字均出现了两次,那么我们用一个数(初始为0)^上这个数组中的每一个数,相同的数^在一起变为0,则^到最后就会变成0^上那个只出现了一次的数,而0^上任何数等于任何数,则直接返回最终^的结果即可

int singleNumber(int* nums, int numsSize)

{

    int num = 0;

    for(int i = 0;i<numsSize;i++)

    {

        num^=nums[i];

    }

    return num;

}

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

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

相关文章

xcode c++项目设置运行时参数

在 Xcode 项目中&#xff0c;你可以通过配置 scheme 来指定在运行时传递的参数。以下是在 Xcode 中设置运行时参数的步骤&#xff1a; 打开 Xcode&#xff0c;并打开你的项目。在 Xcode 菜单栏中&#xff0c;选择 "Product" -> "Scheme" -> "E…

一次配置Docker环境的完整记录

一次配置Docker环境的完整记录 Docker环境搭建报错与解决报错一报错二报错三 Docker环境搭建 本节介绍了一次配置docker环境的完整记录&#xff1a; 编写Dockerfile文件&#xff1a; FROM pytorch/pytorch:1.10.0-cuda11.3-cudnn8-develRUN rm /etc/apt/sources.list.d/cuda.l…

LeetCode 409—— 最长回文串

阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 要想组成回文串&#xff0c;那么只有最中间的字符可以是奇数个&#xff0c;其余字符都必须是偶数个。 所以&#xff0c;我们先遍历一遍字符串&#xff0c;统计出每个字符出现的次数。 然后如果某个字符出现了偶…

C++string类(个人笔记)

string类 1.认识string的接口以及熟练使用常用接口1.1string类对象的常见构造1.2string类对象的容量操作1.3string类对象的访问及遍历操作1.4string类对象的修改操作 2.vs 和g下string结构的说明3.string类运用的笔试题4.string类的模拟实现 1.认识string的接口以及熟练使用常用…

使用 Docker 部署 SurveyKing 调查问卷系统

1&#xff09;SurveyKing 介绍 SurveyKing 是一款功能强大、操作简便的开源问卷系统。它不仅满足了用户对问卷调查的基本需求&#xff0c;还提供了丰富的逻辑设置和灵活的问题设置&#xff0c;使得问卷制作更加智能化和个性化。此外&#xff0c;SurveyKing 还具有快速部署和安全…

【从浅学到熟知Linux】进程控制下篇=>进程程序替换与简易Shell实现(含替换原理、execve、execvp等接口详解)

&#x1f3e0;关于专栏&#xff1a;Linux的浅学到熟知专栏用于记录Linux系统编程、网络编程等内容。 &#x1f3af;每天努力一点点&#xff0c;技术变化看得见 文章目录 进程程序替换什么是程序替换及其原理替换函数execlexeclpexecleexecvexecvpexecvpeexecve 替换函数总结实现…

深入剖析跨境电商平台风控机制,探索测评安全与稳定的秘诀

在跨境电商测评市场鱼龙混杂的当下&#xff0c;测评过程中可能隐藏的陷阱保持高度警觉。多年的测评经验告诉我们&#xff0c;选择一个适合的测评系统对于项目的成功至关重要。近年来&#xff0c;测评技术如雨后春笋般涌现&#xff0c;市场上涌现出众多测评系统&#xff0c;覆盖…

配置路由器实现互通

1.实验环境 实验用具包括两台路由器(或交换机)&#xff0c;一根双绞线缆&#xff0c;一台PC&#xff0c;一条Console 线缆。 2.需求描述 如图6.14 所示&#xff0c;将两台路由器的F0/0 接口相连&#xff0c;通过一台PC 连接设备的 Console 端口并配置P地址&#xff08;192.1…

计算机网络的七层模型

序 OSl(Open System Interconnect)&#xff0c;即开放式系统互联。一般都叫OSI参考模型。在网络编程中最重要的模型就是OSI七层网络模型和TCP/IP四层网络模型 一、OSI七层参考模型以及功能概述 二、各层的具体职能以及实际应用 1.应用层&#xff1a; OSI参考模型中最接近用…

官方助力:SpringAI快速尝鲜体验(SpringBoot3+Gradle8+JDK17)

SpringAI 自从OpenAI的ChatGPT爆火之后&#xff0c;各种AI大模型开始席卷互联网&#xff0c;作为知名框架的Spring官方也是小小的顺应了一波潮流&#xff0c;就在不久前官方推出了针对AI的部分&#xff0c;称为SpringAI目前最新版本为0.8.1,下面是官网的截图。 直通车https:/…

实验一:配置IP地址

1.实验环境 主机A和主机B通过一根网线相连 2.需求描述 为两台主机配置IP地址&#xff0c;验证IP地址是否生效&#xff0c;验证 同一网段的两台主机可以互通&#xff0c;不同网段的主机不能 直接互通 3.推荐步骤 1. 为两台主机配置P地址&#xff0c;主机A为10.0.10.10&#…

开发工人员必备的XCheck代码检测工具

Xcheck&#xff08;Application Security Development&#xff0c;应用安全开发&#xff09;&#xff0c;是一款由腾讯纯自研的静态代码分析工具&#xff0c;它是一款致力于检查 Web 类风险的 SAST&#xff08;Static Application Security Testing&#xff0c;静态代码分析&am…

聚生态 智算兴,超聚变的行业生态之“变”

千帆竞发浪潮涌&#xff0c;独领风骚显英豪。当前&#xff0c;在算力基础设施市场&#xff0c;竞争正日趋白热化。一方面&#xff0c;企业数字化转型走向深入&#xff0c;对算力产生了更加迫切的需求&#xff1b;另一方面&#xff0c;以大模型为代表的AI技术的快速发展与落地应…

十大排序——7.希尔排序

下面我们来看一下希尔排序 目录 1.介绍 2.代码实现 3.总结与思考 1.介绍 希尔排序是插入排序的一种优化&#xff0c;可以理解为是一种分组的插入排序。 希尔排序的要点&#xff1a; 简单来说&#xff0c;就是分组实现插入&#xff0c;每组元素的间隙称为gap&#xff0c;…

【日常记录】【CSS】利用动画延迟实现复杂动画

文章目录 1、介绍2、原理3、代码4、参考链接 1、介绍 对于这个效果而言&#xff0c;最先想到的就是 监听滑块的input事件来做一些操作 ,但是会发现&#xff0c;对于某一个节点的时候&#xff0c;这个样式操作起来比较麻烦 只看这个代码的话&#xff0c;发现他用的是动画&#x…

Java工程师常见面试题:Java基础(一)

1、JDK 和 JRE 有什么区别&#xff1f; JDK是Java开发工具包&#xff0c;它包含了JRE和开发工具&#xff08;如javac编译器和java程序运行工具等&#xff09;&#xff0c;主要用于Java程序的开发。而JRE是Java运行环境&#xff0c;它只包含了运行Java程序所必须的环境&#xf…

记【k8s】:访问 Prometheus UI界面:kubernetes-etcd (0/1 up) Error : out of bounds

记【k8s】&#xff1a;访问 Prometheus UI界面&#xff1a;kubernetes-etcd &#xff08;0/1 up&#xff09; Error &#xff1a; out of bounds 1、报错详情2、解决方法 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 出现 “out of bound…

java正则表达式教程

什么是正则表达式&#xff1a; 正则表达式是一种用来描述字符串模式的语法。在 Java 中&#xff0c;正则表达式通常是一个字符串&#xff0c;它由普通字符&#xff08;例如字母、数字、标点符号等&#xff09;和特殊字符&#xff08;称为元字符&#xff09;组成。这些特殊字符可…

酷开科技将幸福放大,第一届酷开大使启程!

注意了&#xff01;第一届酷开大使来了&#xff01;无论年龄、性别、职业、地域……从来自五湖四海的近千名酷粉中&#xff0c;经过了层层筛选之后&#xff0c;终于迎来了65位第一届酷开大使&#xff01; 他们来自我国54个不同的城市&#xff0c;他们中有能人巧匠&#xff0c;…

Spring基础篇-快速面试笔记(速成版)

文章目录 1. Spring概述2. 控制反转&#xff08;IoC&#xff09;2.1 Spring声明Bean对象的方式2.2 Spring的Bean容器&#xff1a;BeanFactory2.3 Spring的Bean生命周期2.4 Spring的Bean的注入方式 3. Spring的事件监听器&#xff08;Event Listener&#xff09;3.1 Spring内置事…