程序员面试金典刷题笔记
刷题记录
zaker123
永远年轻,永远热泪盈眶!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[LeetCode](面试题 17.13)恢复空格
题目 哦,不!你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子"I reset the computer. It still didn’t boot!"已经变成了"iresetthecomputeritstilldidntboot"。在处理标点符号和大小写之前,你得先把它断成词语。当然了,你有一本厚厚的词典dictionary,不过,有些词没在词典里。假设文章用sentence表示,设计一个算法,把文章断开,要求未识别的字符最少,返回未识别的字符数。 注意:本题相对原题稍作改动,只原创 2020-07-14 01:15:30 · 159 阅读 · 0 评论 -
[LeetCode](面试题 16.11)跳水板
题目 你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。 返回的长度需要从小到大排列。 示例: 输入: shorter = 1 longer = 2 k = 3 输出: {3,4,5,6} 提示: 0 < shorter <= longer 0 <= k <= 100000 解题思路 首先考虑两种边界情况。 1)如果 k=0,则不能建造任何跳水原创 2020-07-14 00:51:39 · 267 阅读 · 0 评论 -
[LeetCode](面试题 02.01)移除重复节点
题目 编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。 示例1: 输入:[1, 2, 3, 3, 2, 1] 输出:[1, 2, 3] 示例2: 输入:[1, 1, 1, 1, 2] 输出:[1, 2] 提示: 链表长度在[0, 20000]范围内。 链表元素在[0, 20000]范围内。 进阶: 如果不得使用临时缓冲区,该怎么解决? 解题思路 遍历链表,用一个哈希集合(HashSet)来存储所有出现过的节点。 具体地,我们从链表的头节点 head 开始进行遍历,遍历的指针记为原创 2020-06-28 01:13:01 · 176 阅读 · 0 评论 -
[LeetCode](面试题 08.11)硬币
题目 硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007) 示例1: 输入: n = 5 输出:2 解释: 有两种方式可以凑成总金额: 5=5 5=1+1+1+1+1 示例2: 输入: n = 10 输出:4 解释: 有四种方式可以凑成总金额: 10=10 10=5+5 10=5+1+1+1...原创 2020-04-26 23:07:06 · 318 阅读 · 1 评论 -
[LeetCode](面试题 10.01)合并排序的数组
解题思路 解法一:直接合并后排序(不推荐) 复杂度分析 时间复杂度:O((m+n)log(m+n)),排序序列长度为 m+n,套用快速排序的时间复杂度即可,平均情况为 O((m+n)log(m+n))。 空间复杂度:O(log(m+n)),排序序列长度为 m+n,套用快速排序的空间复杂度即可,平均情况为 O(log(m+n))。 解法二:双指针法 分别为两个数组设置一个指针pa与pb,来作为队列的...原创 2020-03-26 17:12:02 · 188 阅读 · 0 评论 -
[LeetCode](面试题 01.07)旋转矩阵
解题思路 解法一:使用辅助数组 先将原数组复制到这个新数组中,再根据这个新复制的数组对原数组修改。 复杂度分析: 时间复杂度:O(N^2),其中 N 是 matrix 的边长。 空间复杂度:O(N^2),我们需要使用一个和 matrix 的大小相同的辅助数组。 解法二:原地翻转 例如 A = [[1,2,3], [4,5,6], [7,8,9]] 要得到 A1 = [[7,4...原创 2020-04-07 13:00:06 · 304 阅读 · 0 评论 -
[LeetCode](面试题 17.21)直方图的水量
解题思路 具体思路可参考 42. 接雨水 代码 解法一:动态规划 class Solution: def trap(self, height: List[int]) -> int: n = len(height) if n == 0: return 0 leftmax = [0]*n rightm...原创 2020-04-05 13:48:16 · 318 阅读 · 0 评论 -
[LeetCode](面试题 17.16)按摩师
解题思路 动态规划: 定义 dp[i][0] 表示第i个预约不接,dp[i][1]表示第i个预约接。根据题意,相邻的预约不能接。 因此当第i个预约不接时,第i-1个预约接不接都可以,则 dp[i][0] = max(dp[i-1][0], dp[i-1][1]);而当第i个预约接受的时候,第i-1个预约不能接,则dp[i][1] = dp[i-1][0]+nums[i],最后返回max(dp[n]...原创 2020-03-28 12:08:15 · 261 阅读 · 0 评论 -
[LeetCode](面试题 01.06)字符串压缩
解题思路 题意很简单,直接从左向右遍历字符串即可,分别设置 i、j 两个指针,i 指向当前字符,j 从当前字符i向后遍历,当 j 遍历到与 i 字符不同时,表示遍历到了一个新的字符,则i字符的个数为 (j-i),最后将i字符与个数拼接即可。 步骤: 1)判断字符串是否为空串,是则直接返回空串; 2)分别设置 i、j 两个指针,初始值都为0,进入循环,直到 j 到达字符串末尾,即 while j&l...原创 2020-03-27 00:32:43 · 216 阅读 · 0 评论
分享