W...Y的主页 😊代码仓库分享 💕前言: 今天是链表顺序表OJ练习题最后一次分享,每一次的分享题目的难度也再有所提高,但是我相信大家都是非常机智的,希望看到博主文章能学到东西的可以一键三连关注一下博主。话不多说,我们来看今天的OJ习题.。【leetcode142.环形链表II】OJ链接给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从0开始)。如果 pos 是 -1,则在该链
题一:有效的括号给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。示例 2:输入:s="()[]{}"输出:true思路一: 第一步:写出数组栈的结构体,然后分别写出栈的初始化,入栈,出栈,获取栈顶元素,销毁栈,检验栈是否为空的函数; 第二步:创建一个结构体变量,初始化,while(*s)决定是否继续循环,用switch找到对应的前置符号将他们入栈,如果是后置符号,则先判断ps中是否为空,然后再判断是否有对应的前
W...Y的主页 😊代码仓库分享 💕前言:单链表的结构常常不完美,没有双向链表那么”优秀“,所以繁衍出很多OJ练习题。今天我们继续来looklook数据结构习题。下面就是OJ时间!!!【链表中倒数第K个节点】——牛客网OJ链接描述输入一个链表,输出该链表中倒数第k个结点。示例1输入:1,{1,2,3,4,5}返回值:{5}题目函数接口:pListHead:目标链表。k:倒数第K个节点。理论上我们可以先遍历一遍求出链表长度,然后创建一个指针使其走过(k-1)个元素即可找到链表中倒是第k个节点。但是这道题我们要把时间复杂度降到最大,只能遍历一遍,我们该怎么应对?我们可以创建两个指针(快慢)slow
💕人生不满百,常怀千岁忧💕作者:Mylvzi 文章主要内容:链表oj详解 题目一:移除元素题目要求:画图分析: 代码实现: structListNode*removeElements(structListNode*head,intval){structListNode*prev=NULL,*cur=head;//遍历while(cur){if(cur->val==val)//相等{if(cur==head)//头删{head=cur->next;free(cur);cur=head;}else//中间情况{prev->next=cur->next;free(cur);cur=prev->
目录文章目录前言1.题目:设计循环队列2.思路3.分析 3.1定义循环队列 3.2创建队列 3.3判空和判满 3.4入队 3.5出队 3.6取队头队尾数据 3.7销毁队列 4.题解总结前言 当谈到队列数据结构时,很多人可能会想到普通的队列,即先进先出(FIFO)的数据结构。然而,有时候我们需要一种更高效的队列实现方式,这就是循环队列。1.题目:设计循环队列 题目描述: 题目链接:设计循环队列https://leetcode.cn/problems/design-circular-queue/2.思路 先来理解一下题意,首先队列的长度为定长k,其次就是队列可以循环利用
OJ链接简而言之,题目就是要我们实现一个栈,这个栈能够快速查找最小值,要求时间复杂度O(1),也就是说不能循环暴力查找思路:也许很多人一看到这个题目就有思路,就是定义一个min变量,入栈的时候如果元素比min小就更新min但是这么做会有一个问题,如果最小值被pop怎么办呢?我们会想让min回到之前的值,之前应该定义一个min_prev变量储存min之前的值,但是这只能保证min只是被pop一次,被pop多次就失效了所以我们需要记录min的改变历程,即保证min总是能回到之前的值我们创建一个辅助栈 每次向栈里push时就向辅助栈里push当前最小值,获取最小值时取辅助栈顶元素就可以,这样就实现了
本篇主要以理解结构为主!!! 题一:用队列实现栈示例:输入:["MyStack","push","push","top","pop","empty"][[],[1],[2],[],[],[]]输出:[null,null,null,2,2,false]解释:MyStackmyStack=newMyStack();myStack.push(1);myStack.push(2);myStack.top();//返回2myStack.pop();//返回2myStack.empty();//返回False思路一: 初始化:初始化队列Q1,Q2;入栈
目录前言1.题目:用栈实现队列2.思路3.分析 3.1定义“队列” 3.2创建队列3.3入队 3.4队头数据 3.5出队 3.6判空和销毁4.题解总结前言 栈和队列是数据结构中的两个重要概念,它们在算法和程序设计中都有着广泛的应用。本文将带你深入了解如何使用栈来模拟实现队列,让你在解决问题时更加灵活和创新,便于大家更深入的理解栈和队列。1.题目:用栈实现队列 题目描述: 题目链接:用栈实现队列https://leetcode.cn/problems/implement-queue-using-stacks/description/2.思路 这道题目的解题思路于队列
栈和队列小提升!前言一、用队列实现栈队列接口实现(1)栈的接口定义(2)栈的初始化(3)入栈函数的定义(4)出栈函数的定义(5)查找栈顶元素(6)判空函数的定义(7)销毁函数的定义二、用栈实现队列栈的接口实现(1)队列的接口定义(2)队列的初始化(3)入队函数的定义(4)出队函数的定义(5)查找队头函数的定义(6)判空函数的定义(7)销毁函数的定义三、设计循环队列(1)循环队列的接口定义(2)循环队列的初始化(3)判空函数的定义(4)判满函数的定义(5)循环队列插入函数的定义(6)循环队列删除函数的定义(7)查找队头函数的定义(8)查找队尾函数的定义(9)销毁函数的定义总结前言欢迎来到专项提升
上文回顾---单链表这章将来做一些链表的相关题目。目录1.移除链表元素2.反转链表3.链表的中间结点4.链表中的倒数第k个结点5.合并两个有序链表6.链表分割7.链表的回文结构8.相交链表9.环形链表编辑 10.环形链表II编辑 编辑1.移除链表元素 思路:我们可以通过循环链表,判断结点的val与给出的val是否一致,一致则跳过该结点即可;由于我们是跳过某个结点,那么就会让这个结点的上一个结点和下一个结点进行关联;所以我们以某结点的next的val去判断;所以对于头结点来说,我们还要创建一个结点连接着头结点;我们自己创建一个结点,还可以规避头指针为空的问题; 答案:/***Defini