草庐IT

Leetcode

全部标签

链表oj题2(Leetcode)(牛客)——合并两个有序链表;判断回文链表;链表分割

链表oj题2(Leetcode)(牛客)一,合并两个有序链表1.1分析2.2代码二,链表的回文结构2.1分析2.2代码三,链表分割3.1分析3.2代码四,小结一,合并两个有序链表合并两个有序链表(力扣)1.1分析这里合并两个链表,我们首先想到的思路就是构建一个新的链表,然后比较两个链表的val值的大小依次插入新链表,这里我们还需要注意几个细节如果其中一个链表是空的那那么我们直接返回另外一个非空的链表我们在比较插入的时候用的是while循环条件就是两个链表都不为空,那么如果一个链表已经结束了,那么我们再后面应该再把另外一条链表插入完。还有一些细节我在我的代码注释中有做标注。2.2代码tructL

LeetCode #1348 Tweet Counts Per Frequency 推文计数

1348TweetCountsPerFrequency推文计数Description:Asocialmediacompanyistryingtomonitoractivityontheirsitebyanalyzingthenumberoftweetsthatoccurinselectperiodsoftime.Theseperiodscanbepartitionedintosmallertimechunksbasedonacertainfrequency(everyminute,hour,orday).Forexample,theperiod[10,10000](inseconds)woul

五道LeetCode《中等难度》的单链表题

五道单链表中等难度题型1.剑指OfferII021.删除链表的倒数第n个结点第一种解法(单指针):第二种解法(栈):第三种解法(双指针):2.删除排序链表中的重复元素II(重点)普通状态特殊状态(头结点重复时)特殊状态(删除尾结点时)3.删除链表中的节点4.重排链表思路一:思路二(寻找链表中点+链表逆序+合并链表)5.剑指OfferII077.链表排序(重点!)1.剑指OfferII021.删除链表的倒数第n个结点题目描述:找到链表的倒数第n个结点,并删除该结点三种解法:第一种解法(单指针):1.遍历链表,求出链表长度L2.链表长度L减去n,就是倒数第n个结点3.找到倒数第n个结点的前驱结点,

leetcode(力扣):203移除链表元素 leetcode(力扣):206反转链表 leetcode(力扣):876.链表的中间结点多种解法

目录203.移除链表元素解法一:将目标元素前一个元素存放地址改为下一元素地址解法二:遍历原链表,把不是val的节点拿出来进行尾插到新链表​编辑解法三:有哨兵位解法->头节点不存储有效数据​编辑206.反转链表方法一:创建新指针​编辑方法一:创建新指针进行反转​编辑方法二:将指针方向颠倒​编辑876.链表的中间结点203.移除链表元素解法一:将目标元素前一个元素存放地址改为下一元素地址structListNode*removeElements(structListNode*head,intval){ structListNode*prev=NULL; structListNode*cur=hea

Leetcode392. 判断子序列

力扣(LeetCode)官网-全球极客挚爱的技术成长平台给定字符串 s 和 t ,判断 s 是否为 t 的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。示例1:输入:s="abc",t="ahbgdc"输出:true示例2:输入:s="axc",t="ahbgdc"输出:false 解题思路:力扣(LeetCode)官网-全球极客挚爱的技术成长平台双指针代码如下:classSolution{publicbooleanisSubsequence(Strings,Stri

KMP算法——(算法竞赛c++实现)

目录1、了解KMP算法;2、普通暴力做法与KMP的区别;2.1、暴力求解:2.2、KMP算法求解3、KMP中有关ne[N]数组的理论;4、构造ne数组5、例题——KMP字符串来喽1、了解KMP算法;首先我们需要了解什么是KMP算法?1、首先这是一个字符串匹配算法,是在暴力(两个for镶套)做法上进行优化从而得到的,与暴力做法相比KMP算法大大减少了时间复杂度;2、KMP算法,它是在1977年由Knuth、Morris、Pratt联合发表,因此取这三位创始人的首字母最终组成KMP这一名字;3、KMP主要思想:拿空间换时间;4、KMP时间复杂度:O(m+n);5、​KMP主要分两步:求next数组

每天一道leetcode:1192. 查找集群内的关键连接(图论&困难&tarjan算法)

今日份题目:力扣数据中心有n台服务器,分别按从0到n-1的方式进行了编号。它们之间以服务器到服务器的形式相互连接组成了一个内部集群,连接是无向的。用connections表示集群网络,connections[i]=[a,b]表示服务器a和b之间形成连接。任何服务器都可以直接或者间接地通过网络到达任何其他服务器。关键连接是在该集群中的重要连接,假如我们将它移除,便会导致某些服务器无法访问其他服务器。请你以任意顺序返回该集群内的所有关键连接。示例1输入:n=4,connections=[[0,1],[1,2],[2,0],[1,3]]输出:[[1,3]]解释:[[3,1]]也是正确的。示例2输入:

代码随想录算法训练营第一天 | LeetCode 704.二分查找、LeetCode 27.移除元素

 代码随想录算法训练营第一天|LeetCode704.二分查找、目录 代码随想录算法训练营第一天|LeetCode704.二分查找、LeetCode27.移除元素1.数组理论基础 1.1什么是数组1.2数组的创建及初始化1.2.1动态初始化:在创建数组时,直接指定数组中元素的个数1.3 数组的使用1.3.1 数组中元素访问[注意事项]:1.3.2 遍历数组1.4 数组是引用类型1.5二位数组1.5.1基本语法1.5.2代码实例2.LeetCode704.二分查找2.1自己的思路2.2易错点2.3思路2.3.1左闭右闭写法:2.3.2代码2.3.3 左闭右开写法:2.3.4代码3.LeetCod

贪心算法基础及leetcode例题

参考理论本质:找到每个阶段的局部最优,然后去推导得到全局最优两个极端:常识&&很难:很多同学通过了贪心的题目,但都不知道自己用了贪心算法,因为贪心有时候就是常识性的推导,所以会认为本应该就这么做!套路:贪心没有套路,说白了就是常识性推导加上举反例做题的时候,只要想清楚局部最优是什么,如果推导出全局最优,其实就够了。贪心算法一般分为如下四步:将问题分解为若干个子问题找出适合的贪心策略求解每一个子问题的最优解将局部最优解堆叠成全局最优解这个四步其实过于理论化了,我们平时在做贪心类的题目很难去按照这四步去思考,真是有点“鸡肋”。Leetcode题目简单题455.分发饼干思路:大饼干喂胃口大的kid,

LeetCode之双指针法

双指针是一种思想或一种技巧并不是特别具体的算法。具体就是用两个变量动态存储两个结点,来方便我们进行一些操作。通常用在线性的数据结构中。三数之和给你一个整数数组nums,判断是否存在三元组[nums[i],nums[j],nums[k]]满足i!=j、i!=k且j!=k,同时还满足nums[i]+nums[j]+nums[k]==0。请你返回所有和为0且不重复的三元组。注意:答案中不可以包含重复的三元组。题解:classSolution{/***思路:*设定:需要找到3个数,a+b+c=0,这里abc三个数的下标从左到右*定义a的下标为i,b的下标为left,c的下标为right*首先,对数组进