程序开发--算法与数据结构
文章平均质量分 92
LegendBIT
这个作者很懒,什么都没留下…
展开
-
图片双线性插值原理解析与代码 Python
图片插值是图片操作中最常用的操作之一。为了详细解析其原理,本文以 3×3 图片插值到 5×5 图片为例进行解析。原创 2024-01-11 23:05:27 · 1447 阅读 · 0 评论 -
leetcode滑动窗口问题总结 Python
滑动窗口是一类比较重要的解题思路,一般来说我们面对的都是非定长窗口,所以一般需要定义两个指针 left 和 right,分别用来限制窗口的左边界和右边界。在解题时一般需要设定两个嵌套的循环,外循环不设定条件,完全是遍历模式,驱动右指针的移动;内循环需要设定条件,在满足条件的情况下,驱动左指针的移动。整体实现滑动窗口的向右移动。外循环虽然没有设定条件,但其实存在隐藏的条件就是不满足内循环所设定的条件时运行。在这个框架下,我们可以增加对窗口长度和数据的记录,进而实现丰富的功能。原创 2024-01-09 15:15:24 · 1110 阅读 · 0 评论 -
leetcode动态规划问题总结 Python
如果第 i-1 数字为 1,那 dp[i] == dp[i-1] + dp[i-2];本题采用二维 dp 作为中间存储数据结构,dp[i,j] 表示 s[i] 到 s[j] 是否为回文字符串,主对角线表示每个单独的字符均为长度 1 的回文字符,如果首尾两个元素相等,中间部分也是回文字符串,那当前字符串也为回文字符串,所以递推公式为 dp[i,j] = dp[i+1,j-1] and s[i]==s[j],从递推公式可以得到遍历输出是 i 从大到小 j 从小到大,至此可以获取任意字符串是否为回文字符串。原创 2024-01-07 18:52:37 · 1114 阅读 · 0 评论 -
leetcode双指针问题总结 Python
这两个思路都需要解决同一个问题即怎么判断两个 node 是同一个 node,leetcode 原生代码是推荐使用 == 运算法直接判断,但是这样判断只能说明两个 node 的值相等,不能保证是同一个 node,所以还是推荐使用 id() 函数比较 node 的地址。合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。给你一个字符串 s,最多可以从中删除一个字符。输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3。原创 2024-01-04 10:31:57 · 1015 阅读 · 0 评论 -
leetcode回溯问题总结 Python
每次分割都可以看做一个选择,所以本问题依然是不定数量的选择问题,所以本问题用回溯来实现分割,但与之前回溯不一样的是,本问题在调用回溯函数时,需要完成两个数值的选择,之前的应用都是仅仅完成一个数值的选择(其实本质上没有区别)。该问题看起来与有重复元素的子集问题极为相似,都是遍历的每个路径都需要保存,都是包含重复元素,都是需要去除重复子集,但是实际解法有些不同,原因是该问题不能首先排序,因为排序会打乱原有的顺序,而本问题需要提取非递减序列。回溯算法是在递归思想的基础上制定的算法框架,用于解决一类问题。原创 2024-01-02 16:17:30 · 985 阅读 · 0 评论 -
leetcode深度优先搜索和广度优先搜索总结 Python
访问完右分支后,退回到最初根节点的上一级节点,再访问右分支。迭代法的思路其实是以层作为粒度,弹出一层的所有节点,然后放进去下面一层的所有节点,这里需要在注意的是在 que 中我们是无法区分两个节点是否来自于同一层的,所以在编程时,需要实现获取一层的长度。递归法就是函数在函数实现中调用函数本身,但函数实现中还需要增加调用终止条件,在函数实现中可以先假定函数已经实现,所以在考虑一个根节点和两个子节点时,可以直接调用函数本身实现两个子节点的遍历,函数实现中仅仅考虑根节点的遍历和终止条件即可,编程思路一目了然。原创 2024-01-03 16:40:06 · 1147 阅读 · 0 评论