Halo,这里是Ppeua。平时主要更新C语言,C++,数据结构算法......感兴趣就关注我吧!你定不会失望。🌈个人主页:主页链接🌈算法专栏:专栏链接 我会一直往里填充内容哒!🌈LeetCode专栏:专栏链接 目前在刷初级算法的LeetBook。若每日一题当中有力所能及的题目,也会当天做完发出🌈代码仓库:Gitee链接🌈点击关注=收获更多优质内容🌈目录题目:戳气球题解:代码实现:完结撒花因为一些事,最近状态不是很好,加上今天的每日一题有点难,看的烦躁(就是菜,就来更新一下今天与每日一题相关的区间Dp问题(戳气球),这篇也是关于区间Dp的问题uu可以看看 话不多说,开始! 题
【LetMeFly】1824.最少侧跳次数力扣题目链接:https://leetcode.cn/problems/minimum-sideway-jumps/给你一个长度为 n 的 3跑道道路 ,它总共包含 n+1 个 点 ,编号为 0 到 n 。一只青蛙从 0 号点第二条跑道 出发 ,它想要跳到点 n 处。然而道路上可能有一些障碍。给你一个长度为n+1 的数组 obstacles ,其中 obstacles[i] (取值范围从0到3)表示在点i 处的 obstacles[i] 跑道上有一个障碍。如果 obstacles[i]==0 ,那么点 i 处没有障碍。任何一个点的三条跑道中 最多有一个
目录栈和队列的区别:栈实现队列:题目描述:示例:画图解释:代码实现:队列实现栈:题目描述:示例:解法一:双队列实现栈代码实现:解法二:单队列实现栈代码实现:栈和队列的区别:队列和栈是两种不同的数据结构。它们有以下区别:(1)操作的名称不同。队列的插入称为入队,队列的删除称为出队。栈的插入称为进栈,栈的删除称为出栈。(2)可操作的方式不同。队列是在队尾入队,队头出队,即两边都可操作。而栈的进栈和出栈都是在栈顶进行的,无法对栈底直接进行操作。(3)操作的方法不同。队列是先进先出(FIFO),即队列的修改是依先进先出的原则进行的。新来的成员总是加入队尾(不能从中间插入),每次离开的成员总是队列头上(
🍎道阻且长,行则将至。🍓🌻算法,不如说它是一种思考方式🍀算法专栏:👉🏻123一、🌱剑指Offer58-II.左旋转字符串题目描述:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。来源:力扣(LeetCode)难度:简单提示:1示例1:输入:s=“abcdefg”,k=2输出:“cdefgab”🌴解题1.直接使用字符串的substring就是直接截取前后子字符串拼接即可:classSolution{publicStringreverseLeft
特定方法KMP算法:字符串匹配逆波兰表达式:计算值斐波那契数:动态规划强制类型转换:整型->字符串:to_string,字符串->整型:stoi一、数组数组:下标从0开始,内存地址空间连续(所以数组元素只能覆盖,不能删除),C++中二维数组地址也连续vector:底层是数组,但本身是容器,内存也是连续的,与数组不同的是,vector可以动态扩展1.二分查找(704)二分查找的前提:数组有序且无重复元素二分查找关键点是循环不变原则,即while循环中每次边界处理坚持根据区间定义classSolution{public:intsearch(vector&nums,inttarget){intlef
目录Day02:977.有序数组的平方,209.长度最小的子数组,59.螺旋矩阵II977.有序数组的平方方法一:暴力排序法方法二:双指针法209.长度最小的子数组方法一:暴力解法方法二:滑动窗口(双指针的思路)59.螺旋矩阵II数组总结篇二分法双指针法滑动窗口模拟行为Day02:977.有序数组的平方,209.长度最小的子数组,59.螺旋矩阵II977.有序数组的平方【题目建议】:本题关键在于理解双指针思想【随想录文章讲解】【卡哥视频讲解】方法一:暴力排序法**思路:**先对数组中每个数进行平方运算,然后再排序classSolution{public:vectorint>sortedSqua
个人简历:全栈领域新星博主,万粉博主、帮助初学者入门,记录自己的学习过程个人主页:天寒雨落的博客_CSDN博客-C,CSDN竞赛,python领域博主热门专栏:初学者入门C语言_天寒雨落的博客-CSDN博客 目录动态规划整数拆分题目思路代码执行结果动态规划其基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解,经分解得到子问题往往不是互相独立的,举个简单的例子:你知道两个1相加等于2,问你三个1相加你是拿前面的两个1相加的结果加上1呢,还是再用1+1+1,你肯定会用前面的那种方法对吧,这就是动态规划,(1+1)就是(1+1+1)的子问题,且并不是相互独立
代码随想录算法训练营第六天|454.四数相加II,383.赎金信,15.三数之和,18.四数之和。454.四数相加II383.赎金信15.三数之和18.四数之和454.四数相加II题目链接:454.四数相加II,难度:中等【实现代码】classSolution{public:intfourSumCount(vectorint>&nums1,vectorint>&nums2,vectorint>&nums3,vectorint>&nums4){intn=nums1.size();intresult=0;unordered_mapint,int>m;intsum;for(inti=0;in;i++
977.有序数组的平方题目链接:力扣思路:同样使用双指针的方法,这样就可以只遍历一次原数组。可以考虑需要按照一个顺序来遍历,那就是从大到小或者从小到大,我选择的是从大到小。不难看出,原数组将每个数平方后,呈现从两边到中间逐渐减小的规律。所以使用一个指针指向原数组最左端,一个指向最右端,比较那边的数大,就是原数组中最大的数。我们新建一个数组,用来存放已经排好序的数组,按照从大到小放数据应该是从数组尾开始放。时间复杂度:o(n)classSolution{public:vectorsortedSquares(vector&nums){//这个个地方用.size()函数来求数组的长度,注意是vect
系列:贪心算法语言:java题目来源:Leetcode55.跳跃游戏题目给定一个非负整数数组nums,你最初位于数组的第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。示例1:输入:nums=[2,3,1,1,4]输出:true解释:可以先跳1步,从下标0到达下标1,然后再从下标1跳3步到达最后一个下标。示例2:输入:nums=[3,2,1,0,4]输出:false解释:无论怎样,总会到达下标为3的位置。但该下标的最大跳跃长度是0,所以永远不可能到达最后一个下标。约束条件:10思路:贪心思路:依次寻找最大的数值范围(从始至终都是以开头为标准点进行衡量