算法沉淀——动态规划之子数组、子串系列01.最大子数组和02.环形子数组的最大和03.乘积最大子数组04.乘积为正数的最长子数组长度01.最大子数组和题目链接:https://leetcode.cn/problems/maximum-subarray/、给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。示例1:输入:nums=[-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组[4,-1,2,1]的和最大,为6。示例2:输入:nums=[1]输出:1示例3:输入:nums=[5,4,-1,7,8
动态规划之简单多状态dp问题01.买卖股票的最佳时机含冷冻期02.买卖股票的最佳时机含手续费03.买卖股票的最佳时机III04.买卖股票的最佳时机IV01.买卖股票的最佳时机含冷冻期题目链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/给定一个整数数组prices,其中第prices[i]表示第*i*天的股票价格。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):卖出股票后,你无法在第二天买入股票(即冷冻期为1天)。**注意:**你不能同时
目录LeetCode239. 滑动窗口最大值文章讲解:代码随想录(programmercarl.com)视频讲解:单调队列正式登场!|LeetCode:239.滑动窗口最大值_哔哩哔哩_bilibili思路LeetCode347.前 K 个高频元素文章讲解:代码随想录(programmercarl.com)视频讲解:手把手带你学会操作链表|LeetCode19.删除链表的倒数第N个节点_哔哩哔哩_bilibili思路总结LeetCode239. 滑动窗口最大值文章讲解:代码随想录(programmercarl.com)视频讲解:单调队列正式登场!|LeetCode:239.滑动窗口
文档讲解:代码随想录视频讲解:《代码随想录》算法公开课-跟着Carl学算法LeetCode977.有序数组的平方题目链接:977.有序数组的平方思路:拿到这道题第一想法是利用暴力解法,先循环遍历对给定数组中的每个元素进行平方,然后再利用双层for循环遍历把数组中的元素按递增顺序进行依次排序,很明显这种解法代码运行效率极低。classSolution{publicint[]sortedSquares(int[]nums){//给定递增排序数组返回每个数字的平方同时要求也是按照递增排序//1.遍历数组中的元素for(inti=0;inums.length;i++){//2.元素平方//3.组成新数
😀大家好,我是白晨,一个不是很能熬夜😫,但是也想日更的人✈。如果喜欢这篇文章,点个赞👍,关注一下👀白晨吧!你的支持就是我最大的动力!💪💪💪文章目录🍊前言🍋贪心算法经典题目🌸1.分割平衡字符串🌹2.买卖股票的最佳时机🌺3.跳跃游戏🌻4.多机调度问题🌼5.活动选择🌷6.最多可以参加的会议数目🌱7.无重叠区间🍍总结🍊前言观前提示:此文章需要一定贪心算法的基础。大家好呀,我是白晨🧐。贪心算法算是一种比较耳熟能详的算法,只要求出局部最优解就可以得到整体的最优解,而且面试很喜欢出这种问题。但是,贪心算法其实并不好想,特别是有些问题比较绕的时候,你可能根本就想不到贪心算法。动态规划这个算法是从整体出发求整体
题目来源460.LFU缓存-力扣(LeetCode)题目描述请你为 最不经常使用(LFU)缓存算法设计并实现数据结构。实现LFUCache类:LFUCache(intcapacity)-用数据结构的容量capacity初始化对象intget(intkey)-如果键key存在于缓存中,则获取键的值,否则返回-1。voidput(intkey,intvalue)-如果键key已存在,则变更其值;如果键不存在,请插入键值对。当缓存达到其容量capacity时,则应该在插入新项之前,移除最不经常使用的项。在此问题中,当存在平局(即两个或更多个键具有相同使用频率)时,应该去除最久未使用的键。为了确定最不
算法沉淀——栈01.删除字符串中的所有相邻重复项02.比较含退格的字符串03.基本计算器II04.字符串解码05.验证栈序列栈(Stack)是一种基于先进后出(LastIn,FirstOut,LIFO)原则的数据结构。栈具有两个主要的操作:压栈(Push):将元素添加到栈的顶部。出栈(Pop):从栈的顶部移除元素。栈常常用于需要反转操作顺序的场景,或者在需要记录操作历史的情况下。在算法中,栈的应用广泛,以下是一些典型的栈算法:括号匹配问题:使用栈来检查表达式中的括号是否匹配,例如检查()、[]、{}是否正确嵌套。逆波兰表达式求值:通过栈来实现对逆波兰表达式的求值,其中操作数和操作符都存储在栈中
刷题题目描述思路一(暴力递归版)思路二(妙用内存版)思路三(快速乘法版)思路四(构造巧解版)Thanks♪(・ω・)ノ谢谢阅读!!!下一篇文章见!!!题目描述根据题目描述,会有两个主要难点:1如何控制遍历,2如何计算。因为我们不能使用forwhileifelseswitchcase等关键字,对于如何实现1到n的遍历就显得十分困难。对此想出的策略有类构造函数,递归两种办法。如何计算注意规避掉公式法就好。思路一(暴力递归版)首先我们想到使用递归来实现:我们遇到的首要问题就是如何成功遍历:递归不难,但是如何保证遍历范围是1到n呢。这里使用短路处理在函数中,如果与运算成立,则继续,否则终止函数直接返回
首先看动态规划的三要素:重叠子问题、最优子结构和状态转移方程。重叠子问题:存在大量的重复计算最优子结构:状态转移方程:当前状态转移成以前的状态动态规划的解题步骤主要有:确定dp数组以及下标的含义状态转移方程、递推公式dp数组初始化、遍历顺序写代码验证直接看实际的算法题1.LeetCode70.爬楼梯假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢?示例1:输入:n=2输出:2解释:有两种方法可以爬到楼顶。1.1阶+1阶2.2阶实际上就是斐波那契算法,我们按最后一次爬楼梯的情形:只有爬1个或者2个台阶,如下图:所以状态转移方程就是f(n)=f
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846文章目录1.法一,下标填充2.法二:数学除法和取余1.法一,下标填充代码:时间复杂度O(r*c).除题目要求外,算法本身没有需要额外空间,空间复杂度O(1)classSolution{publicint[][]matrixReshape(int[][]mat,intr,intc){intmatR=mat.length,matC=mat[0].length