![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔试题
柯小帅
华为开发
展开
-
202. 快乐数
本题关键是退出循环的时机,应该是n=1或者出现相同的sum值,形成了环。原创 2023-03-09 10:13:07 · 190 阅读 · 1 评论 -
【链表】面试题 02.07. 链表相交
这题的话,主要也是双指针,分别指向A链表和B链表,分别求出来两个链表的长度,然后计算他们长度的差值,最后长的链表指针先走num步,然后两个同时走,如果出现指针指向同一结点,就表示,找到了共同结点。原创 2023-02-24 10:02:33 · 212 阅读 · 0 评论 -
【快慢指针】19. 删除链表的倒数第 N 个结点
设置两个指针,一个快指针在前面,一个慢指针在后面,快指针提前走N步,然后两个指针同时走,这样的话,刚好快指针走到最后的时候,慢指针指向的是倒数第n个结点的前一个结点。原创 2023-02-23 11:15:10 · 185 阅读 · 0 评论 -
【双指针】206. 反转链表
使用两个指针,一个在前面cur,一个在后面pre,实时的改变指针的指向。原创 2023-02-22 16:55:20 · 85 阅读 · 0 评论 -
【链表】203. 移除链表元素
本题是典型的链表删除节点的题目,主要需要注意的是两点,本题是没有头结点的,需要设置一个虚拟头结点,处理特殊情况,另一个情况就是需要多存一个前置结点,在删除当前结点时,需要前置结点的next指向下下个结点。原创 2023-02-16 20:15:17 · 54 阅读 · 0 评论 -
【重点】59. 螺旋矩阵 II
螺旋矩阵原创 2023-02-16 10:25:04 · 49 阅读 · 0 评论 -
【滑动窗口】209. 长度最小的子数组
实际上他使用两个循环,一个循环是动right指针,一个循环动的是left指针,当sum过大的时候,动left指针去减少到最小,当sum过小的时候,又可以动right指针去增大,很牛!本题实际上就是考察的滑动窗口,刚开始的时候,理解错误,先对数组进行了排序。原创 2023-02-13 20:30:12 · 60 阅读 · 0 评论 -
977. 有序数组的平方
这题是个简单题,有很多种做法,现在我们用优先队列的方式解决,优先队列有个特性,就是他的顶部元素是最大或者最小值。原创 2023-02-06 10:21:20 · 49 阅读 · 0 评论 -
27. 移除元素
27. 移除元素。原创 2023-02-06 10:00:55 · 51 阅读 · 0 评论 -
【力扣数组类型题目】704.二分查找
满足二分查找方法的前提是 必须是有序数组,且数组的值都不一样,否则可能存在多个答案。原创 2023-02-03 09:33:10 · 71 阅读 · 0 评论 -
350. 两个数组的交集 II【使用双指针解决】
初始化指向两个数组的指针,分别是index1,index2,若index1指向元素大于index2指向元素,则index2指针往后右移一位,若index2指向元素大于index1指向元素,则index1指针往后右移一位,若index1和index2指向元素相等,则将元素保存至result中。3.返回result数组。使用双指针解决该类问题。1.两个数组分别排序。原创 2022-11-08 09:33:43 · 117 阅读 · 0 评论 -
463. 岛屿的周长
岛屿求边长原创 2022-11-07 21:05:45 · 95 阅读 · 0 评论 -
1668. 最大重复子字符串
使用动态规划,初始化一个dp数组,dp数组记录当前位置为止,有几组重复的word,故状态转移方程式dp[i] = dp[i-k] + 1。原创 2022-11-04 09:01:07 · 71 阅读 · 0 评论 -
219. 存在重复元素 II
其实就是一个维护一个k长度的滑动窗口,若窗口中有重复的出现,直接返回true,若长度超过了k,则删除首元素,刚开始用的队列作为滑动窗口,但是超时了,后面改用了set,效率高很多。原创 2022-11-03 09:23:15 · 64 阅读 · 0 评论 -
674. 最长连续递增序列
定义一个dp数组,存放当前位置最长的递增序列,若当前位置的数字比前一个数字大,则dp[i] = dp[i-1] + 1,否则dp[i] = 1;原创 2022-11-02 09:52:27 · 59 阅读 · 0 评论 -
541. 反转字符串 II
先实现反转的函数,然后每2k个字符串反转一下,最后部分若小于k,则全部反转。原创 2022-10-31 09:28:03 · 54 阅读 · 0 评论 -
1103. 分糖果 II
最直观的做法是依次遍历每个人,模拟分糖果的过程,直到分完所有的糖果。原创 2022-10-28 09:36:21 · 117 阅读 · 0 评论 -
118. 杨辉三角
根据杨辉三角性质,每行的首尾均为1,中间数字等于上一行前一列加上上一行当前列数字之和。原创 2022-10-21 11:27:48 · 63 阅读 · 0 评论 -
67. 二进制求和
从低位一位位相加,但是要考虑到进位情况,而且由于两个长度不相等,应考虑到某一个未加完的情况。原创 2022-10-21 10:54:57 · 59 阅读 · 0 评论 -
204. 计数质数
一种筛选法,比如某个质素的倍数肯定不是倍数,2的倍数4,6,8,10…,3的倍数9,12,15…原创 2022-10-20 09:23:30 · 82 阅读 · 0 评论 -
292. Nim 游戏
一共有4n(正整数)个,你拿X(1~3)个对方拿4-X个,一直这样下去对方必赢(排除对方脑子有坑,故意不赢的情况)一共有4n(正整数)+y个,你第一次拿y个,对方就陷入了你上一种情况的状况,一定是必输的.自己思索一下可以发现当且仅当数量为4或4的倍数时,对方才可以赢得游戏。所以整个代码变成了求一个数是不是4的倍数的问题。原创 2022-10-19 22:13:25 · 561 阅读 · 0 评论 -
172. 阶乘后的零
阶乘展开以后可以发现,最终结果的0,都是由5*2所产生,所以只需要统计,一共有多少个5即可。原创 2022-10-19 09:19:27 · 71 阅读 · 0 评论 -
231. 2 的幂
通过观察可得知,2的n次幂的二进制形式都是。2.二进制最高位只有一个1,其他位都是0。原创 2022-10-18 19:56:39 · 58 阅读 · 0 评论 -
134. 加油站
2.如果从某点出发,当前所剩油量小于0,表示达到不了,从该起点到该点中间所有路径应该都是不能达到的,直接跳过。1.如果总耗油量大于总加油量,那肯定是达到不了的,直接返回-1;原创 2022-10-18 09:41:48 · 50 阅读 · 0 评论 -
39. 组合总和【组合回溯法】
避免重复的解决方案:为了避免搜索过程中的重复方案,我们要去定义一个搜索起点,已经考虑过的数,以后的搜索中就不能出现,让我们的每次搜索都从当前起点往后搜索(包含当前起点),直到搜索到数组末尾。这样我们人为规定了一个搜索顺序,就可以避免重复方案。...原创 2022-08-09 15:45:32 · 59 阅读 · 0 评论 -
算法题几种常见方法总结
解决一个回溯问题,实际上就是一个决策树的遍历过程。原创 2022-08-08 17:44:09 · 72 阅读 · 0 评论 -
17. 电话号码的字母组合【组合问题回溯法】
电话号码的字母组合【组合问题回溯法】原创 2022-08-08 17:41:18 · 84 阅读 · 0 评论 -
543. 二叉树的直径
我们之前学过如何求树的最大深度,这题起始就是求每个结点左右子树的最大深度,他们的和即为直径。原创 2022-08-03 09:33:44 · 140 阅读 · 0 评论 -
103. 二叉树的锯齿形层序遍历
采用层序遍历的方法,如果层级是奇数,则直接原样加入,如果层级是偶数,则翻转以后加入。原创 2022-08-02 11:42:49 · 107 阅读 · 0 评论 -
102. 二叉树的层序遍历
使用一个队列实现,关键点应该是for循环,使用队列的长度作为起始值,队列长度就是每一行结点的个数。原创 2022-08-02 09:23:46 · 86 阅读 · 0 评论 -
703. 数据流中的第 K 大元素
使用java的优先队列,也就是堆排序。原创 2022-07-26 21:50:05 · 222 阅读 · 0 评论 -
921. 使括号有效的最少添加
使括号有效的最少添加。原创 2022-07-22 09:09:25 · 83 阅读 · 0 评论 -
1094. 拼车【使用到了优先队列】
拼车【使用到了优先队列】原创 2022-07-20 09:40:46 · 99 阅读 · 0 评论 -
1352. 最后 K 个数的乘积
维护一个前n项的乘机表,然后后k项的乘积肯定是等于res.get(res.size()-1)/res.get(res.size()-k-1);原创 2022-07-19 19:43:14 · 106 阅读 · 0 评论 -
304. 二维区域和检索 - 矩阵不可变
先求出一个二维前缀和数组,再利用该数组,去求答案。原创 2022-07-18 20:36:32 · 71 阅读 · 0 评论 -
234. 回文链表
第二种方法是,遍历一次链表,求出来链表的长度,然后在链表前一半压入栈里面,最后与后面一部分进行比较即可。这题是链表的回文数,有两种方法,一种是将所有数都复制到数组中进行一一比较。如果是数组的回文数,直接用双指针就行了,一个从头一个从尾部,一一比较。...原创 2022-07-18 10:18:45 · 57 阅读 · 0 评论 -
142. 环形链表 II
环形链表原创 2022-07-16 09:54:34 · 86 阅读 · 0 评论 -
2. 两数相加
两数相加原创 2022-07-15 18:13:14 · 100 阅读 · 0 评论 -
986. 区间列表的交集
区间列表的交集原创 2022-07-14 17:45:05 · 60 阅读 · 0 评论 -
11. 盛最多水的容器
盛最多水的容器原创 2022-07-14 15:32:42 · 49 阅读 · 0 评论