算法
文章平均质量分 97
leetcode算法,源于代码随想录,总结leetcode刷题笔记
牛+马=我
小白一枚,分享关于Java、C++、Python、MATLAB,后端、大数据、深度学习、科研的相关学习与笔记。
展开
-
二叉树->算法实现
二叉树可以链式存储,也可以顺序存储。如下两个图用数组来存储二叉树遍历:如果父节点的数组下标是 i,那么它的左孩子就是 i * 2 + 1,右孩子就是 i * 2 + 2int val;在现场面试的时候 面试官可能要求手写代码,包括 数据结构的定义 以及 简单逻辑的代码。原创 2023-12-08 19:23:56 · 920 阅读 · 0 评论 -
双指针->算法实现
leetcode27。原创 2023-12-26 21:07:30 · 456 阅读 · 0 评论 -
栈与队列->算法实现
栈和队列提供 push 和 pop 等等接口,不提供迭代器(iterator)。不像是set 或者map 提供迭代器iterator来遍历所有元素。因此在 STL 中其实 stack 和 queue 是不被归类为容器的,而是归类为 container adapter(容器适配器)在 SGI STL 默认是使用 deque 来实现的 stack 和 queue,当然 vector 和 list 也可以实现。以下介绍的都是 SGI STL 里面的数据结构。栈是先进后出,队列是先进先出。原创 2023-12-19 16:45:22 · 373 阅读 · 0 评论 -
字符串->算法实现
反转字符串:leetcode344反转字符串 II:leetcode541替换数字:非leetcode原题反转字符串中的单词:leetcode151右旋字符串:非leetcode原题找出字符串中第一个匹配项的下标:leetcode28重复的子字符串:leetcode459leetcode344简单题不多说反转字符串 II题目leetcode541每 2k 个字符串就反转前 k 个字符串循环中记得处理最后的边界,即“最后剩余的字符串的处理”这里面有个小技巧,如果自己实现 revers原创 2024-01-05 16:21:01 · 426 阅读 · 0 评论 -
回溯法->算法实现
组合问题:N个数里面按一定规则找出k个数的集合切割问题:一个字符串按一定规则有几种切割方式子集问题:一个N个数的集合里有多少符合条件的子集排列问题:N个数按一定规则全排列,有几种排列方式棋盘问题:N皇后,解数独等等。原创 2023-12-05 22:26:51 · 399 阅读 · 0 评论 -
贪心->算法实现
刷题或者面试的时候,手动模拟一下感觉可以局部最优推出整体最优,而且想不到反例,那么就试一试贪心。如果用不了贪心,就考虑动态规划。这四部有点理论,刷题中有时候不会根据这四步来,所以直接刷题,刷题时只需要考虑局部最优是什么,全局最优是什么即可。贪心的本质是选择每一阶段的局部最优,从而达到全局最优。贪心算法并没有固定的套路,所以建议直接刷题。将局部最优解堆叠成全局最优解。将问题分解为若干个子问题。求解每一个子问题的最优解。原创 2023-11-28 22:34:46 · 411 阅读 · 0 评论 -
动态规划->算法实现
动态规划分为:基础题目、背包问题、打家劫舍、股票问题、子序列问题原创 2023-11-19 20:26:35 · 84 阅读 · 0 评论 -
单调栈->算法实现
对于一维数组,要寻找一个元素的右边或者左边第一个比自己大或者第一个比自己小的元素的位置,通常使用单调栈单调栈的时间复杂度是 o(n),空间复杂度也是 o(n)单调栈的本质是空间换时间,通过一个栈来记录遍历过的元素,每次和栈顶进行对比从而找到下一个较大值或较小值一般单调栈里面存放的是元素的索引,可通过数组和索引找出索引对于的元素如果是找下一个较大值,那么从 栈底 到 栈顶 是 从大到小排序的,也就是递减的如果是找下一个较小值,那么从 栈底 到 栈顶 是 从小到大排序的,也就是递增的。原创 2023-11-16 22:14:31 · 56 阅读 · 0 评论 -
图论->算法实现
深搜、广搜、并查集。原创 2023-11-13 16:05:52 · 121 阅读 · 0 评论