自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(223)
  • 资源 (2)
  • 收藏
  • 关注

原创 leetcode 106. 从中序与后序遍历序列构造二叉树 c语言递归解法

如题:根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder =[9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7这道题明显是有套路的,如果你还不会,说明你是第一次遇到,还好现在...

2019-10-30 17:31:09 1235

原创 《剑指offer》c++版本 14.剪绳子

本题在牛客网剑指offer专项里没看到,原书第二版上有,如题:这道题是开放的动态规划题,题目中只给了绳子长度,却没定义具体剪多少段,初遇此题,难以下手,看了题解,豁然开朗。设f(n)为常为n的绳子剪成m段之后可得最大值,则存在n-1中减法,得f(n) = MAX(f(i) * f(n-i));初始值f(1),f(2),f(3)都可以计算出来,大于3则调用dp方程递归计算至n即可。思路简...

2019-10-30 17:31:03 355

原创 201909 腾讯后台开发 社招电话二面

面经2019

2019-10-30 17:30:42 145

原创 C++ 哪些函数不能声明成虚函数

在C++,有五种函数不能被声明成虚函数,分别是:非成员函数、构造函数、静态成员函数、内联成员函数、友元函数这五种,下面分别解释为什么这五种函数不能被声明成虚函数。1. 非成员函数 非成员函数只能被重载(overload),不能被继承(override),而虚函数主要的作用是在继承中实现动态多态,非成员函数早在编译期间就已经绑定函数了,无法实现动态多态,那声明成虚函数还有什么意义呢?2....

2019-10-30 17:30:35 1262

原创 面试浅谈 c++ 的空间两级配置器

最近面试c++的时候,被问到c++内存管理模型,没用过。回来看了下《STL源码解析》,这里简单总结下,不涉及具体实现。感兴趣同学可以下载电子书自己看下。SGI版本的空间适配器设计哲学:向system heap 要求空间。 考虑多线程状态。 考虑内存不足时的应变措施。 考虑过多“小型区块”可能造成的内存碎片(fragment)问题。考虑到小型区块可能造成的内存碎片问题,SGI设计了双...

2019-10-30 17:30:11 595

原创 2019江行智能 后端开发工程师Go 面试题

深圳面试,来了之后给了一张试卷,时间半小时。包括一道算法题及扩展以及一页基础题。看题型,应该是多种岗位共享的试题,适合后台开发、驱动开发等岗位,Linux知识居多,也包括一些操作系统,计算机网络和编程语言相关的知识。难度因人而异,有些仅仅知道,有些知识了解背后原理、实现。题型如下,不分先后:算法题,要求给出最优解,计算时间复杂度和空间复杂度:1. 3个有序数组排列2. K个...

2019-10-30 17:30:04 663

转载 C++中的Lambda表达式详解

函数对象与Lambdas你编写代码时,尤其是使用 STL 算法时,可能会使用函数指针和函数对象来解决问题和执行计算。函数指针和函数对象各有利弊。例如,函数指针具有最低的语法开销,但不保持范围内的状态,函数对象可保持状态,但需要类定义的语法开销。lambda 结合了函数指针和函数对象的优点并避免其缺点。lambda 与函数对象相似的是灵活并且可以保持状态,但不同的是其简洁的语法不需要显式类定义。...

2019-10-30 17:29:55 387

转载 C++虚函数及虚函数表(内存分配)简析

这篇文章主要介绍了C++虚函数及虚函数表,内容非常详细,思路清晰,需要的朋友可以参考下。

2019-10-30 17:29:46 1391

原创 二叉树遍历算法的六种c语言实现 递归与非递归

二叉树遍历分为三种: 先序遍历:先访问根结点,其次左节点,最后右节点 中序遍历:先访问左结点,其次跟节点,最后右节点 后序遍历:先访问左结点,其次右节点,最后根节点三种遍历的递归算法实现形式类似,仅仅是访问顺序不同,非常简洁。如下://节点定义typedef struct node { int val; struct node *left; struct no...

2019-10-30 17:29:17 1228

原创 解决win 10 vscode 打开后白屏问题

华为matebook,win10 企业版,打开vs code后出现白屏,就是那种没有任何按钮的样子,白花花的。百度了一番,尝试了1. 卸载重装。2. 设置控制台保持旧属性问题。无效。后来Google了以下,搜到一个类似问题,vs code turn white,给出的解决方案是增加一个禁止GPU的属性:Right-click on Shortcut and add --disable-gpu...

2019-10-30 17:29:08 3149

原创 《剑指offer》c++版本 18.删除链表的结点

如题:这道题要求在O(1)时间内删除链表节点。常规解法是遍历链表,找到所需元素,使其前继节点的next指针指向待删节点的next指针,时间复杂度位O(n),不满足要求。除了遍历之外,还有一种更好的办法删除结点,如果结点存在后继元素的话,可以直接将后继元素所有值复制到待删元素,这时候直接删除后继即可,如果位于尾节点,则遍历链表,对于链表中只有一个元素的情况,这时候,待删结点即是头节点又是...

2019-10-30 17:28:48 260

原创 《剑指offer》c++版本 17.打印从1到最大的N位数

如题:题意就是从1打印直到n位数的最大值,即999999999........。一看就是循环的逻辑。需要注意的地方,除了非法的n之外,就是大数问题了。n太大的话,啥类型都存储不了。普通的解法是使用一个长度为n的字符数组,然后循环对数组做加1操作,然后打印。逻辑不难,但这题有更好的解法。打印1到9999...,相当于打印N位数的全排列,这里用N层循环即可,无需处理加1操作,逻辑上更简单。...

2019-10-30 17:28:39 360

原创 《剑指offer》c++版本 16.数值的整数次方

如题:题目要求一个数的N次方,且不需要考虑大数,看似简单,for循环搞定。仔细详细,问题还挺多。比如,base为0或者指数为负,同时浮点数和0比较也是个问题。很多时候,面试官出的题目看似简单,但如果不加考虑,直接上手就写代码,很容易出现遗漏现象,在面试这种场合,很容易给面试官留下水平低下的映像,面试本来就是一次性的发挥,所以务必小心谨慎,拿到题目想到方案后,一定要考虑各种边界情况以及异常输...

2019-10-30 17:28:34 339

原创 《剑指offer》c++版本 15.二进制中1的个数

如题:平常开发过程中,遇到求数的每位数字的时候,通常做法是将这个逐位右移,本题目计算整数的二进制中1的个数,通过右移的方式,能够解决部分问题,但是,这里有个坑,如果整数为负的话,右移后最左边还是1,如果是循环的话,容易引起死循环。举个例子:负数0x80000000,右移后不是0x40000000,而是0xC0000000,这是因为,移位后,仍要保证是负数,一直右移,最终得到0XFFFFFFFF...

2019-10-30 17:28:28 234

原创 《剑指offer》c++版本 13. 机器人的运动范围

如题:地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?这道题和第12题矩阵中的路径类似,都...

2019-10-30 17:28:10 334

原创 《剑指offer》c++版本 12. 矩阵中的路径

如题,牛客网上题目没有图示,下图是从原书中截图得到的。本题就是从数组中按照指定方向查找字符序列,典型的回溯行为,找到当前字符,继续查找该字符上下左右四个方向,找不到,返回上一个字符,重新查找。题目要求,路径中不能访问同一个字符,可以创建一个等大小的bool二维数组,记录已访问的点,每次访问一个点,置标志位,注意。如果该点的后一个结点不符合,再返回上一个节点前,需要去掉该标志位。使用递归...

2019-10-30 17:28:04 401

原创 《剑指offer》c++版本 11. 旋转数组的最小数字

如题:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。题意就是数组中查找最小值,最直接的方法就是排序后得到最小值,但是题目已经指明,数组为非递减数组。有序数组查...

2019-10-30 17:27:56 328

原创 《剑指offer》c++版本 10. 斐波那契数列

如题:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。这道题基本上学过算法的人都直到,斐波那契数列即,即1,1,2,3,5.......用数学公式描述即 f(n) = f(n-1) + f(n-2),很多教科书上都提供了递归算法,虽然,能够满足,但是效率是在太低了,存在大量重复计算,比如,计算f(5)的时候,需要计算f(4)和f(...

2019-10-30 17:27:51 249 1

原创 《剑指offer》c++版本 9. 用两个栈来实现一个队列

如题:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。本题考察对数据结构队列,栈的理解。队列的特点是FIFO,先进先出。栈的特点是FILO,先进后出。题目要求我们使用两个栈来实现队列的操作,一开始不懂没关系,可以模拟下入队、出队的动作。假设,先入队1,2两个元素,存储到stack1,栈顶为2,这时候要出栈,按照队列规则,应该1先出,怎么办呢?很明显...

2019-10-30 17:27:45 234

原创 《剑指offer》c++版本 7.重建二叉树

如题:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。根据前序和中序数列重建二叉树,这道题,还有一道类似题,根据后续和中序数列重建二叉树。两题解法完全一样,仅仅方向不同。这是学习二叉树的时候必做...

2019-10-30 17:27:40 240

原创 《剑指offer》c++版本 6.从尾到头打印链表

如题:题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。刚到手,想到的是反转链表,然后顺序打印。不过这样会改变原有链表。不过这道题最好的解法是利用递归或者栈,一样的道理。遍历链表,从尾到头,听起来和栈的元素访问顺序一致。因此,可以遍历链表,元素入栈,然后再出栈访问即可。此为方法1.方法2是使用递归,先访问下一个元素,再访问自身。值得注意的是,凡是递归写法,一般都...

2019-10-30 17:27:37 300

原创 《剑指offer》c++版本 5.替换空格

如题:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。这道题难度不大,替换空格,字符串长度边长,需要知道变多长,这时候需要统计空格个数。知道最终字符串长度后,将源字符串从后往前复制到新字符串对应位置即可。编码的时候需要检查输入参数是否合法。//计算str长度,然后统计空...

2019-10-30 17:27:25 243

原创 《剑指offer》c++版本 4.二维数组中的查找

如题:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。非常有趣的一题。题目意思就是从数组中查找指定的数,普通的暴力法,循环遍历数组,可以求取答案,但是效率太低,没有利用题目给的条件。从左到右递增,从上到下递增,如果从左上角[0][0]点开始...

2019-10-30 17:27:19 266

原创 《剑指offer》c++版本 3.数组中重复的数字

如题:题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。方法由很多,四种,显然,排序法和哈希查找法都可以。第三种方法比较巧妙,利用了题目中数字都在0~n-1这个...

2019-10-30 17:27:01 288

原创 Linux面试相关 c程序的运行流程

在Linux中,运行一个程序时,首先由shell调用fork,然后在子进程中真正执行这个命令,首先是调用execve来加载可执行文件,然后将所需要的库文件映射到进程的虚拟内存空间中,此时,进程执行上下文加载完成,开始执行代码段。Linux中程序是以可执行文件的形式存放在磁盘上,可执行文件既包括被执行函数的目标代码,又包括被执行函数使用到的数据,它描述了如何初始化一个新的执行上下文。exec系列...

2019-10-30 17:26:54 285

原创 Leetcode 70. 爬楼梯 动态规划 c语言

假设你正在爬楼梯。需要 n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 +...

2019-10-30 17:26:42 711

原创 20190823 腾讯后台开发 社招 初试 面试总结

2019面经

2019-10-30 17:26:39 324 1

原创 leetcode 236. 二叉树的最近公共祖先 递归解法 c语言

如题:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root =[3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root...

2019-10-30 17:26:15 1721 2

原创 leetcode 105. 从前序与中序遍历序列构造二叉树 c语言递归解法

如题:根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder =[3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7套路题,考察你有没有学习过这种题型。同样的问题还有知道中序与后序构造...

2019-10-30 17:26:08 691

原创 leetcode 101. 对称二叉树 递归解法 c语言

如题:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3这道题刚开始想到的是使用队列+BFS,因为...

2019-10-30 17:26:04 426

原创 堆排序之 大顶堆和小顶堆 c语言

百度得到的堆定义如下:堆的定义如下:n个元素的序列{k1,k2,ki,…,kn}当且仅当满足下关系时,称之为堆。(ki <= k2i,ki <= k2i+1)或者(ki >= k2i,ki >= k2i+1), (i = 1,2,3,4...n/2) 当ki <= k2i的时候,称之为小顶堆,反之则称之为大顶堆。堆排序时间复杂度好坏情况均为n...

2019-10-30 17:25:59 1489

原创 leetcode 703. 数据流中的第K大元素 最小堆解法 c语言

如题:设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第K个不同的元素。你的KthLargest类需要一个同时接收整数k 和整数数组nums的构造器,它包含数据流中的初始元素。每次调用KthLargest.add,返回当前数据流中第K大的元素。示例:int k = 3;int[] arr = [4,5,8,2];KthLargest k...

2019-10-30 17:25:42 553

原创 leetcode 98. 验证二叉搜索树 递归遍历左右子树和中序遍历 c语言解法

如题:给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例1:输入: 2 / \ 1 3输出: true示例2:输入: 5 / \ 1 4 / \ 3 6...

2019-10-30 17:25:15 804

原创 leetcode 454. 四数相加 II c语言

如题:给定四个包含整数的数组列表A , B , C , D ,计算有多少个元组 (i, j, k, l),使得A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度N,且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 - 1 之间,最终结果不会超过231 - 1 。例如:输入:A ...

2019-10-30 17:25:09 544

原创 leetcode 349. 两个数组的交集 两种方案,c语言实现

如题:给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [9,4]说明:输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。属于简单类型,两种方案。方案一:是使...

2019-10-30 17:25:04 2213

原创 leetcode 136. 只出现一次的数字 c语言

题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例2:输入: [4,1,2,1,2]输出: 4这道题如果没有时间复杂度或者空间复杂度,的确不复杂,通过对数组排序后,两两比较,如果存在不等,返回即...

2019-10-30 17:24:57 490

原创 leetcode 739. 每日温度 单调栈解法和暴力法及其优化 c代码

如题:根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用0 来代替。例如,给定一个列表temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是[1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是[1, 30000...

2019-10-30 17:24:51 638

原创 leetcode 279. 完全平方数 bfs广度优先解法 图解 动态规划解法 c代码

如题:给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例1:输入: n = 12输出: 3 解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.这道题和leetcode 752. 打开转盘锁类似,都可以使用广度优先搜索...

2019-10-30 17:24:42 718

原创 leetcode 151. 翻转字符串里的单词 c代码 三种方案

如题:给定一个字符串,逐个翻转字符串中的每个单词。示例 1:输入: "the sky is blue"输出:"blue is sky the"示例 2:输入: " hello world! "输出:"world! hello"解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例 3:输入: "a good example"输...

2019-10-30 17:24:29 1093

原创 leetcode 200.岛屿数量 c代码

题目如下:给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例一:输入:11110110101100000000输出: 1示例二:输入:11000110000010000011输出: 3解法比较简单,遍历数组,遇到陆地1...

2019-10-30 17:24:21 2931

IPv6分片报文

IPv6分片报文,研究 IPv6协议扩展头部的时候可以使用。

2018-07-21

IPv6 UDP报文,

IPv6报文,分析IPv6报文的格式、构成等。希望有帮助。本来不想要分的,拿出来有人需要就看一下

2018-07-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除