| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> leetcode解题常见思路 -> 正文阅读 |
|
[数据结构与算法]leetcode解题常见思路 |
(梳理框架主要由up主提供) 前言
双指针双指针常用于数组、链表两种线性表(有序)数据结构相关的题,具体又分为
881. 救生艇 二分法常用于有序数组,取中点二分后按一定规则只取其中一边再继续二分,多用于查数 704. 二分查找 滑动窗口常用于连续子序列的长度、统计量例如总和、计数等最优值问题 209. 长度最小的子数组 递归★递归是指一个函数在运行时调用自己,框架如下
递归有时不是直接的最优解题方法,但却是最基本、一定能解题的思想。 分治法是一种特殊的递归,将问题进行分解,每个分解部分都有可能调用自己即递归到下一层,总结就是一个函数会同时多次或有选择性地调用自己、只是入参具体值不相同 我推荐实现归并排序 以下是up主推荐的可以用分治技巧的题,试了一下一道也无法一次性顺利按分治解出QAQ,建议大家做题熟练后再回来试试 回溯法★一种通过探索所有可能的候选解来找出所有的解的算法。如果候选解被确认不是一个解(或者至少不是最后一个解),回溯算法会通过在上一步进行一些变化抛弃该解,即回溯并且再次尝试。(力扣定义) 46. 全排列 做题tips:个人习惯用入口函数全局结果变量+内嵌递归函数的方式来完成 深度优先搜索(Depth First Search, DFS)★针对树结构,从根节点走一个分支到底后,返回最近的非叶子节点再走另一个分支走到底,这样直到把所有节点遍历完成
有些题目既能用DFS也能用BFS 广度优先搜索(Breadth First Search, BFS)针对树结构,从根节点一层一层遍历子节点,直到所有节点遍历完成。
102. 二叉树的层序遍历 贪心算法每一步都优先当前时刻最优选择走,实现局部最优。 记忆化搜索是一个辅助递归的技巧,通常用字典记录下不同入参下递归函数的返回值,这样碰到同样入参,则直接调出返回值。 动态规划(Dynamic Programming, DP)★★★动态规划是每一步的状态/最优解基于上一步的状态/最优解,即存在最优子结构,所以最重要的是找到状态转移方程,基本框架如下(以斐波那契数列为例)
DP是递推思想(递推:从已知到未知,递归:从未知到已知) 剑指 Offer 13. 机器人的运动范围 参考资料BFS 的使用场景总结:层序遍历、最短路径问题 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 18:24:03- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |