刷题随笔
文章平均质量分 53
qq_34987437
这个作者很懒,什么都没留下…
展开
-
树相关算法
上述为递归的方式,下方为非递归方式。原创 2021-12-20 16:48:06 · 105 阅读 · 0 评论 -
算法题小结
建立k个数大小的小顶堆,用数组保存,则第k大的数为小顶堆的第一个数。 用数组存储小顶堆,当下标是i,则其左元素为2*i+1,右元素为2*i+2。 当建堆时从非叶子结点开始,即最后一个元素k-1的父结点,根据左右元素规律,可以推出其父结点为k为偶数时(k-1为奇数)k/2-1,k为偶数时k/2-3/2,所以非叶子结点的下标为k/2-1。 时间复杂度,建堆的复杂度为klogk,后续移动为(n-k)logk,所以时间复杂度为nlogk 空间复杂度,因为有递归栈存储空间,所以为logk。 ...原创 2021-12-04 21:14:08 · 264 阅读 · 0 评论 -
动态规划学习总结
本文结合 代码随想录 + leetcode官方解答,做了学习和总结,仅个人记录学习。 代码随想录网址代码随想录 动态规划大致分为以下几个问题: 1.基础动态规划 2.背包问题 3.打家劫舍 4.股票问题 5.子序列问题 1.基础动态规划 基础使用场景:多为计算最少个数,返回一般为一个整数 解决基本思路: 1考虑前一个状态和该状态的影响关系(递推公式) 2注意起始状态(初始化) 3考虑遍历时需要的基础存储量(如数组,变量),决定了循环的层数 2.背包问题 2.1 01背包问题 ..原创 2021-11-19 22:50:04 · 750 阅读 · 0 评论 -
对称二叉树:BFS、DFS、递归解答
题目详见:https://leetcode-cn.com/problems/symmetric-tree/description/ 二叉树结构定义 // Definition for a binary tree node. struct TreeNode { int val; TreeNode *left; TreeNode *right; ...原创 2018-07-02 10:42:10 · 351 阅读 · 0 评论