![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
文章平均质量分 71
Mwwwwwwww
这个作者很懒,什么都没留下…
展开
-
数组中只出现一次的两个数字
数组中只出现一次的两个数字描述一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。数据范围:数组长度2≤n≤1000,数组中每个数的大小0<val≤1000000要求:空间复杂度 O(1),时间复杂度 O(n)提示:输出时按非降序排列。示例1输入:[1,4,1,6]返回值:[4,6]说明:返回的结果中较小的数排在前面示例2输入:[1,2,3,3,2,9]返回值:[1,9]思路:一个很简单的想法就是利用set在遍历vec原创 2022-02-28 11:42:56 · 257 阅读 · 0 评论 -
数据流中的中位数
数据流中的中位数描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。数据范围: 数据流中数个数满足 1≤n≤1000 ,大小满足 1≤val≤1000进阶: 空间复杂度 O(n) , 时间复杂度 O(nlogn)示例1输入:[5,2,3,4,1,6,7,0,原创 2022-02-24 22:25:28 · 307 阅读 · 0 评论 -
最小的K个数
最小的K个数描述给定一个长度为 n 的可能有重复值的数组,找出其中不去重的最小的 k 个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4(任意顺序皆可)。数据范围: 0≤k,n≤10000,数组中每个数的大小0≤val≤1000要求: 空间复杂度 O(n) ,时间复杂度 O(nlogn)示例1输入:[4,5,1,6,2,7,3,8],4返回值:[1,2,3,4]说明:返回最小的4个数即可,返回[1,3,2,4]也可以示例2输入:[1],原创 2022-02-24 20:50:36 · 352 阅读 · 0 评论 -
复杂链表的复制
复杂链表的复制描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)。 下图是一个含有5个结点的复杂链表。图中实线箭头表示next指针,虚线箭头表示random指针。为简单起见,指向null的指针没有画出。示例:输入:{1,2,3,4,5,3,5,#,2,#}输出:{1,2,3,4,5,3,5,#,2,#}解析:原创 2022-02-14 23:26:41 · 111 阅读 · 0 评论 -
字符串的排列
字符串的排列描述输入一个长度为 n 字符串,打印出该字符串中字符的所有排列,你可以以任意顺序返回这个字符串数组。例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。数据范围:n<10要求:空间复杂度 O(n!),时间复杂度 O(n!)输入描述:输入一个字符串,长度不超过10,字符只包括大小写字母。示例1输入:“ab”返回值:[“ab”,“ba”]说明:返回[“ba”,“ab”]也是正确的示例2输入:“a原创 2022-02-13 17:45:26 · 303 阅读 · 0 评论 -
滑动窗口的最大值
滑动窗口的最大值描述给定一个长度为 n 的数组 num 和滑动窗口的大小 size ,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3原创 2022-02-12 18:17:36 · 720 阅读 · 0 评论 -
在二叉树中找到两个节点的最近公共祖先
在二叉树中找到两个节点的最近公共祖先描述给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点。数据范围:1≤n≤1000,树上每个节点的val满足0<val≤100要求:时间复杂度 O(n)注:本题保证二叉树中每个节点的val值均不相同。如当输入[3,5,1,6,2,0,8,#,#,7,4],5,1时,二叉树{3,5,1,6,2,0,8,#,#,7,4}如下图所示:所以节点值为5和节点值为1的节点的最近公共祖先节点的节原创 2022-02-10 13:46:12 · 1573 阅读 · 0 评论 -
判断是不是平衡二叉树
判断是不是平衡二叉树描述输入一棵节点数为 n 二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。样例解释:样例二叉树如图,为一颗平衡二叉树注:我们约定空树是平衡二叉树。数据范围:n≤100,树上节点的val值满足0≤n≤1000要求:空间复杂度O(1),时间复杂度 O(n)输入描原创 2022-02-05 14:07:55 · 4446 阅读 · 0 评论 -
动态规划专题
动态规划专题强化动态规划的学习文章目录动态规划专题前言一、连续子数组的最大和1.题目描述:2.解析方法一(动态规划):方法二(动态规划空间优化):二、连续子数组的最大和(二)1.题目描述:2.解析方法一(动态规划):方法二(动态规划空间优化):前言动态规划专题,由简到难一、连续子数组的最大和1.题目描述:输入一个长度为n的整型数组array,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。数据范围:1 <= n <= 10^5-100 <= a原创 2022-01-13 12:04:53 · 281 阅读 · 0 评论 -
从尾到头打印链表
从尾到头打印链表描述输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。如输入{1,2,3}的链表如下图:返回一个数组为[3,2,1]0 <= 链表长度 <= 10000示例1输入:{1,2,3}复制返回值:[3,2,1]复制示例2输入:{67,0,24,58}复制返回值:[58,24,0,67]//方法一:struct ListNode { int val; struct ListNode *next; L原创 2021-11-02 00:27:30 · 66 阅读 · 0 评论