草庐IT

leetcode刷题之回文链表

全部标签

数据结构 | 单链表SingleList【带你从浅入深真正搞懂链表】

写在前面很多粉丝经常私信问我有关指针、链表相关的问题,也非常希望我出一篇有关链表的教学,最近刚好也在整理有关单链表相关的知识点,便作了此文,为大家讲解有关单链表方面的各块知识点。本文考虑到阅读者的水平和能力,内容有深有浅,总体讲解主要是从浅入深循序渐进地阐述有关链表相关的知识链表真的很难吗?一、前言1、顺序表的缺陷【生活小案例1——盛20粒米饭🍚】2、优化方案二、链表的初步认知1、结构的声明与定义2、栈区存放与堆区存放3、开始链接结点啦🎉【逻辑结构与物理结构的区分】4、运行起来了,开始玩链表打印链表【生活小案例2——王思聪不需要省钱】函数调用栈帧图【✏庖丁解牛,细致剖析】三、接口算法实现【是时

【刷题笔记】加油站||符合思维方式

加油站文章目录加油站1题目描述2思路3解题方法1题目描述https://leetcode.cn/problems/gas-station/在一条环路上有n个加油站,其中第i个加油站有汽油gas[i]升。你有一辆油箱容量无限的的汽车,从第i个加油站开往第i+1个加油站需要消耗汽油cost[i]升。你从其中的一个加油站出发,开始时油箱为空。给定两个整数数组gas和cost,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回-1。如果存在解,则保证它是唯一的。2思路正如大部分大佬所言,需要找到最小值所在的点。但是他们的代码写得有些含糊,我希望可以使用一种更加符合直觉的方式。我们假设从

leetcode - 2948. Make Lexicographically Smallest Array by Swapping Elements

DescriptionYouaregivena0-indexedarrayofpositiveintegersnumsandapositiveintegerlimit.Inoneoperation,youcanchooseanytwoindicesiandjandswapnums[i]andnums[j]if|nums[i]-nums[j]|Returnthelexicographicallysmallestarraythatcanbeobtainedbyperformingtheoperationanynumberoftimes.Anarrayaislexicographicallysmal

leetcode647 回文子串

题目给你一个字符串s,请你统计并返回这个字符串中回文子串的数目。回文字符串是正着读和倒过来读一样的字符串。子字符串是字符串中的由连续字符组成的一个序列。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。示例输入:s=“abc”输出:3解释:三个回文子串:“a”,“b”,“c”解析这道题还是用动归五部曲来分析下:1.确定dp数组及其含义对于大多数求子序列类的题目来说,求什么我们就定义什么,比如求回文子串的数目我们就定义成这个,但是对于这道题来说,dp[i]和dp[i-1],dp[i+1]看上去都没啥关系;因此这道题,要定义dp[i][j]:表示区间范围[i,j](注

【每日OJ题—— 203. 移除链表元素(指针)】

每日OJ题——203.移除链表元素(指针)1.题目:203.移除链表元素2.方法讲解2.1.解法一:2.1.1.图文分析2.1.2.代码实现2.1.3.提交结果展示2.2.解法二:2.2.1.图文分析2.2.2.代码实现2.2.3.提交结果展示1.题目:203.移除链表元素2.方法讲解2.1.解法一:2.1.1.图文分析解法一:是直接在原链表上删除=val值的节点,这个方法是定义两个指针,一个指针遍历链表寻找val的节点,找到后,用另外一个节点指向val节点的下一个节点,然后把val值的节点释放掉,最后返回头结点即可。2.1.2.代码实现2.1.3.提交结果展示2.2.解法二:2.2.1.图文

【LeetCode热题100】--74.搜索二维矩阵

74.搜索二维矩阵按行搜索,使用二分查找classSolution{publicbooleansearchMatrix(int[][]matrix,inttarget){for(int[]row:matrix){intindex=search(row,target);if(index>=0){returntrue;}}returnfalse;}publicintsearch(int[]nums,inttarget){intlow=0,high=nums.length-1;while(lowhigh){intmid=(low+high)/2;if(nums[mid]==target){retur

【手撕数据结构】(三)顺序表和链表

文章目录一、线性表二、顺序表1.概念及结构2.关于数组3.顺序表分类🎗️静态顺序表🎗️动态顺序表4.接口实现(1)思路(2)SeqList.h文件代码功能1:顺序表初始化功能2:销毁顺序表功能3:尾插功能4:头插功能5:尾删功能6:头删功能7:打印功能8:在pos位置处插入数据功能9:在pos位置处删除数据功能10:查找,找到返回下标,没有找到返回-1功能11:修改pos位置处的值完整代码展示(3)SeqList.c文件代码实现功能1:顺序表初始化实现功能2:销毁顺序表实现功能3:尾插辅助功能:检查容量实现功能4:头插实现功能5:尾删实现功能6:头删实现功能7:打印实现功能8:在pos位置处插

LeetCode | 622. 设计循环队列

LeetCode|622.设计循环队列OJ链接思路:我们这里有一个思路:插入数据,bank往后走删除数据,front往前走再插入数据,就循环了那上面这个方法可行吗?怎么判断满,怎么判断空?这样是不是比较难我们下面有一个好的方法,就是多开一个空间下面是我们的结构体的定义typedefstruct{int*a;intfront;intback;intk;}MyCircularQueue;初始化这里的初始化就是给a空间开了k+1个大小MyCircularQueue*myCircularQueueCreate(intk){MyCircularQueue*obj=(MyCircularQueue*)ma

头歌 二叉树的二叉链表存储及基本操作

第1关 先序遍历创建二叉链表存储的二叉树及遍历操作voidCreateBiTree(BiTree&T){//按先序次序输入二叉树中结点的值//构造二叉链表表示的二叉树T。变量Nil表示空(子)树。/**********Begin**********///if(!T)return;TElemTypedata;input(data);if(data==Nil){return;}T=(BiTree)malloc(sizeof(BiTNode));if(!T)return;T->data=data;CreateBiTree(T->lchild);CreateBiTree(T->rchild);/***

python经典百题之打印菱形图案

题目:打印出如下图案(菱形)方法一:使用循环嵌套思路:打印上半部分菱形,从第一行到中间行,行数递增,每行打印奇数个*,实现方式为先打印空格,再打印*;打印下半部分菱形,从中间行到最后一行,行数递减,每行打印奇数个*,实现方式同上。代码如下:foriinrange(1,8,2):print(""*((7-i)//2)+'*'*i)foriinrange(5,0,-2):print(""*((7-i)//2)+'*'*i)优点:代码简洁易懂,逻辑清晰,容易实现。缺点:代码可读性不好,不容易扩展。方法二:使用函数递归思路:定义一个函数print_diamond(n),表示打印行数为n的菱形。如果n=