![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
码上心头
你想给别人一勺水,你首先要拥有一桶水。(博客短期不支持维护更新,最近一直在输入各种知识,相关学习记录都每日上传到gitee,后面会一次性大量更新,您可通过文末QQ名片找到我,并注明来意)
展开
-
【剑指offer|6.寻找峰值】
输入:nums = [1,2,3,1]输出:2解释:3 是峰值元素,你的函数应该返回其索引 2。原创 2023-04-11 00:40:08 · 327 阅读 · 1 评论 -
【剑指offer|5.在排序数组中查找数字I】
通过二分查找找到目标值, 局部时间复杂度O(logN);然后在目标值左右扫描, 直到分别扫描到第一个3和最后一个3, 因为要查找的数字在长度为N的数组中可能出现N次, 所以局部时间复杂度O(N);总体时间复杂度O(N),效率很低,和直接遍历扫描数个数的笨方法时间复杂度相同O(N),不可取。原创 2023-04-09 21:03:10 · 110 阅读 · 2 评论 -
【剑指offer|4.从尾到头打印单链表】
单链表:一般给的都是无头节点的另外:在面试中,如果我们打算修改输入的数据,则最好问一下面试官是不是允许修改下面这种先把链表节点的值按链表序放到数组中,然后来一个算法库中的reverse属实有点流氓!不可取!原创 2023-04-08 16:37:49 · 468 阅读 · 1 评论 -
【剑指offer|3.合并两个有序的数组】
题意:有两个排好升序的数组A1,A2,内存在A1的末尾有足够多的空余位置容纳A2,请实现一个函数,把A2中所有的数字插入到A1中,并且所有的数字都是排序的。题解:本题和【剑指offer|2.替换空格】类似,由于在合并数组(字符串)时,如果从前往后移动每一个数字都需要重复移动数字多次,因此我们可以考虑从后往前移动,从而提高效率。原创 2023-04-08 14:56:17 · 88 阅读 · 0 评论 -
【剑指offer|2.替换空格】
双指针:由于C语言版力扣函数原型设置, 返回值的类型是字符串的地址, 因此不能返回栈上的地址, 而只能返回堆空间的地址, 所以不是原地修改, 需要额外O(N)的空间复杂度,因此从尾到头和从头到尾移动皆可.C++版的函数原型, 返回值的类型不是地址, 所以不需要额外申请空间来返回, 可以原地修改, 必须从尾到头挪动.原创 2023-04-08 13:06:40 · 110 阅读 · 1 评论 -
【剑指offer|1.数组中重复的数字】
面试官:你能在将空间复杂度降低到O(1)吗?我打赌60%人都不会第三种方法!原创 2023-04-06 18:08:52 · 340 阅读 · 15 评论