草庐IT

leetcode题解

全部标签

CF1656F Parametric MST 题解

为了便于解题,先对\(a\)数组从小到大进行排序。首先,根据定义可以得出总价值的表达式:\[\begin{aligned}W&=\sum\limits_{(u,v)\inE}[a_ua_v+t(a_u+a_v)]\\&=\sum\limits_{(u,v)\inE}a_ua_v+t\sum\limits_{(u,v)\inE}(a_u+a_v)\end{aligned}\]接着,我们需要发现一个比较重要的性质:\(w_{i,j}(t)=a_ia_j+t(a_i+a_j)=(a_i+t)(a_j+t)-t^2\)也就是说,如果固定一个\(t\),那么\(t^2\)就是定值,可以暂不考虑;\(\f

【LeetCode】HOT 100(22)

题单介绍:精选100道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这100道题,你就已经具备了在代码世界通行的基本能力。目录题单介绍:题目:538.把二叉搜索树转换为累加树-力扣(Leetcode)题目的接口:解题思路:代码:过过过过啦!!!!题目:494.目标和-力扣(Leetcode)题目的接口:解题思路:代码:过过过过啦!!!!写在最后:题目:538.把二叉搜索树转换为累加树-力扣(Leetcode)题目的接口:/***Definitionforabinarytreenode.*structTreeNode{*intval;*

二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”

各位CSDN的uu们你们好呀,今天继续数据结构与算法专栏中的二叉树,下面,让我们进入二叉树的世界吧!!!二叉树(上)——“数据结构与算法”_认真学习的小雅兰.的博客-CSDN博客 二叉树链式结构的实现二叉树链式结构的实现求二叉树的高度//求二叉树的高度intBTreeHeight(BTNode*root){ if(root==NULL) { return0; } else { returnBTreeHeight(root->left)>BTreeHeight(root->right) ?BTreeHeight(root->left)+1:BTreeHeight(root->right)

LeetCode第一章数组|977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

977_有序数组的平方题目链接:977.有序数组的平方给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例1:输入:nums=[-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为[16,1,0,9,100]排序后,数组变为[0,1,9,16,100]示例2:输入:nums=[-7,-3,2,3,11]输出:[4,9,9,49,121]解法一:双指针法本题关键就在于要按照非递减的顺序来完成,原数组中是存在负数的,这样平方后的结果大小顺序就会发生变化。首先想到可以采用暴力解法,先全部平方再整体排序,但这种方法时间复

力扣python刷题day03|LeetCode203、707、206

力扣python刷题day03|LeetCode203、707、206LeetCode203:移除链表元素题目方法一:知识点:LeetCode707:设计链表题目方法一:单链表法方法二:双链表法LeetCode206:反转链表题目:方法一:双指针法方法二:递归法知识点:LeetCode203:移除链表元素题目题目链接:203:移除链表元素方法一:classSolution:defremoveElements(self,head:Optional[ListNode],val:int)->Optional[ListNode]:dummy_head=ListNode(next=head)curren

代码随想录算法训练营第一天 | LeetCode 704 二分查找、LeetCode 27 移除元素

704二分查找题目链接:二分查找文章讲解:704.二分查找视频讲解:手把手带你撕出正确的二分法|二分查找法|二分搜索法|LeetCode:704.二分查找_哔哩哔哩_bilibili思路前提:数组为有序数组,数组中无重复元素(看到这个条件可以去想二分法)两种方法:左闭右闭即[left,right],或者左闭右开即[left,right)第一种写法定义target在一个左闭右闭的区间里,[left,right]while(leftif(nums[middle]>target)right要赋值为middle-1,因为当前这个nums[middle]一定不是target,那么接下来要查找的左区间结束

Leetcode 704.二分查找、27.移除元素

文章目录704二分查找:题目链接解题思路:暴力循环:自己的思路二分查找:实现代码:错误解法:题目总结:二分版本一、二的区别:27.移除元素:题目链接解题思路:暴力循环:自己的标记排序:自己的双指针:别人的实现代码:错误解法:题目总结:704二分查找:题目链接解题思路:暴力循环:自己的思路从左往右,遍历每个元素。检查当前元素是否满足要求。若满足要求则返回当前元素的下标。时间复杂度:O(n);空间复杂度:O(n);二分查找:题目给定的是一个升序的数组,即有序数组!那么二分的前提是有序(或者具有某种特殊的性质!)。故可以采用二分。每次二分出来一个中间元素,然后将中间元素和target进行一个比较。若

洛谷 P1122 最大子树和 题解

一道入门的树形DP。首先我们对于数据进行有序化处理,这便于我们利用数据结构特点(可排序性)来发觉数据性质(有序、单调、子问题等等性质),以便于后续的转化、推理和处理。有序化可以“转化和创造”性质首先将视角从无根树切换为有根树,这样我们就可以得到一个带有最优子结构、无后效性、子问题重叠性的结构——一个根和一堆子树。由于我们是要求联通分量的最大值,我们观察到每一个联通分量都可以看做一个有根树,这就保证了树形DP的正确性。(后面会再解释)不难想到令\(f_i\)表示包含该位置的、以\(i\)号节点为根的子树的最大值。这里的“不难想到”其实有两种想法——第一种是树形DP的一般思路就是子啊一棵子树内处理

二叉树(下)+Leetcode每日一题——“数据结构与算法”“对称二叉树”“另一棵树的子树”“二叉树的前中后序遍历”

各位CSDN的uu们你们好呀,今天小雅兰的内容仍然是二叉树和Leetcode每日一题,下面,就让我们进入二叉树的世界吧!!!  这个题目需要重新定义一个函数,函数参数需要有左子树和右子树,题目所给定的函数无法解决问题。bool_isSymmetric(structTreeNode*leftRoot,structTreeNode*rightRoot){//左子树和右子树同时为空if(leftRoot==NULL&&rightRoot==NULL){returntrue;}//一棵树为空,另一棵树不为空if((leftRoot==NULL&&rightRoot!=NULL)||(leftRoot!

算法leetcode|62. 不同路径(rust重拳出击)

文章目录62.不同路径:样例1:样例2:样例3:样例4:提示:分析:题解:rust:go:c++:python:java:62.不同路径:一个机器人位于一个mxn网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?样例1:输入: m=3,n=7 输出: 28样例2:输入: m=3,n=2 输出: 3 解释: 从左上角开始,总共有3条路径可以到达右下角。 1.向右->向下->向下 2.向下->向下->向右 3.向下->向右->向下样例3:输入: m=7,n=3 输出: 2