面试&&笔试
TT_love9527
聪与敏,可恃而不可恃也,自恃其聪与敏而不学者,自败者也;
昏也庸,可限而不可限也,不自限其昏与庸而力学不倦者,自力者也。
展开
-
三种遍历递归及非递归实现、二分查找法
以下三种遍历递归及非递归实现、二分查找法,要特别熟悉,写代码时一气呵成,中停不要有半点停顿。二分查找法://-----------------------------------------------------//Binary Search//-----------------------------------------------------bool binarySear...原创 2018-06-07 22:08:12 · 246 阅读 · 0 评论 -
剑指offer——机器人的运动范围(13题)
题目:地上有一个m行n列的方格。一个机器人从坐标(0,0)的格子开始移动,它每次可以向左、右、上、下移动一格,但不能入行从坐标和列坐标的数位之各大于k的格子。例如,当k=18时,机器人能够进入方格(35,37),因为3+5+3+7=18。但它不能进入方格(35,38),因为3+5+3+8=19。请问该机器人能够到达多少个格子?此题与12题一样,同样也要运用回溯法,只不过每遍历一个格子时,还要进...原创 2018-09-05 20:03:57 · 238 阅读 · 0 评论 -
二叉树中,打印根节点到指定节点的路径——后序遍历的变型解答
题目:二叉树中,打印根节点到指定节点的路径此类型题目,如上或找两个指定节点的最短路径,一律要往二叉树遍历思想上靠。此题解答即用到后序遍历的改进而来。从二叉树中打印两个指定节点的最短路径,需要用到中序遍历。言归正传。此题代码实现:#include<vector>#include<iostream>using namespace std;stru...原创 2018-09-09 22:58:53 · 3443 阅读 · 1 评论 -
剑指offer——分行从上到下打印二叉树(32题)
题目:分行从上到下打印二叉树,从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印至一行。解决二叉树的遍历问题无外乎就是三种遍历方法,此处增加了按层遍历的条件,即广度优先遍历。解决广度优先遍历,首先想到运用队列。同理,解决深度优先遍历,首先想到到家用递归。想必这是常识,应形成条件反射。该题目的特点是分行哈,可通过设置每行元素个数标志来实现。具体代码见下:#includ...原创 2018-09-18 10:51:27 · 273 阅读 · 0 评论 -
剑指offer——二叉查找树的后序遍历序列(33题)
题目:输入一个整数数组,判断该数组是不是某二叉查找树的后序遍历结果。如是是则返回true,否则返回false。假设输入的数组的任意两个数字互不相同。例如,输入数组{5,7,6,9,11,10,8},则返回true。如果输入的数组是{7,4,6,5},则由于没有哪棵二叉查找树的后序遍历结果是这个序列,因此返回false。思想:从最后一个节点值,分割序列成左子树节点和右子树节点,然后分别递归左子树...原创 2018-09-18 11:49:55 · 132 阅读 · 0 评论 -
剑指offer——复杂链表的复制(35题)
题目:请实现函数复制一个复杂链表。在复杂链表中,每个节点除了有一个pNext指针指向下一个节点,还有一个pSibling指针指向链表中的任意节点或者nullptr。最高效的解题思路:进行三次遍历链表即可,第一次遍历,根据原始链表的每个节点N创建对应的N‘。把N’链接在N的后面。每二次遍历,根据节点N的pSibling指针,构建N‘的pSibling指针。第三次遍历,进行拆链。代码如下所示:...原创 2018-09-24 10:39:55 · 211 阅读 · 0 评论 -
剑指offer——二叉查找树与双向链表(36题)
题目:输入一棵二叉查找树,将该二叉查找树换成一个排序的双向链表,要求不能创建任何新的节点,只能调整树中节点指针的指向。解题思想:又一是道二叉树遍历算法的变型题,一定要往这个方向上面思考。此处采用中序遍历(主体)算法进行解题。#include<iostream>using namespace std;struct TreeNode { int val; TreeNo...原创 2018-09-24 16:12:30 · 212 阅读 · 0 评论 -
剑指offer——数组中出现次数超过一半的数字(39题)
题目:数组中有一个字出现的次数超过数组长度的一半,请找出这个数字。例如,输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。解题思想:一定要紧紧抓住输出数字出现的次数超过数组长度的一半,这一特性。如果排序后,最终输出的数字的下标一定是大于或等于数组总长度的一半mid。于是我们可以利用快排的核心部分代码partition...原创 2018-10-03 15:49:38 · 447 阅读 · 0 评论 -
剑指offer——数据流中的中位数(41题)
题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个值,那么中位数就是所有数值排序之后中间两个数的平均值。解题思路:利用最小堆与最大堆。但凡为偶数位置上的值,插入最大堆;但凡为奇数位置上的值,插入最小堆。如果偶数位置上的值num比最小堆的最小值minVal要大,则将最小堆的minVal弹出,放入最大...原创 2018-10-03 21:48:49 · 250 阅读 · 0 评论 -
大数据处理-Bitmap
MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)"Bit-map空间压缩和快速排序去重1. Bit-map的基本思想 32位机器上,对于一个整型数,比如int a=1 在内存中占32bit位,这是为了方便计算机的运算。但是对于某些应用场景而言,这属于一种巨大的浪费,因为我们可以用对应的32bit位对应存储十进...转载 2018-10-17 22:59:54 · 567 阅读 · 1 评论 -
剑指offer——字符串的排列(38题)
题目:输入一个字符串,打印出该字符串中字符的所有排列。例如,输入字符串abc,则打印出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。先说说此题的悲痛经历吧,9月22号去面试小红书,面试官就给了此变型题让我做,题目是输入一个数字n,输出1-n数字的全排列。当时一看题目好熟悉哈,但真正写起来却眼高手低。想了好久,还是失败告终。。见鬼啦!!所以算法题目还是要...原创 2018-09-29 20:38:25 · 280 阅读 · 0 评论 -
剑指offer——连续子数组的最大和(42题)
题目:输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。此题同时也是leetcode的原题。此处用两种方法解答。方法一,叫不出名字,但只需一次遍历,看代码很好理解。方法二,利用动态规划,dp[i]中存储以第i位置结尾的子序列的最大和。然后最后再求dp中的最大值。方法二的求解复杂度可能会稍高些,但不失为一种方法。...原创 2018-10-10 11:45:00 · 384 阅读 · 0 评论 -
剑指offer——1~n整数中1出现的次数(43题)
题目:输入一个整数n,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1的数字有1、10、11和12,1一共出现了5次。解题思路:将给定的数字分成三部分求解,分别为最高位对应的1个数numFirstDigit、在最高位基础上的剩余位对应的1个数numOtherDigits和除去最高位后利用递归求出1的个数numRecursive。举例:如给定的数字213...原创 2018-10-10 16:12:57 · 320 阅读 · 0 评论 -
找工作:前期准备
放在前面想说的一些话 说实话,从通信转软开,需要补的基础知识有点多。虽然本科时候多少也涉及一些,但全是皮毛,没有深入研究过。比如,TCP的三次握手发生在哪个函数中,如何查看每个报文送达后C/S的状态等看似简单的东西,都不会。一下子要研究这么多的东西,建立一个知识体系是不太可能的,更不要说一蹴而就。但凡事都会有一个过程,其无外乎都是从一开始的白纸,到知道一点、一些,再到全面获知。...原创 2019-01-25 16:27:25 · 1307 阅读 · 4 评论 -
面试官交流中的问题与后感
面试官交流中的问题与后感这部分主要介绍面试C++后台开发/C++开发岗过程中,所被面试的问题;针对被拒或提供offer后,写一些自己对公司录用人所考查方面,当且就算它是面试后感吧。此外,还是想在这部分写一些有关找工作过程中,大家特别关注的问题,以及对我对这些问题的一些看法。如实习经历重要不、笔试如何通过、自身参与项目情况、技术面与HR面各自特点。因为自己也是刚过来人,这些问题在我面试时或准备找...原创 2019-01-25 16:30:22 · 2008 阅读 · 2 评论 -
剑指offer——矩阵中的路径(12题)
题目:设计一个函数,用来判断在一个矩阵中是否存在一条包含某字条串所有字条的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。此题与八皇后一样,是一道典型的“回溯法”应用题型。参考作者的解题思想,给出自己的所写的代码:#include<vector>#include<ios...原创 2018-09-05 19:45:46 · 287 阅读 · 0 评论 -
剑指offer——用两个栈实现队列(9题)和用两个队列实现栈
1、用两个栈实现队列假设为A、B栈(AB栈功能明确)进栈时,只要让A栈负责压入元素;出栈时,只从B栈中弹出元素;如果B栈需要出元素但为空时,需要一次性将A栈元素全部导入到B栈中,再弹出B栈元素。实现代码如下所示:#include<vector>#include<queue>#include<stack>#include<io...原创 2018-09-03 10:16:50 · 173 阅读 · 0 评论 -
剑指offer——树的子结构(26题)
题目:输入两棵二叉树A和B,判断B是不是A的子结构。老生常谈,有关二叉树的题型解答,离不开遍历算法,此题又可以看成是用中序遍历改进法来解答。其思路如下:i、先从A树的根节点开始,一一与B树的节点对应匹配比较;ii、如i不成功,则遍历根的左儿子,重复i过程;iii、如ii不成功,则遍历根的右儿子,重复i过程。代码实现如下:#include<iostream>...原创 2018-09-11 15:40:28 · 140 阅读 · 0 评论 -
插入、选择、冒泡、堆排序、快排、归并排序算法及二叉查找树查找、插入、删除操作
针对排序方法的学习总结: 排序方法中稳定与不稳定的是指待排序集合中存在多个相同关键字相同的数据元素,经过排序后,这些数据元素的相对次序保持不变,即为稳定,否则不稳定。内排序与外排序是指按照排序过程中数据存储的存储设备的不同。内排序指被排序的数据元素全部存放在计算机的内存之中,并且在内存中调整数据元素的相对位置。外排序指数据元素主要存放在外存储器中,借助于内存储器逐步调整数据元素之间的相...原创 2018-06-08 16:46:51 · 280 阅读 · 0 评论 -
求字符串中最长回文字符串
刷第二遍leetcode了啦!本题的解法见证了自己对解回文子字符串题目的认知过程。有点感触,便记录了两种解法。第一种是有多幼稚哈,但也是学习过程中的一部分。对自己喊加油,再刷100道题。题目:Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of...原创 2018-07-06 11:00:41 · 642 阅读 · 3 评论 -
在一个数列中寻找两个数2sum、三个数3sum、四个数4sum分别求和等于目标式
2sum:Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the sa...原创 2018-07-07 12:15:42 · 327 阅读 · 0 评论 -
0-1背包、完全背包、多重背包问题求解
背包问题无外乎是利用动态规划的思想求解。而求解动态规划问题最主要是寻找到核心推导式(有些问题隐藏的非常深,一眼很难看出来)。这里不再介绍动态规划的思想,主要讲解背包问题,闲话少说,直接上题。1、0-1背包问题描述:有编号分别为a,b,c,d,e的五件物品,它们的重量weight分别是2,2,6,5,4,它们的价值value分别是6,3,5,4,6,每件物品数量只有一个,现在给你个承重为C=...原创 2018-08-10 21:05:44 · 628 阅读 · 0 评论 -
非加权图的单源最短路径问题(解法:BFS)以及BFS、DFS的简单实现
1、非加权图的单源最短路径问题(解法:BFS)此问题可以利用Dijkstra算法求解时,只需要把所有边的权值看成1即可,但复杂度高。此处利用BFS加以求解。以下给定几个参数方便存储信息。非加权单源最短路径解法:BFS start: 有向图中的计算的起始结点 dist: 存储结点到源结点的距离的数组,初始值为无穷大,虽然每条边权值都相等,但源结点到所求结点经过几条...原创 2018-08-14 11:15:43 · 1695 阅读 · 0 评论 -
大数的加减乘除及其求模运算
此处大数问题针对的操作数是非负整数,如果需要包含负整数范围内的运算,需改动代码(此部分后续再添加吧)。现在主要是针对笔试中出现的大数运算的求解问题。另外说明,i、以下函数可以放在一个类内里面,只提供接口,在别处定义,实现接口与实现分离。ii、乘法函数需要加法函数,除法函数需要加法、减法和乘法函数。iii、求模函数与除法函数只是返回值不一样,除法函数只是返回商的整数部分。#in...转载 2018-08-07 17:00:51 · 470 阅读 · 1 评论 -
加权图的单源最短路径问题——解法:DijKstra算法
问题都是老生常谈,不再介绍,此处给出算法思想(自己总结的,别人写好的)、以及代码实现。1、自己总结算法思想记新加入顶点的集合为S,余下顶点的集合为V-S. i、取一个起始顶点,加入S中。 ii、从V-S集合中,寻找出最短路径距离信息的结点,加入S集合中。 iii、对新加入S中的顶点,更新新加入顶点到V-S中邻接顶点的路径距离信息,...转载 2018-08-13 20:55:45 · 621 阅读 · 0 评论 -
剑指offer——树中两个节点的最低公共祖先(68题)
求树中两个节点的最低公共祖先,此题可由多道题构成。变型一:如果该树是二叉查找树,求树中A、B两个节点的最低公共祖先,方法如下:1、如果遍历结点C的值比A、B结点的值都大,那么最低公共祖先在C的左子树上,于是到C的左子树上重复1、2、32、如果遍历结点C的值比A、B结点的值都小,那么最低公共祖先在C的左子树上,于是到C的右子树上重复1、2、33、否则遍历结点C即是结点A、B的最低公共祖...原创 2018-08-27 17:31:44 · 268 阅读 · 0 评论 -
面试中计算机网络高频问题汇总
1. tcp和udp的区别【1】 tcp是面向连接的,udp是面向无连接的面向连接:就是tcp传输之前要先发送连接请求和应答包,确定双方能够正常传输后,才会进行数据传输无连接:udp在发送数据之前,并不考虑对方能否接受到,甚至目的地址可能是无效的【2】 tcp能保证可靠传输,udp不能保证可靠传输所谓可靠性就是指tcp能保证把数据一定能送到目的地址,为了实现...转载 2018-08-23 23:30:14 · 360 阅读 · 0 评论 -
剑指offer——包含max函数的栈(30题)和队列(59题)
1、包含max函数的栈思想很简单,在申请一个数据栈的同时也申请一个辅助栈。辅助栈用来存放数据栈中最大值与新压入栈元素两者间的较大值,也就是说辅助栈的栈顶元素永远都是数据栈元素的最大值。实现代码如下:#include<iostream>#include<stack>#include<assert.h>using namespace std;...原创 2018-08-24 10:45:38 · 902 阅读 · 0 评论 -
DOS攻击之详解--转载
直接考参博文:https://www.cnblogs.com/davidwang456/p/3590846.html源地址没有找到,间接引用地址:http://wushank.blog.51cto.com/3489095/1156004DoS到底是什么?接触PC机较早的同志会直接想到微软磁盘操作系统的DOS--DiskOperationSystem?不,此DoS非彼DOS也,DoS即Den...转载 2018-08-28 17:40:59 · 3722 阅读 · 0 评论 -
剑指offer——旋转数组的最小数字(11题)
1、第一题引至剑指offer题目:把一个数组最开始的若干元素搬到数组的末尾,称其为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1.解此题分两种情况第一种情况:前后指针与中间指针所指向的元素不同时,如果中间元素比前端元素大,最小值位于中间元素的右边;如果中间元素比后端元素...原创 2018-09-04 10:15:10 · 154 阅读 · 0 评论 -
从B 树、B+ 树、B* 树谈到R 树
从B 树、B+ 树、B* 树谈到R 树 此博文直接参考链接:https://blog.csdn.net/v_july_v/article/details/6530142作者:July、weedge、Frankie。编程艺术室出品。说明:本文从B树开始谈起,然后论述B+树、B*树,最后谈到R 树。其中B树、B+树及B*树部分由weedge完成,R 树部分由Frankie完成,全文最终由J...转载 2018-08-25 22:42:10 · 340 阅读 · 0 评论 -
剑指offer——重建二叉树(7题)
给定前序遍历序列和中序遍历序列,恢复出二叉树。前序序列{1,2,4,7,3,5,6,8},中序序列{4,7,2,1,5,3,8,6}其复原思想:利用递归思想,前序找根结点,利用中序确定左子树结点个数和右子树的结点个数。接着从前序中分别递归到左右子树中去重建二叉树。递归的结束条件只剩一个结点且前序和中序所指向的是同一结点。代码见下:#include<iostrea...原创 2018-09-02 14:50:50 · 346 阅读 · 0 评论 -
签约选择
签约选择 克服了前面的种种困难,能走进这一步,真是要恭喜你。恭喜你进入权利反转阶段,这里主要是说明你如何去选择公司啦!想必这个时候,作为offer收割机的你,在打算和哪家公司签约的问题上犯愁。说实话,我是有多么喜欢这种犯愁的事,无以言表,哈哈哈。在洽谈签约上,或许能给你少许帮助的就是不要让获得多少薪酬的事困扰你以及如何使得你所能获得薪酬利益最大化。为此,主要从可参考的资源、自身...原创 2019-02-21 11:44:27 · 543 阅读 · 1 评论