首页 / 手撕代码
#

手撕代码

#
42444次浏览 457人互动
此刻你想和大家分享什么
热门 最新
03-09 18:21
东北大学 Java
Hot🔥100 邪修极速复盘思路P3
hot🔥100 全部思路现已奉上 并附有一些模版和方法帮助各位uu面试前快速复习激活思路 文字省略部分看图即可栈69.有效的括号:奇数 return false 哈希表保存对应关系 左括号入右括号判断栈顶左括号对应关系70.最小栈:栈中保存添加元素 和 前缀最小值 初始化栈底添加Integer.MAX_VALUE(+∞)哨兵对应栈为空71.字符串解码:DFS递归 k[encoded_string] 嵌套的括号从内到外解码72.每日温度:单调栈 从右到左(peek是索引小数值更大数)从左到右(todolist)73.柱状图中最大的矩形:单调栈 存储 柱子下标 遍历过程找每个柱子左边界(第一个比它矮的柱子)和右边界(第一个比它矮的柱子)堆74.数组中的第k个最大元素:(找下标n - k元素)快排 随机数选择pivot(遇到大量重复元素会退化到O(n<sup>2</sup>))两种思路:1-把 < pivot 改成 ≤ pivot三路划分:小于、等于和大于基准数的所有元素75.前k个高频元素:🪣桶排序 哈希表现统计元素出现次数 出现次数相同元素放入同一个桶,然后倒序遍历桶76.数据流的中位数:大小堆 最大堆比最小堆多一个数贪心77.买卖股票的最佳时机:更新minPrice 找最大prices[i] - minPrice78.跳跃游戏:维护最右可达位置max,i > max return false79.跳跃游戏II:更新从当前所有位置能跳到的最远位置   当走到当前跳跃能到达的最远位置进行一次新的跳跃80.划分字母区间:遍历字符串,计算字母的最后出现下标(last[i])合并区间动态规划递推 - 状态转移方程初始值 - 递归边界0-1背包每个物品只能选 0 个或 1 个分割等和子集、子集和问题完全背包每个物品可以选任意多次零钱兑换、完全平方数问题0-1 背包:物品唯一,怕重复 → 倒序遍历完全背包:物品无限,要重复 → 正序遍历多维动态规划技巧
点赞 评论 收藏
分享
03-08 09:53
已编辑
东北大学 Java
🔥Hot100极速复习版(1-34)
最近要开始准备面试了 准备花一两天先极速复盘下hot100思路 以下是1-34题 从哈希表到链表题供大学参考[萌萌哒R]1.两数之和:哈希表 维护右枚举左2.字母异位词分组:哈希表  排序字符串后相同加入同一组3.最长连续序列:元素加入Set中,遍历元素起点找最长连续序列4.移动零:双指针交换元素5.盛最多水的容器:双指针6.三数之和:先排序 双指针7.接雨水:前后缀分解 相向双指针8.无重复字符的最长子串:哈希表统计字符出现次数 有字符次数 > 1 移除左端点字符 滑动窗口9.找到字符串中所有字母异位词:不定长滑窗10.和为k的子数组:前缀和 哈希表11.滑动窗口最大值:单调队列 右入左出 维护队首(最大值)12.最小覆盖子串:滑动窗口 用一个less变量维护子串中有less种字母出现次数小于t中字母的出现次数13.最大子数组和:前缀和 + 贪心 / 动态规划14.合并区间:按左端点排序 合并区间和新区间比较合并15.轮转数组:三次反转16.除了自身以外的数组的乘积:前后缀分解相乘17.缺失的第一个正数:索引和值匹配放置18.矩阵置零:扫两遍matrix,第一遍分别记录行0和列0,第二遍置019.螺旋矩阵:用一个右下左上的方向数组,到头拐点20.顺时针90度旋转图像:两次翻转21.搜索二维矩阵:排除法21.相交链表:到null跳到另一条链22.反转链表:头插23.回文链表:寻找中间节点 反转后半链表 开始比较24.环形链表:快慢指针相遇25.环形链表2:Floyd判圈(快慢指针相遇时 头指针和慢指针同时走相遇时为入环处)26.合并两个有序链表:迭代尾插法27.两数相加:递归 (两节点值和进位值相加 / %)28.删除链表的倒数第N个节点:前后指针 找倒数第N + 1个节点29.两两交换链表中的节点:迭代30.k个一组翻转链表:反转链表(k个一组)处理小组反转后的更新31.随机链表的复制:节点后一位是复制的新节点 再分离节点32.排序链表:找到中间节点 分治排序两个链表 再合并两个有序链表33.合并k个升序链表:最小堆 头节点入堆34.LRU缓存:HashMap + 双向链表
点赞 评论 收藏
分享
2025-05-31 16:49
浙江大学 C++
小马智行一面手撕
_小_菜_鸡_:手撕这么难啊
小马智行一面11人在聊
点赞 评论 收藏
分享
02-25 22:31
东北大学 Java
面试150(非HOT100重叠部分)P1
Part1:字符串/数组(注重StringBuilder的使用):1.合并两个数组:倒序插入排序2.删除有序数组重复项 I / II : 指针计数3.股票利润II : 局部贪心累加所有上升坡段4.H指数:计数排序(桶排序),倒着遍历5.O(1) 时间插入、删除和获取随机元素:HashMap + ArrayList,删除就用尾节点与被删节点交换再删尾节点6.加油站:贪心 总油量不能亏损 找局部亏损最低点7.分糖果:两次贪心  进阶:常数空间解法:上升段 平坡 下降段8.罗马数字转整数:比较相邻两罗马数字,左 > 右 +当前罗马数字数值 否则 减 当前罗马数字数值9.整数转罗马数字:排列所有可能罗马数字从大到小,遍历数值,减去罗马数字数值去拼接10.最长公共前缀:以第一个字符为基准,去纵向扫描其他字符串的列开始比较11.反转字符串的单词:去除字符串首位和单词间多余空格(仅保留一个)-> 反转字符串 -> 反转每个单词12.Z字型变换:用StringBuilder对象作为桶来存储该存储的字符,用一个标志变量flag判断向下/向上走(第一行/最后一行)13.找出字符串中第一个匹配项的下标(haystack, needle):needle 是一个固定长度的窗口,在 haystack 上从左向右滑动,设 haystack 长度为 n,needle 长度为 m。我们只需要在 haystack 中遍历到索引 n - m,去匹配。    进阶:KMP算法(next数组)14.文本左右对齐!!!(难度巅峰):核心是空格的分配:情况 1:当前行只有一个单词-单词左对齐,末尾补齐空格情况 2:当前行是最后一行-所有单词左对齐,单词间只留 1 个空格,行末补齐空格情况 3:普通行-计算总空格数:maxWidth - 当前行单词总字符数。均匀分配:空格数 / (单词数 - 1) 是基础空格数。左侧多分配:空格数 % (单词数 - 1) 是需要额外多加 1 个空格的间隔数。
查看14道真题和解析
点赞 评论 收藏
分享
2023-09-21 10:23
门头沟学院 C++
宁波银行金融科技岗一面
怕黑的猪猪有点心碎:佬,大概面了多久
点赞 评论 收藏
分享
点赞 评论 收藏
分享
玩命加载中
牛客网
牛客网在线编程
牛客网题解
牛客企业服务