C\C++刷题DAY4

news2024/11/16 15:50:58

目录

1.第一题

2.第二题

3.第三题

4.第四题

5.第五题


1.第一题

206. 反转链表 - 力扣(LeetCode)

 思路:调转指向关系,使用双指针的思想

1指向2,改成2指向1,以此类推。

参考代码:

struct ListNode* reverseList(struct ListNode* head)
{
    if(head==NULL)
    return NULL;
    struct ListNode *n1, *n2, *n3;
    n1 = NULL;
    n2 = head;
    n3 = n2->next;
    while(n2)
    {
        n2->next = n1;
        n1 = n2;
        n2 = n3;
        if(n3)
        {
            n3 = n3->next;
        }
    }

    return n1;
}

PS:

上述的这种实现的方式是用迭代的思想,那么为什么不同递归的思想取解决问题呢?

这是因为递归是有缺陷的,如果递归的深度太深的话,可能会造成栈溢出。

因此对于简单问题,能够迭代去解决的话,尽量用迭代解决

当遇见那种用迭代无法轻易解决的问题,才考虑去使用递归解决。

2.第二题

876. 链表的中间结点 - 力扣(LeetCode)

思路:

快慢指针的思想(双指针):一个指针块,一个指针慢

slow指针一次走一个节点

fast指针一次走2个节点

两种速度相差一倍,可知当fast走完的时候,slow刚好走到中间位置。

参考代码:

struct ListNode* middleNode(struct ListNode* head)
{
    struct ListNode *fast, *slow;
    fast = slow = head;
    while(fast && fast->next)
    {
        slow = slow->next;
        fast = fast->next->next;
    }
    return slow;
}

3.第三题

链表中倒数第k个结点_牛客题霸_牛客网 (nowcoder.com)

 思路分析:快慢指针

 fast先走k步,然后fast和slow一起走,那么当fast走完的时候,slow还没有走完,那么这个时候,两者的差就显示了倒数第k个节点。

fast走k-1步,也是同理。

参考代码:

struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) 
{
    // write code here
    struct ListNode *fast, *slow;
    fast = slow = pListHead;
    //fast先走k步
    while(k--)
    {
        if(fast==NULL)
        {
            return NULL;
        }
        fast = fast->next;

    }
    while(fast)
    {
        slow = slow->next;
        fast = fast->next;
    }

    return slow;
}

4.第四题

链表分割_牛客题霸_牛客网 (nowcoder.com)

 

 分析:

将小于x的节点拿下来尾插成一个新的链表

将大于等于x的节点拿下来尾插成一个新的链表

最后链接这两个链表就行

PS:看到尾插就想到用哨兵位的头节点

参考代码:

class Partition {
public:
    ListNode* partition(ListNode* pHead, int x)
    {
        // write code here
        struct ListNode *lessHead, *lessTail, *greaterHead, *greaterTail;
        lessHead = lessTail = (struct ListNode*)malloc(sizeof(struct ListNode));
        greaterHead = greaterTail = (struct ListNode*)malloc(sizeof(struct ListNode));
        lessTail->next = greaterTail->next =NULL;

        struct ListNode *cur =pHead;
        while(cur)
        {
            if(cur->val < x)
            {
                lessTail->next = cur;
                lessTail = lessTail->next;
            }
            else
            {
                greaterTail->next = cur;
                greaterTail = greaterTail->next;
            }

            cur = cur->next;
        }

        lessTail->next = greaterHead->next;
        greaterTail->next = NULL;

        pHead = lessHead->next;
        free(lessHead);
        free(greaterHead);

        return pHead;

    }
};

5.第五题

链表的回文结构_牛客题霸_牛客网 (nowcoder.com)

 分析:

回文结构:类似于古诗写法的术语,正着读和反着读是一样的

比如12321,从左到右和从右到左读是一样的。

 PS:将后半段的反转之后在和前的半段的比较。

如果相等返回true

如果不等返回flase

参考代码:

class PalindromeList
{
public:
    //找到中间位置的节点
    struct ListNode *middleNode(struct ListNode* head)
    {
        struct ListNode *fast, *slow;
        slow = fast = head;

        while(fast && fast->next)
        {
            slow = slow->next;
            fast = fast->next->next;
        }

        return slow;
    }
    //反转链表
    struct ListNode* reverseList(struct ListNode* head)
    {
        struct ListNode* cur =head;
        struct ListNode* rhead = NULL;
        while(cur)
        {
            struct ListNode* next =cur->next;
            rhead =cur;
            cur = next;
        }

        return rhead;
    }
    bool chkPalindrome(ListNode* A) 
    {
        // write code here
        struct ListNode* mid = middleNode(A);
        struct ListNode* rhead = reverseList(mid);
        while(A && rhead)
        {
            if(A->val!=rhead->val)
            return false;

            A = A->next;
            rhead = rhead->next;
        }
        return true;
    }
};

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

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

相关文章

2022年NPDP新版教材知识集锦--【第三章节】(5)

【系统工程】 系统工程的概念 系统工程原理将系统思维和系统工程过程模型的概念结合起来&#xff0c;通过设计、项目管理工具和方法的系统和集成过程将问题转化为解决方案。 所有系统都由具有属性或功能的部分组成&#xff0c;元素之间通过关系相互联系。 系统复杂性由结构…

想学爬虫爬取网页,但是不知道流程?

爬取网页总体概述&#xff1a; 1.使用urllib请求网页&#xff0c;获取网页源码。 2.使用bs4配合re正则表达式进行页面数据解析&#xff0c;获取到自己想要的数据。 3.使用pymysql保存到数据库或xlwt保存成excel文件。 温馨提示&#xff1a;学习之前需要先了解py基础知识&#x…

PTA题目 计算符号函数的值

对于任一整数n&#xff0c;符号函数sign(n)的定义如下&#xff1a; 请编写程序计算该函数对任一输入整数的值。 输入格式: 输入在一行中给出整数n。 输出格式: 在一行中按照格式“sign(n) 函数值”输出该整数n对应的函数值。 输入样例1: 10输出样例1: sign(10) 1输入样…

住宅代理详细介绍——助您快速入门!

Oxylabs的高级代理池能够为客户提供来自世界各地的1亿多个住宅代理&#xff0c;并且其规模还在不断壮大中&#xff0c;即使是难搞的网络抓取任务也能够处理。住宅代理能轻松从复杂的目标中收集数据&#xff0c;帮助您在无需面对CAPTCHA验证或封锁的情况下实现抓取。 想要全方位…

在 Kubernetes 上最小化安装 KubeSphere

文章目录什么是 KubeSphere搭建环境准备工作部署 KubeSphere卸载 KubeSphere常见问题什么是 KubeSphere KubeSphere 是在 Kubernetes 之上构建的面向云原生应用的分布式操作系统&#xff0c;完全开源&#xff0c;支持多云与多集群管理&#xff0c;提供全栈的 IT 自动化运维能力…

免费公众号题库

免费公众号题库 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查题校园题库&#xff1a;查题校园题库后台&#xff08;点击跳转…

java之《图书管理系统》庖丁解牛

&#x1f387;&#x1f387;&#x1f387;作者&#xff1a; 小鱼不会骑车 &#x1f386;&#x1f386;&#x1f386;专栏&#xff1a; 《java练级之旅》 &#x1f393;&#x1f393;&#x1f393;个人简介&#xff1a; 一名专科大一在读的小比特&#xff0c;努力学习编程是我…

大数据挖掘建模平台是怎样的?

大数据挖掘建模平台是可视化、一站式、高性能的数据挖掘与人工智能建模服务平台。面向企业级用户的大数据挖掘建模平台。平台采用可视化操作方式&#xff0c;通过丰富内置算法&#xff0c;帮助用户快速、一站式地进行数据分析及挖掘建模&#xff0c;可应用于处理海量数据、高复…

初识VisionPro应用开发

文章目录一、引言二、VisionPro应用开发指南1. 上手指南1.1. VisionPro开发概述1.2. 高级开发功能2. 选择应用开发路径&#xff08;方式&#xff09;2.1. 路径1&#xff1a;用QuickBuild和应用程序向导生成的操作接口进行交互式开发2.2. 路径2&#xff1a;用QuickBuild和自定义…

MySQL 经典面试题分析(值得收藏)

MySQL是程序员面试必问题目点之一&#xff0c;因为 MySQL 几乎占据了数据库的半壁江山。数据库的核心与原理基本是相通的&#xff0c;所以有了 MySQL 的基础之后&#xff0c;再去熟悉其他数据库也是非常快的&#xff0c;那么让我们一起来了解一下MySQL 。 MySQL 有很多存储引擎…

铁矿行业BI经营分析框架(二)万能框架-增长性、盈利性、流动性

有关铁矿行业的一些基础业务知识&#xff0c;铁矿行业的竞争本质上就是规模和成本的竞争。从业务角度探、采、选、冶这四块最重要的就是选矿这个过程。因为国内铁矿品位比较低&#xff0c;大部分都是30%左右的贫矿&#xff0c;所以选矿的成本就比较高。 要优化现金成本&#xf…

为什么推荐 Java 开发人员都学习并使用 Kotlin?

我使用 Java 已经有很长的时间了&#xff0c;工作中的使用有15年。如果算上在学校的时间的话&#xff0c;那就更长了。Java 的一个很大的优势是平台的开放性。这得益于 Java 字节代码和虚拟机的存在。由于 Java 语言自身的发展速度比较慢&#xff0c;就催生了很多运行在 JVM 上…

西班牙知名导演:电影产业应与NFT及社区做结合

潜力博主推荐&#xff0c;点击上面关注博主 ↑ ↑ “OGtown”是华语cryptopunks社区授权的文章专栏 NFT项目走向全球社区。 通证一哥&#xff1a;2016年起专注区块链行业相关的研究。中国大陆第一本NFT畅销书作者。加密朋克中文社区的联合发起人。token punk社区发起人 88pu…

【Linux】---环境变量

文章目录环境变量环境变量测试和环境变量相关的命令echoenvexportunsetset环境变量的组织方式main函数的几个参数第三个参数环境变量的全局性环境变量 环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数&#xff0c;例如&#xff1a; 平常我们去执行一个程序一…

Multiscale Vision Transformers 论文详解

Abstract 我们提出了 Multiscale Vision Transformers&#xff08;MViT&#xff09;用于视频和图像识别。MViT 是多尺度特征层次结构和Transformer的结合。MViT 有几个通道分辨率尺度块&#xff08;channel-resoluation scale stages&#xff09;。从输入分辨率和小通道维度开始…

JavaScript学习——什么是编程语言?计算机基础

每篇博文的浪漫主义 【Study Vlog #21 | 计划被打断之后的报复性学习 | 喜欢秋天安静的学习时刻】 https://www.bilibili.com/video/BV1b84y1B79c/?share_sourcecopy_web&vd_source385ba0043075be7c24c4aeb4aaa73352 Study Vlog #21 | 计划被打断之后的报复性学习 | 喜欢…

Android程序设计之学校疫情防控管理

基于Android实现的学校疫情防控管理&#xff0c;项目采用SQLite来存储数据。 SQLite 简介 SQLite是一个软件库&#xff0c;实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite是一个增长最快的数据库引擎&#xff0c;这是在普及方面的增长&#xff0c;…

测试工作的完整流程

需求评审&#xff1a;确保各部门需求理解一致。计划编写&#xff1a;根据重要核心程度来决定先测哪些功能后测哪些功能&#xff0c;测什么、谁来测、怎么测 a. 测什么&#xff1a;测哪些功能 b. 谁来测&#xff1a;具体的测试人员 c. 怎么测&#xff1a;具体测 功能、性能、兼容…

公众号免费搜题接口

公众号免费搜题接口 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查题校园题库&#xff1a;查题校园题库后台&#xff08;点击…

笔试强训(三十八)

目录一、选择题二、编程题2.1 蘑菇矩阵2.1.1 题目2.1.2 题解2.2 红与黑2.2.1 题目2.2.2 题解一、选择题 &#xff08;1&#xff09;下列关于URL的描述错误的是&#xff08;A&#xff09; A.http表名使用TCP协议 B.又名统一资源定位符&#xff0c;方便确定一个资源&#xff0c;…