草庐IT

LeetCode刷题之树

全部标签

【算法刷题】第二篇——链表(一)

 个人简介: >📦个人主页:赵四司机>🏆学习方向:JAVA后端开发 >📣种一棵树最好的时间是十年前,其次是现在!>🔔博主推荐网站:牛客网 刷题|面试|找工作神器>💖喜欢的话麻烦点点关注喔,你们的支持是我的最大动力。前言:最近有不少小伙伴私信博主问我马上到秋招了,而自己平时没怎么练过算法,在算法这一块存在很大的弱势,应该怎么快速提升自己的算法水平。在这里我首先要说的是算法能力并不是可以快速掌握的,这需要慢慢积累,因为算法不仅考验我们的知识记忆深度,还考验我们的思维广度,因此很多很多大厂面试都会注重算法的考核。其实博主一开始也没怎么练过算法题,但是对于中等简单的算法题还是可以通过一段时间的刷题来习

力扣算法刷题Day44|动态规划:完全背包问题 零钱兑换II 组合总和Ⅳ

力扣题目:#518.零钱兑换II(完全背包组合问题)刷题时长:7min解题方法:动态规划(完全背包)复杂度分析时间复杂度:O(mn),其中m是amount,n是coins的长度空间复杂度:O(m)问题总结对递推公式的理解本题收获题意转换:纯完全背包是凑成背包最大价值是多少,而本题是要求凑成总金额的物品组合个数动规思路确定dp数组及下标的含义:凑成总金额j的货币组合数为dp[j]确定递推公式:dp[j]+=dp[j-coins[i]]反向思考递推,当有coins[i]时,就有dp[j-coins]种方法,因为此时凑成目标和的方法解即为j+coins[i],而方法数量不变dp数组的初始化:dp[0

算法刷题Day 15 二叉树的层序遍历+翻转二叉树+对称二叉树

Day15二叉树102.二叉树的层序遍历层序遍历二叉树需要借助到队列classSolution{public:vectorvectorint>>levelOrder(TreeNode*root){if(root==nullptr)return{};queueTreeNode*>que;vectorvectorint>>rst;que.push(root);TreeNode*cur;while(!que.empty()){intlen=que.size();vectorint>level;while(len--){cur=que.front();que.pop();level.push_back

C语言刷题之动态规划入门(一)

目录1.动态规划算法2.跳跃游戏(一)    1.题目    2.初步分析    3.代码实现3.跳跃游戏(二)        1.题目    2.初步分析    3.代码实现1.动态规划算法    动态规划(英语:Dynamicprogramming,简称DP),是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题。简单来说,动态规划就是把给定的问题拆分成一个个子问题,直到子问题可以直接解决,和递归不同的是,动态规划可以将子问题的答案储存起来,减少重复计算,大大减少了时

LeetCode35.搜索插入位置

//个人学习笔记用题目:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为O(logn)的算法。参考题解--代码随想录暴力解法:classSolution{public:intsearchInsert(vector&nums,inttarget){ for(inti=0;i=target){ returni; } } returnnums.size();}};//解析:他是要返回位置,所以可以不用插入数据,直接返回位置即可二分解法classSolution{public: intsearchInsert

刷题日记01:序列化和反序列化二叉树

一.概念理解:题目如下:https://leetcode.cn/problems/xu-lie-hua-er-cha-shu-lcof/何为序列化?序列化我们可以理解为层序遍历的结果,即将所有的结点的信息,按照层序遍历的结果拼接到一个字符串中,但是与一般的层序遍历有所不同的是:序列化要输出所有的结点信息,而层序遍历一般不会对null结点进行输出。如下:二.解决思路:1.序列化:既然与层序遍历存在相同之处,那么解决思路同样存在相同之处了:我们解决层序遍历的题目时,一般利用辅助队列空间,即创建一个存放结点的LinkedList,判断当前结点是否非空,不为空则加入到队列中,同时设置一个计数器:不断记

【LeetCode】HOT 100(23)

题单介绍:精选100道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这100道题,你就已经具备了在代码世界通行的基本能力。目录题单介绍:题目:448.找到所有数组中消失的数字-力扣(Leetcode)题目的接口:解题思路:代码:过过过过啦!!!!题目:438.找到字符串中所有字母异位词-力扣(Leetcode)题目的接口:解题思路:代码:过过过过啦!!!!写在最后:题目:448.找到所有数组中消失的数字-力扣(Leetcode)题目的接口:classSolution{public:vectorfindDisappearedNumber

GitHub Copilot实战 Leetcode和Alpha Vantage API获取股票数据

GitHubCopilot可以提升编码速度25%。需要在visualstudiocode添加插件GitHubCopilot1.BasePython创建数组和Personclass#Createalistof100numbers.numbers=[iforiinrange(100)]defget_even_numbers(numbers):"""Returnalistofevennumbersfromthegivenlist."""return[iforiinnumbersifi%2==0]even_numbers=get_even_numbers(numbers)odd_numbers=[if

【算法|动态规划系列No.5】leetcode62. 不同路径

个人主页:平行线也会相交欢迎点赞👍收藏✨留言✉加关注💓本文由平行线也会相交原创收录于专栏【手撕算法系列专栏】【LeetCode】🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮助🍓希望我们一起努力、成长,共同进步。点击直接跳转到该题目目录题目描述🍬算法原理🎂代码实现🥣题目描述🍬一个机器人位于一个mxn网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?示例一:输入:m=3,n=7输出:28示例二:输入:m=3,n=2输出:3解释:从左上角开始,

【LeetCode】动态规划 刷题训练(九)

文章目录环绕字符串中唯一的子字符串题目解析状态转移方程返回值完整代码最长递增子序列子数组与子序列的区别状态转移方程完整代码摆动序列题目解析状态转移方程f[i]状态转移方程g[i]状态转移方程完整代码环绕字符串中唯一的子字符串点击查看:467.环绕字符串中唯一的子字符串定义字符串base为一个“abcdefghijklmnopqrstuvwxyz”无限环绕的字符串,所以base看起来是这样的:“…zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd…”.给你一个字符串s,请你统计并返回s中有多少不同非空子串也在base中出现。示例1: