2024算法工程师求职
文章平均质量分 74
硕4.5算法,记录一下求职经历记录,包括刷题,面试准备,面经
小新0077
这个作者很懒,什么都没留下…
展开
-
leetcode刷题记录:hot100强化训练2:二叉树+图论
递归就不写了,写一下迭代法顺便再写一下前序和后序的迭代法。原创 2024-06-15 17:12:05 · 609 阅读 · 0 评论 -
leetcode hot100强化练习 0 - 35
参考:二维数组的遍历技巧 https://labuladong.online/algo/practice-in-action/2d-array-traversal-summary/#%E7%9F%A9%E9%98%B5%E7%9A%84%E8%9E%BA%E6%97%8B%E9%81%8D%E5%8E%86。仔细想了下,n1和n2要么相交,要么都走向None,最终都是n1 == n2.单调队列,加入数字的大小代表人的体重,体重大的会把前面体重不足的压扁,直到遇到更大的量级才停住。把head.next断掉。原创 2024-06-02 19:54:10 · 727 阅读 · 0 评论 -
leetcode刷题记录:前缀和
适用范围:快速、频繁地计算一个索引区间内的元素之和。原创 2024-05-24 21:04:45 · 350 阅读 · 0 评论 -
leetcode刷题记录:岛屿问题
思路:dfs遍历岛屿,找到岛屿后把整个岛屿淹掉(置为0)先用dfs函数把边缘的岛屿淹掉,再统计岛屿数量。先淹掉一部分grid==0的,剩下的都是子岛屿。原创 2024-05-02 22:23:44 · 331 阅读 · 0 评论 -
leetcode刷题记录:归并排序和快速排序
树上每个结点的值是nums[lo:hi], 其中左子树是nums[lo:mid-1], 右子树是nums[mid+1:hi],根节点是nums[mid].在二叉树的纲领篇(记得放link)我们说过,二叉树问题有两种解法,一是遍历一遍二叉树,而是分解问题。第一次partition函数的执行时间最长,是数组总的元素数,所以partition的时间复杂度是O(N).但是有可能会碰到极端不平衡的情况,比如每次选出的p都在两端,导致左子树或者右子树为空,这样时间复杂度会大幅度上升,因此需要增加数组的随机性。原创 2024-04-29 08:57:16 · 596 阅读 · 2 评论 -
LeetCode刷题记录:二叉树的迭代遍历
参考:代码随想录https://www.programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E8%BF%AD%E4%BB%A3%E9%81%8D%E5%8E%86.html。原创 2024-04-25 09:02:01 · 290 阅读 · 0 评论 -
leetcode刷题记录 - 滑动窗口
这道题可以按照上面,先扩右边再收缩左边;但第一反应想到的是固定长度的滑动窗口,每次直接lo++ hi++。再用先扩后缩的框架写一遍,这种方式更不容易出错。原创 2024-04-17 23:17:12 · 300 阅读 · 0 评论 -
leetcode刷题记录:二分搜索的应用
这道题,看起来比较绕,其实是跟2一模一样的,只是换了个皮。代码逻辑原封不动,改一些变量名即可。原创 2024-04-08 09:33:52 · 207 阅读 · 2 评论 -
leetcode刷题记录:bfs
bfs的问题,就是一幅图,从起点走到终点,问最短路径。原创 2024-04-04 19:48:10 · 142 阅读 · 0 评论 -
leetcode刷题记录:动态规划之背包问题
给你一个可装载重量为 W 的背包和 N 个物品,每个物品有重量和价值两个属性。其中第 i 个物品的重量为 wt[i],价值为 val[i]。现在让你用这个背包装物品,每个物品只能用一次,在不超过被包容量的前提下,最多能装的价值是多少?例子:算法返回 6,选择前两件物品装进背包,总重量 3 小于 W,可以获得最大价值 6。dp[i][j]的定义:对于前i个物品,背包容量为j时,可以装的最大价值。题目要求的就是dp[N][W].原创 2024-03-31 17:32:55 · 1004 阅读 · 0 评论 -
leetcode刷题记录:二叉搜索树
定义。原创 2024-03-30 11:37:02 · 165 阅读 · 1 评论 -
leetcode刷题记录:暴力搜索算法01 - 回溯
暴力搜索算法:回溯、dfs、bfs。这些都可以看做是从二叉树算法衍生出来的。解决一个回溯问题,实际上是在遍历一颗决策树的过程。树的每个叶子结点上存着一个答案。把整棵树遍历一遍,把叶子结点上的答案都收集起来,就能得到所有的合法答案。回溯算法的框架def backtrack(路径,选择列表):if 满足条件:result.add(路径)returnfor 选择 in 选择列表:做选择backtrack(路径, 选择列表)撤销选择核心是for循环里的递归,在递归前做选择,递归后撤销选择。原创 2024-02-15 23:30:20 · 864 阅读 · 1 评论 -
leetcode刷题记录:二叉树04(序列化和反序列化)
序列化篇。原创 2024-02-15 13:06:20 · 407 阅读 · 1 评论 -
leetcode刷题记录:二叉树03(构造二叉树)
参考:https://labuladong.online/algo/data-structure/binary-tree-part2/构造问题一般都是通过分解的思路,构造整棵树 = 根节点 + 构造左子树 + 构造右子树。原创 2024-02-14 22:08:12 · 433 阅读 · 2 评论 -
leetcode刷题记录:二叉树02(思路篇)
参考labuladong的算法小抄:https://labuladong.online/algo/data-structure/binary-tree-part1/复习二叉树纲领篇,二叉树解题的思维模式分两类:1、是否可以通过遍历一遍二叉树得到答案?如果可以,用一个 traverse 函数配合外部变量来实现,这叫「遍历」的思维模式。2、是否可以定义一个递归函数,通过子问题(子树)的答案推导出原问题的答案?如果可以,写出这个递归函数的定义,并充分利用这个函数的返回值,这叫「分解问题」的思维模式。原创 2024-02-14 18:53:56 · 906 阅读 · 1 评论 -
leetcode刷题记录:二叉树1(纲领篇)
摘自labuladong的算法小抄:https://labuladong.online/algo/essential-technique/binary-tree-summary-2/原创 2024-02-14 18:16:22 · 597 阅读 · 1 评论 -
leetcode刷题记录: 二分查找
这道题是需要我们寻找target的左侧边界和右侧边界。最直观的解法,写两个函数lowerBound和upperBounder, 分别计算。""""""return -1else:return -1return -1else:return -1但是这种写法比较冗余,可以只写一个lowerBound. 返回参数只返回left,不判断其他情况。如果target在nums中存在,则返回target下界的index;原创 2024-02-13 18:53:27 · 614 阅读 · 1 评论 -
leetcode刷题记录:动态规划02,子序列问题
参考labuladong的算法小抄整理子序列问题,用一维dp数组或二维dp数组来解决。二维dp 数组的定义在子数组 arr1[0…i] 和子数组 arr2[0…j] 中,我们要求的子序列长度为 dp[i][j]。在子数组 array[i…j] 中,我们要求的子序列的长度为 dp[i][j]原创 2024-02-13 10:55:18 · 1019 阅读 · 1 评论 -
2024 算法工程师求职面经杂谈
本人硕4.5算法工程师,某大厂业务算法部门大头兵一枚。目前自身职业上升空间不大,趁着2024春节前后看看机会。这里记录一些自己的面经,供参考。原创 2024-02-03 18:42:14 · 350 阅读 · 1 评论 -
leetcode刷题记录 1.1 链表
双指针,跑完A后,再跑B。如果有交点,两个指针最终会落在交点上;如果没有交点,两个指针都是NULL. 思路是逻辑上让2个指针走同样的距离,消除长短差。代码实现的时候,注意循环条件是while(p1!这种写法可以覆盖到不相交的的情况。要用到优先队列,有点难。找出环形链表的起始结点。快慢指针,没啥好说的。快慢指针,没啥好说的。原创 2024-01-15 23:49:33 · 926 阅读 · 0 评论 -
leetcode刷题记录 1.2 数组
左右指针:相向而行快慢指针:同向而行(单链表大部分是这种)原创 2024-01-17 23:14:51 · 320 阅读 · 0 评论 -
leetcode刷题记录:动态规划01,斐波那契数列和凑零钱问题
动态规划题目的一般形式:求最值。dp三要素:重叠子问题,最优子结构,状态转移方程。原创 2024-02-03 17:37:21 · 582 阅读 · 1 评论 -
leetcode刷题记录 1.3 nSum问题
解法:哈希表,时间和空间复杂度都是O(n)变体:如果不是返回idx,而是返回元素值,可以排序+双指针,O(nlogn)原创 2024-02-03 16:26:04 · 111 阅读 · 1 评论