草庐IT

环形链表-力扣

一、题目描述题目链接:力扣(LeetCode)官网-全球极客挚爱的技术成长平台 二、题解 解题思路:快慢指针,即慢指针一次走一步,快指针一次走两步,两个指针从链表起始位置开始运行,如果链表带环,则一定会在环中相遇,否则快指针率先走到链表的末尾。扩展: 1、为什么快指针每次走两步,慢指针走一步可以?假设链表带环,两个指针最后都会进入环,快指针先进环,慢指针后进环。当慢指针刚进环时,可能就和快指针相遇了,最差情况下两个指针之间的距离刚好就是环的长度。此时,两个指针每移动一次,之间的距离就缩小一步,不会出现每次刚好是套圈的情况,因此:在慢指针走到一圈之前,快指针肯定是可以追上慢指针的,即相遇。 2、

环形链表 II(力扣142)(快慢指针)

142.环形链表—力扣题目描述:给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索引从0开始)。如果pos是-1,则在该链表中没有环。注意:pos不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改链表。示例1:输入:head=[3,2,0,-4],pos=1输出:返回索引为1的链表节点解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head=[1,2],pos=0输

力扣第55题 跳跃游戏 c++ 贪心 + 覆盖 加暴力超时参考

题目55.跳跃游戏中等相关标签贪心  数组  动态规划给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。示例 1:输入:nums=[2,3,1,1,4]输出:true解释:可以先跳1步,从下标0到达下标1,然后再从下标1跳3步到达最后一个下标。示例 2:输入:nums=[3,2,1,0,4]输出:false解释:无论怎样,总会到达下标为3的位置。但该下标的最大跳跃长度是0,所以永远不可能到达最后一个下标。提示:10思路和解题方法首先,我们维护一

力扣:611. 有效三角形的个数

今日为大家分享一道力扣611有效三角形的个数!本文将会为大家为大家讲解题目,然后算法思路,最后再进行代码的实现!希望看完本文能对读者有一定的收获!一、题目描述通过题目的描述可以看出,意思是给定一个数组,然后观察数组中能元素组成三角形的个数!题目上面那个例题可以看出,不同位置相同的数组也算不同的情况!二、算法解析+代码!相信不少小伙伴一看到本题,想到的大多都是暴力法!即:依次遍历,然后统计每次的数据是否能组成三角形!这样的解法是没毛病,但是放在力扣里面,其时间复杂度是很大可能是通不过的!下面我就来为大家写一下这种暴力枚举的算法代码!(在进行暴力枚举之前,可以将数组排成有序的!方便我们后边的暴力枚

力扣在线OJ——栈和队列

目录🍁一、用两个队列实现栈🌕(一)、题目(力扣链接:用队列实现栈 )🌕(二)、注意🌕(三)、解答⭐️1.注意事项⭐️2.第一个接口——匿名结构体⭐️3.第二个接口——MyStack*myStackCreate()⭐️4.第三个接口——voidmyStackPush(MyStack*obj,intx)⭐️5.第四个接口——intmyStackPop(MyStack*obj)⭐️6.第五个接口——intmyStackTop(MyStack*obj)⭐️7.第六个接口——boolmyStackEmpty(MyStack*obj)⭐️8.第七个接口——voidmyStackFree(MyStack*o

【LeetCode力扣】42. 接雨水

目录1、题目介绍2、解题思路2.1、暴力破解法2.2、双指针法  1、题目介绍原题链接: 42.接雨水-力扣(LeetCode) 示例1: 输入:height=[0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组[0,1,0,2,1,0,1,3,2,1,2,1]表示的高度图,在这种情况下,可以接6个单位的雨水(蓝色部分表示雨水)。  示例2:输入:height=[4,2,0,3,2,5]输出:9 提示:n==height.length102、解题思路2.1、暴力破解法首先看到这题的第一反应就是,通过每层遍历去找出蓝色块(即水块)。只要找到每一层的边界,再通过右边界rig

最小路径和-力扣64-java 动态规划

一、题目描述给定一个包含非负整数的mxn网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例1:输入:grid=[[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径1→3→1→1→1的总和最小。示例2:输入:grid=[[1,2,3],[4,5,6]]输出:12来源:力扣(LeetCode)链接:https://leetcode.cn/problems/minimum-path-sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。二、运行结果三、解题思路采用动态规划的思想,定义一个和原矩阵

【算法-动态规划】最长上升子序列-力扣 300

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。推荐:kuan的首页,持续学习,不断总结,共同进步,活到老学到老导航檀越剑指大厂系列:全面总结java核心技术点,如集合,jvm,并发编程redis,kafka,Spring,微服务,Netty等常用开发工具系列:罗列常用的开发工具,如IDEA,Mac,Alfred,electerm,Git,typora,apifox等数据库系列:详细总结了常用数据库mysql技术点,以及工作中遇到的mysql问题等懒人运维系列:总结好用的命令,解放双手

【LeetCode力扣】189 53 轮转数组 | 最大子数组和

目录1、189.轮转数组1.1、题目介绍1.2、解题思路2、53.最大子数组和2.1、题目介绍2.2、解题思路 1、189.轮转数组1.1、题目介绍原题链接:189.轮转数组-力扣(LeetCode)​示例1:输入:nums=[1,2,3,4,5,6,7],k=3输出:[5,6,7,1,2,3,4]解释:向右轮转1步:[7,1,2,3,4,5,6]向右轮转2步:[6,7,1,2,3,4,5]向右轮转3步:[5,6,7,1,2,3,4]示例 2:输入:nums=[-1,-100,3,99],k=2输出:[3,99,-1,-100]解释: 向右轮转1步:[99,-1,-100,3]向右轮转2步:[