![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
文章平均质量分 52
zhc_24
这个作者很懒,什么都没留下…
展开
-
剑指offer总结·
- 需要注意函数的参数以及返回值:一般不需要修改的参数应该传递的是引用 并且需要加上const 修饰表示不会在函数当中修改这个参数STL vector最好在知道数组的大小的时候在声明数组的时候就直接指定数组的长度,这样可以减少在动态增加数组的大小的时候扩充数组大小带来的开销,降低时间。一般使用前缀式进行自加自减等操作,因为i++会产生一个临时对象保存更改前的i的值用于使用然后再进行自加...原创 2018-04-24 17:15:49 · 205 阅读 · 0 评论 -
删除链表中重复的结点
写在前面 剑指offer:删除链表中重复的结点题目要求 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5解法/*struct ListNode { int val; stru...原创 2018-08-14 16:35:01 · 292 阅读 · 0 评论 -
二叉树中序遍历的下一个结点
写在前面 剑指offer:二叉树的下一个结点题目要求 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。解法/*struct TreeLinkNode { int val; struct TreeLinkNode *left; struct TreeLi...原创 2018-08-14 19:22:41 · 448 阅读 · 0 评论 -
按之字形顺序打印二叉树
写在前面 剑指offer:按之字形顺序打印二叉树题目要求 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。解法/*struct TreeNode { int val; struct TreeNode *left; struct TreeNod...原创 2018-08-14 20:11:34 · 123 阅读 · 0 评论 -
翻转单词顺序列
写在前面 剑指offer: 翻转单词顺序列题目要求 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻...原创 2018-08-07 17:44:21 · 169 阅读 · 0 评论 -
孩子们的游戏(圆圈中最后剩下的数)
写在前面 剑指offer:孩子们的游戏(圆圈中最后剩下的数)题目要求 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且...原创 2018-08-08 15:09:13 · 109 阅读 · 0 评论 -
正则表达式匹配
写在前面 剑指offer:正则表达式匹配题目要求 请实现一个函数用来匹配包括’.’和’‘的正则表达式。模式中的字符’.’表示任意一个字符,而’‘表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串”aaa”与模式”a.a”和”ab*ac*a”匹配,但是与”aa.a”和”ab*a”均不匹配实现class S...原创 2018-08-13 17:11:53 · 192 阅读 · 0 评论 -
表示数值的字符串
写在前面 剑指offer:表示数值的字符串题目要求 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。解法class Solution {public: b...原创 2018-08-13 19:09:49 · 184 阅读 · 0 评论 -
二叉树遍历迭代实现
写在前面 剑指offer:二叉搜索树的第k个结点 总结二叉树的前序遍历和中序遍历的迭代实现。题目要求 给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。解法class Solution {public: TreeNode* KthNode(TreeNode* pR...原创 2018-08-20 23:47:46 · 1797 阅读 · 1 评论 -
有环链表
写在前面 剑指offer:链表中环的入口结点题目要求 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。解法/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { ...原创 2018-08-14 16:10:02 · 670 阅读 · 0 评论 -
和为S的连续正数序列
写在前面 剑指offer:和为S的连续正数序列题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列?...原创 2018-08-06 22:03:14 · 113 阅读 · 0 评论 -
题解:两个链表的第一个公共结点
写在前面 剑指offer:两个链表的第一个公共结点知识点链表处理要求 输入两个链表,找出它们的第一个公共结点。解法class Solution {public: ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) { if(!pHead1||!pH...原创 2018-07-31 16:09:19 · 152 阅读 · 0 评论 -
剑指offer-构建乘积数组
描述题目:给定一个数组A [0,1,…,N-1],请构建一个数组B [0,1,…,N-1],其中乙中的元素B [I ] = A [0] * A [1] * … * A [I-1] * A [1 + 1] * … * A [N-1]。不能使用除法。class Solution {public: vector<int> multiply(const vector<...原创 2018-04-26 18:52:02 · 156 阅读 · 0 评论 -
丑数 题解
写在前面 剑指offer 编程题:丑数。参考目录题目描述把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 基本思路(暴力解)从2开始遍历每一个数判断是不是丑数。如果是丑数计数器count++,如果不是数字加1,继续判断。算法...原创 2018-07-24 15:16:31 · 344 阅读 · 0 评论 -
第一个只出现一次的字符
写在前面剑指offer: 第一个只出现一次的字符 题目描述:在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 简单解法使用map存储出现的字符的下标,如果第一次出现存储下标。如果多次出现将value置为-1。最后遍历map找到存储的非-1的最小下标就是...原创 2018-07-26 11:12:51 · 87 阅读 · 0 评论 -
数字在排序数组中出现的次数
写在前面 简直offer:数字在排序数组中出现的次数题目描述 统计一个数字在排序数组中出现的次数。解法暴力解:遍历数组记录出现个数。时间复杂度为o(n)进阶解法:class Solution {public: int GetNumberOfK(vector<int> data ,int k) { if(!data.s...原创 2018-08-04 00:20:28 · 163 阅读 · 0 评论 -
list
写在前面 STL源码剖析:list主要内容 list也就是链表结构。list本身和list节点是不同的结构。list节点template &lt;class T&gt;struct __list_node { typedef void* void_pointer; void_pointer next; void_pointer prev; T da...原创 2018-08-04 14:01:07 · 122 阅读 · 0 评论 -
平衡二叉树
写在前面 剑指offer:平衡二叉树题目要求 输入一棵二叉树,判断该二叉树是否是平衡二叉树。平衡二叉树要求任意一个节点的左右字数之间的高度差不超过1。解法class Solution {public: bool IsBalanced_Solution(TreeNode* pRoot) { if(!pRoot) return true;...原创 2018-08-04 20:48:25 · 116 阅读 · 0 评论 -
数组中只出现一次的数字
写在前面 剑指offer:数组中只出现一次的数字题目要求 一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。解法 解法1:使用一个map记录每个值出现的次数,最后遍历一遍map得到只出现一次的值。时间复杂度o(n),空间复杂度o(n)class Solution {public: void Fi...原创 2018-08-04 23:08:07 · 141 阅读 · 0 评论 -
数组中的逆序对
写在前面 题目:剑指offer-数组中的逆序对 考点: 归并排序。知识点归并排序要求 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。 输入一个数组,求出这个数组中的逆序对的总数P。 并将P对1000000007取模的结果输出。 即输出P%1000000007 题目保证输入的数组中没有的相同的数字暴...原创 2018-07-31 15:34:58 · 169 阅读 · 0 评论 -
数据流中的中位数
写在前面 剑指offer:数据流中的中位数题目要求 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。解法class Solut...原创 2018-08-21 00:40:22 · 159 阅读 · 0 评论