草庐IT

LeetCode刷题之树

全部标签

LeetCode 0070. 爬楼梯:动态规划(递推)

【LetMeFly】70.爬楼梯:动态规划(递推)力扣题目链接:https://leetcode.cn/problems/climbing-stairs/假设你正在爬楼梯。需要n 阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例1:输入:n=2输出:2解释:有两种方法可以爬到楼顶。1.1阶+1阶2.2阶示例2:输入:n=3输出:3解释:有三种方法可以爬到楼顶。1.1阶+1阶+1阶2.1阶+2阶3.2阶+1阶 提示:1方法一:动态规划(递推)第iii阶楼梯可以由第i−1i-1i−1阶或i−2i-2i−2阶楼梯而来,因此只需要将相邻两阶的方案数加起来,就能得到

【刷题】 leetcode 2 .两数相加

两数相加两数相加1思路一(暴毙版)2思路二(本质出发)谢谢阅读Thanks♪(・ω・)ノ下一篇文章见!!!!!!两数相加我们来看看题目,,,,往往困难的题只需要简单的叙述。好像只用找到两个数,整合成一个链表就可以。应该1思路一(暴毙版)首先我最快想到思路是分别根据两个链表求出对应数然后加一起,得到和再把和拆分储存到链表里为此我们需要手撕一下链表头插。typedefstructListNodeSLTNode;SLTNode*buynode(intn){ //开辟空间SLTNode*node=(SLTNode*)malloc(sizeof(SLTNode));node->next=NULL;nod

leetcode第206题反转链表❤

一:题目:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例1:输入:head=[1,2,3,4,5]输出:[5,4,3,2,1]题目链接:力扣(LeetCode)官网-全球极客挚爱的技术成长平台二:解题思路 这道题我们可以用迭代或递归地反转链表。但是这个题更加适合迭代的方法去做。所以我们应该有的一个思维是三个指针立方向。 首先,我们要设置三个变量(这里的变量不要随便设,我们可以从前到后设置n1,n2,n3)反转链表我们只需要两个就行了,但是我们就找不到3了所以需要第三个变量,例如下面的图片但是仅仅分析到这里还是不够的,我们需要将新的next指向NULL,所以我们需要将n1

【Leetcode】移除后集合的最多元素数

目录💡题目描述💡思路💡总结100150.移除后集合的最多元素数💡题目描述给你两个下标从0开始的整数数组nums1和nums2,它们的长度都是偶数n。你必须从nums1中移除n/2个元素,同时从nums2中也移除n/2个元素。移除之后,你将nums1和nums2中剩下的元素插入到集合s中。返回集合s可能的最多包含多少元素。💡思路这道题是求两个数组nums1和nums2各移除长度的一半元素后,剩余元素组成的集合s可能包含的最大元素数量。主要思路是:1. 将nums1和nums2中的元素分别放入两个无序集set1和set2中,统计两个集合的大小n1和    n2,以及公共元素数量common2. 计

Leetcode的AC指南 —— 字符串/KMP:28.找出字符串中第一个匹配项的下标

摘要:Leetcode的AC指南——字符串/KMP:28.找出字符串中第一个匹配项的下标。题目介绍:给你两个字符串haystack和needle,请你在haystack字符串中找出needle字符串的第一个匹配项的下标(下标从0开始)。如果needle不是haystack的一部分,则返回-1。文章目录一、题目二、解析(go)1、一个简单的AC方法2、KMP算法:直接使用前缀表作为next数组三、其他语言版本JavaC++Python一、题目题目介绍:给你两个字符串haystack和needle,请你在haystack字符串中找出needle字符串的第一个匹配项的下标(下标从0开始)。如果nee

leetcode刷题记录11(2023-06-30)【最大正方形(二维动态规划) | 翻转二叉树(二叉树递归) |二叉树的最近公共祖先(二叉树后序遍历) | 除自身以外数组的乘积(前缀/后缀乘积)】

221.最大正方形在一个由‘0’和‘1’组成的二维矩阵内,找到只包含‘1’的最大正方形,并返回其面积。示例1:输入:matrix=[[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,“1”,“1”],[“1”,“0”,“0”,“1”,“0”]]输出:4示例2:输入:matrix=[[“0”,“1”],[“1”,“0”]]输出:1示例3:输入:matrix=[[“0”]]输出:0提示:m==matrix.lengthm==matrix.lengthm==matrix.lengthn==matrix[i].lengthn==matri

蓝桥杯第20天(Python)(疯狂刷题第3天)

题型:1.思维题/杂题:数学公式,分析题意,找规律2.BFS/DFS:广搜(递归实现),深搜(deque实现)3.简单数论:模,素数(只需要判断到 int(sqrt(n))+1),gcd,lcm,快速幂(位运算移位操作),大数分解(分解为质数的乘积)4.简单图论:最短路(一对多(Dijstra,临接表,矩阵实现),多对多(Floyd,矩阵实现)),最小生成树(并查集实现)5.简单字符串处理:最好转为列表操作6.DP:线性DP,最长公共子序列,0/1背包问题,最长连续字符串,最大递增子串7.基本算法:二分,贪心,组合,排列,前缀和,差分8.基本数据结构:队列,集合,字典,字符串,列表,栈,树9.

力扣刷题篇之《空白替换》

前言❤️铁汁们大家好,欢迎大家来到出小月的博客里,今天小月呢写了一道题目叫替换空格,但是呢,写完之后调试了半天不知道哪里错了,经过小月的坚持不懈,终于成功,来分享给大家小月的错误,希望大家看完我这篇文章都能够“涨芝士”,感觉小月写的还不错的话,记得👍🏻点赞加关注😘鼓励一下博主哦,不然下次可找不到我啦❗❗作者简介❤️作者的主页:出小月的《程序员历险记》❤️专栏:《C语言》,《数据结构初阶》😊希望大家都能够:好好学习,天天编程❗❗❗文章目录前言作者简介一、题目介绍二、题目链接三、小月的思路四、小月出现的错误错误1错误2五、正确代码总结一、题目介绍🐻请实现一个函数,把字符串s中的每个空格替换成"%2

【刷题】leetcode 1 . 两数之和

两数之和两数之和1思路一(简单突破)2思路二(进行优化)3思路三(哈希表我还不会)谢谢阅读Thanks♪(・ω・)ノ下一篇文章见!!!两数之和题目链接1思路一(简单突破)最简单的思想:遍历从头开始逐个遍历。首先选定加数1然后寻找加数2,如果两者之和满足条件target。返回相应下标即可!int*twoSum(int*nums,intn,inttarget,int*returnSize){for(inti=0;in;i++){//加数1从头开始for(intj=i+1;jn;j++){//加数2从加数1后一位开始if(nums[i]+nums[j]==target){//满足条件即可返回对应下标

成为一个合格程序员所必备的三种常见LeetCode排序算法

排序算法是一种通过特定的算法因式将一组或多组数据按照既定模式进行重新排序的方法。通过排序,我们可以得到一个新的序列,该序列遵循一定的规则并展现出一定的规律。经过排序处理后的数据可以更方便地进行筛选和计算,从而大大提高了计算效率。因此,掌握排序算法是每个程序员的基本功之一。今天我们将详细讲解一些与冒泡排序、快速排序和插入排序相关的leetcode真题。冒泡排序字如其名,冒泡排序是一种算法,它类似于水中的泡泡逐渐上升,通过逐轮比较和交换,最终使每个元素按照顺序排列。看一下今天的题目:给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。请注意,必须在不复制数组的情