03 2019 档案
摘要:分析: 就这我还想了半个小时呢,时间复杂度倒是不高,O(N)。但是空间复杂度高,也是O(N)。题解给了一种算法思路,能把空间复杂度降为O(1)。 我昨天想到这个算法的一点头绪,但是没注意保存最大值,导致没再继续往下想,尴尬。
阅读全文
摘要:分析: 用递归的思想,考虑边界情况也是停止条件,就是NULL的情况,返回左右子节点最大值加一就可以了。
阅读全文
摘要:分析: 这个题有意思,我以前还学过数电,当年也是在书上也是认真推导过格雷编码的人,现在。。。 虽然忘了真正编码的过程,但是我看题目描述以及自己动手查看了一下,发现只要只改变一位,总会遍历全部的值,在这个基础上,我想到只改变一位瞎遍历,也不能全瞎,用一个辅助空间真假判断某个值是否已被遍历。 重点来了,
阅读全文
摘要:分析: 神仙题目啊,直接复制过来写个sort()就完了(我看那评论区很多人都这么做的),我一开始不知道后面是补零的,还想着用迭代器去做,然后就是一堆报错啥的,后来所幸直接当排序题做了,这里用的是插入排序,因为相对来说这个比较简单,前后是两个排序好的数组,最差的情况就是后面的那个最小值大于前面的最大值
阅读全文
摘要:分析: 这个算法本质是这样的: 给了一个K位的数组,他的组合应该是从 0: [NULL] [NULL] [NULL] ........ [NULL] 1: [num1] [num2] [num3] ........ [numK] 里面组合得到的。 文字描述:对每一个位置上可能选取0/1,分别代表空/
阅读全文
摘要:分析; 就知道三行的递归过不去,用数组也没差啦,只不过用unsigned long long连50阶楼梯都溢出,本想改用字符串,但是抱着试一试的态度提交一下,没想到过了,看了leecode认为没有五十阶的楼梯吧(不能够啊,西安地铁都几十阶),那就是leecode认为五十阶的楼梯可以装电梯了,只需要一
阅读全文
摘要:分析: 这题比较有意思,一开始想到动态规划,然后用递归写了不到六行的代码,但是提示我时间超时了。后来一想递归的确太占内存和时间了,为了解决这个问题,我想到用循环,但一开始没想到辅助空间实现动态规划,还是只想着从开头遍历,想了一会才觉得用辅助空间,然后就是画图,找找规律,然后发现从目的地回溯真的很好用
阅读全文
摘要:分析: 这个算法时间复杂度,因为只是遍历两遍链表,理论上是O(n),为了得到链表长度多遍历一遍,想了半天也没有其他的路子,后来想想相比一点点挪应该是快的吧。 写的时候有两个关键地方第一时间都没想到,第一是新节点的计算,由于举得案例不全,也巧合,导致我一开始写的不对。第二是没注意到新的节点就是头结点的
阅读全文
摘要:分析: 今天散会早,忍不住又做了一道。和上个题异曲同工,但是这里需要初始化一下。
阅读全文
摘要:分析: 如注释,错了两处,惭愧啊,这个还在剑指offer看过,第二个这种错误还能犯,注意力太不集中了,第一个倒是头疼了一下,cout检测过程中突然想到的。 状态不好,晚上还得开周会,今天不做了。
阅读全文
摘要:分析: 这个题在剑指offer上见过,所以思路还在,写的也算快,唯一有错误的是max_num初始化,我没有考虑全负的情况(也是自己写的有点快,自我感觉太熟了还真不好)。
阅读全文
摘要:分析: 痛快,在分析好要做什么之后,咔咔咔就写出来了,除了一处笔误,其他畅通无阻啊,一次提交就过了。 但是暴露的问题有,这个题情况偏简单,几乎没有边界条件,所以我分析案例不难。其次就是在迭代和循环上犹豫了好久,因为迭代中输入返回被指定了,写起来如上那么复杂,循环想了半天感觉更难写了,所以直接就用迭代
阅读全文
摘要:分析: 这题我写了半天,不是思想有问题,主要部分第一时间就写好了,就卡在二维数组建立上了,不知道为啥string不方便,只好改用char,用了char初始化还不让我循环初始化,只好用memset,下面的就是忘了对超出'9'的复位后-1,其他就没啥了,感觉这个题思想很简单,考的是编程能力。
阅读全文
摘要:分析: 一开始我没有想到全部的案例,在有限的案例下想到一个一般但不足以解决全部案例的想法,后来提交有错时不停加条件,发现越来越乱,于是重新想了个思路。 可是太恶心了啊,好难想到全部的案例!! 尤其是这种数组题。 饶命啊。
阅读全文
摘要:分析: 这个题,我写了一万年,丢人的事简直数不胜数,被自己智商深深打败。 思路根本就不清晰!一点都不清晰!啥啊想的那乱七八糟的! 我一开始想着跳跃式把后面重复的一次复制过来,写到一半想到如果过程中有特多重复的数字,那个数字后续可能会被再次检测出来,后来开始一步一步移,但是就在检测步骤的时候我炸了,我
阅读全文
摘要:分析: 结合之前的写好的两个排序的思想,这个几乎没有阻碍就写出来了,但是明显写的慢,对vector没有python的切片这种都不太清晰,明显经验不足。 但是这个题给我提示,还是要画图,分析又快又好,关键是能验证你的想法能不能行。 而且,一个困难的问题,可以拆成多了小题解决,比如这个,分为递归归并策略
阅读全文
摘要:分析: 这次做的挺好的,只有一处错误,就是忘了设置l1的第一个值一定小于l2的第一个值。其他没有任何错误,做的如此顺利的原因在于我通过画图举例,尽可能把所有案例都想到了,然后对比图示写的(链表不画图纯靠脑子我会懵),好吧其实还是这个题简单。 这个题给我做题的经验,就是先画图,举例,实现一般功能的案例
阅读全文
摘要:分析: 一个简单题啊,还是情况没分析到位,一开始思路错了。 后来思路对了,但是程序总是有毛病,但是总得来说还是情况没分析到位。
阅读全文
摘要:分析: 和上个类似,也是O(n^2)时间复杂度遍历。
阅读全文
摘要:分析: 不写代码永远不知道自己有多菜,一个快排写的我哭了,然后说主要思想: 未注释的是别人的代码,排序后,令【a,。。。。,b,c】这种形式,让c从右往左遍历,a初始化为0,从左向右移动,b初始化c-1,从右往左移动。在c遍历中,计算a+b,若a+b<-c,说明a太小了,a++,若a+b>-c,说明
阅读全文
摘要:分析: 错误都在上面了,唉,真是太惨了,改bug比写代码时间都长。 题解给了好多思想,分治啊二分啊等等,但是懒得看了,我这个时间复杂度最多也是O(s),其中 S为数组里所有字符串中字符数量的总和。
阅读全文
摘要:分析: 一开始想到双循环遍历,但是时间复杂度为O(n^2),后来想到双指针法,在距离尽可能大的情况,由于受边最小值影响,使值小指针往中间靠,这样时间复杂度O(n),也没有增加空间复杂度(都是O(1))。
阅读全文
摘要:分析: 我看到人家问能不能不用字符串,第一反应是,哦,可以用字符串啊。。。。 这个思路好像也不难,就不写字符串了,但是我还是出现了两处失误,一处是写的太快了,脑子没跟上手,一个就是那个long,之前int,碰到一个溢出的数,按理是要考虑的。
阅读全文
摘要:总结: 这题我在剑指offer书上看过,情况稍微有点不一样,但大部分特殊情况我都还记得(还没超过三天)。。 这题按部就班写没啥,就是编程还是不熟练,且太粗心,还是练得少。
阅读全文
摘要:题解给的思路: 分析:我和题解的思路不同在于判断溢出的方式,我是设置了一个较大类型(long)的数字,然后根据符号位(flag)判断是否向上(y > 0x7FFFFFFF)还是向下(y < (signed int)0x80000000)溢出,注意这里必须要有signed int,不然默认无符号。 题
阅读全文
摘要:分析: 开始时候想到的是另一种动态规划法:开始时从头遍历每个字符,在每个字符开始时,设置一个尾指针从尾到头遍历,若二者相同,就判断这俩内部是不回文(写个小循环即可)。这个虽然写了三个循环,但是循环条件可以加上“当前两个指针距离大不大于最大的回文子串长度”,若小于,即便是回文也没必要判断了,这样一来虽
阅读全文
摘要:题解: 总结: 我很惭愧,这个题写了三个多小时都没做出来,我一开始看到时间复杂度,想到二分法,然后不停判断并删除两个数组中大于中位数的值,然后稳定条件是两个数组剩余个数是m+n的一半,程序就是有问题。。。 总得来说还是没有洞悉最有价值的规律,分析情况又把我绕迷糊了,唉,学习到了。
阅读全文
摘要:分析: 考察链表和编程能力 这个时间复杂度为O(max(m,n)),空间复杂度也是O(max(m,n)) 总结: 编程还是不够熟练,循环里两个if没有第一时间想到,还有为了让顶位为0不显示,我居然写了好几遍,尴尬。
阅读全文
摘要:一、卷积神经网络参数计算 CNN一个牛逼的地方就在于通过感受野和权值共享减少了神经网络需要训练的参数的个数,所谓权值共享就是同一个Feature Map中神经元权值共享,该Feature Map中的所有神经元使用同一个权值。因此参数个数与神经元的个数无关,只与卷积核的大小及Feature Map的个
阅读全文
摘要:// 面试题64:求1+2+…+n // 题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case // 等关键字及条件判断语句(A?B:C)。 #include // ====================方法一==================== //使用构造函数 class Temp { public: Temp() { +...
阅读全文
摘要:// 面试题68:树中两个结点的最低公共祖先 // 题目:输入两个树结点,求它们的最低公共祖先。 #include #include "Tree.h" #include using namespace std; bool GetNodePath(const TreeNode* pRoot, const TreeNode* pNode, list& path)//找到根节点到指定节点的路...
阅读全文
摘要:// 面试题67:把字符串转换成整数 // 题目:请你写一个函数StrToInt,实现把字符串转换成整数这个功能。当然,不 // 能使用atoi或者其他类似的库函数。 #include long long StrToIntCore(const char* str, bool minus); enum Status { kValid = 0, kInvalid }; int g_nStat...
阅读全文
摘要:// 面试题66:构建乘积数组 // 题目:给定一个数组A[0, 1, …, n-1],请构建一个数组B[0, 1, …, n-1],其 // 中B中的元素B[i] =A[0]×A[1]×… ×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。 #include #include using namespace std; //把B[i]看成[=A[0],A[1],… ,A[i-...
阅读全文
摘要:// 面试题65:不用加减乘除做加法 // 题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、×、÷ // 四则运算符号。 #include int Add(int num1, int num2) { int sum, carry; do { sum = num1 ^ num2;//第一步,使用异或求和(没有进位) ca...
阅读全文
摘要:// 面试题63:股票的最大利润 // 题目:假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖交易该股 // 票可能获得的利润是多少?例如一只股票在某些时间节点的价格为{9, 11, 8, 5, // 7, 12, 16, 14}。如果我们能在价格为5的时候买入并在价格为16时卖出,则能 // 收获最大的利润11。 #include //如果从头到尾遍历所有的数对,时间复杂度O(n^...
阅读全文
摘要:// 面试题62:圆圈中最后剩下的数字 // 题目:0, 1, …, n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里 // 删除第m个数字。求出这个圆圈里剩下的最后一个数字。 #include #include using namespace std; // ====================方法1==================== //使用环形链表 int L...
阅读全文
摘要:// 面试题61:扑克牌的顺子 // 题目:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。 // 2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王可以看成任意数字。 #include int Compare(const void *arg1, const void *arg2); bool IsContinuous(int* numbers, i...
阅读全文
摘要:// 面试题60:n个骰子的点数 // 题目:把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s // 的所有可能的值出现的概率。 #include #include int g_maxValue = 6; // ====================方法一==================== //使用递归,还是会有重复计算 void Probability(i...
阅读全文
摘要:// 面试题59(二):队列的最大值 // 题目:给定一个数组和滑动窗口的大小,请找出所有滑动窗口里的最大值。例如, // 如果输入数组{2, 3, 4, 2, 6, 2, 5, 1}及滑动窗口的大小3,那么一共存在6个 // 滑动窗口,它们的最大值分别为{4, 4, 6, 6, 6, 5}, #include #include #include using namespace std...
阅读全文
摘要:// 面试题59(一):滑动窗口的最大值 // 题目:给定一个数组和滑动窗口的大小,请找出所有滑动窗口里的最大值。例如, // 如果输入数组{2, 3, 4, 2, 6, 2, 5, 1}及滑动窗口的大小3,那么一共存在6个 // 滑动窗口,它们的最大值分别为{4, 4, 6, 6, 6, 5}, #include #include #include using namespace s...
阅读全文
摘要:// 面试题58(二):左旋转字符串 // 题目:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。 // 请定义一个函数实现字符串左旋转操作的功能。比如输入字符串"abcdefg"和数 // 字2,该函数将返回左旋转2位得到的结果"cdefgab"。 #include #include void Reverse(char *pBegin, char *pEnd); ch...
阅读全文
摘要:// 面试题58(一):翻转单词顺序 // 题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。 // 为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ", // 则输出"student. a am I"。 #include void Reverse(char *pBegin, char *pEnd); char* Reverse...
阅读全文
摘要:// 面试题57(二):为s的连续正数序列 // 题目:输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数)。 // 例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以结果打印出3个连续序列1~5、 // 4~6和7~8。 #include void PrintContinuousSequence(int small, int big); void Find...
阅读全文
摘要:// 面试题57(一):和为s的两个数字 // 题目:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们 // 的和正好是s。如果有多对数字的和等于s,输出任意一对即可。 #include bool FindNumbersWithSum(int data[], int length, int sum, int* num1, int* num2) { bool ...
阅读全文
摘要:// 面试题56(二):数组中唯一只出现一次的数字 // 题目:在一个数组中除了一个数字只出现一次之外,其他数字都出现了三次。请 // 找出那个吃出现一次的数字。 #include int FindNumberAppearingOnce(int numbers[], int length) { if (numbers == nullptr || length = 0; --j)//...
阅读全文
摘要:// 面试题56(一):数组中只出现一次的两个数字 // 题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序 // 找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 #include unsigned int FindFirstBitIs1(int num); bool IsBit1(int num, unsigned int indexBi...
阅读全文
摘要:// 面试题55(二):平衡二叉树 // 题目:输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中 // 任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。 #include #include "BinaryTree.h" // ====================方法1==================== //迭代的从上到下,判断每个节点是否是平衡树,...
阅读全文
摘要:// 面试题55(一):二叉树的深度 // 题目:输入一棵二叉树的根结点,求该树的深度。从根结点到叶结点依次经过的 // 结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 //如果左右节点只有一个存在,则深度为该存在的节点的深度+1 //如果左右节点都存在,则深度为最大子节点深度+1 #include #include "BinaryTree.h" int TreeDep...
阅读全文
摘要:// 面试题54:二叉搜索树的第k个结点 // 题目:给定一棵二叉搜索树,请找出其中的第k大的结点。 #include #include "BinaryTree.h" const BinaryTreeNode* KthNodeCore(const BinaryTreeNode* pRoot, unsigned int& k); const BinaryTreeNode* KthNode(...
阅读全文
摘要:// 面试题53(三):数组中数值和下标相等的元素 // 题目:假设一个单调递增的数组里的每个元素都是整数并且是唯一的。请编程实 // 现一个函数找出数组中任意一个数值等于其下标的元素。例如,在数组{-3, -1, // 1, 3, 5}中,数字3和它的下标相等。 //思想:因为这里也是递增的,如果中间点的值大于下标,那后面所有值都会大于相应下标,同理中间点小于下标,前面都会小于下标 #inc...
阅读全文
摘要:// 面试题53(二):0到n-1中缺失的数字 // 题目:一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字 // 都在范围0到n-1之内。在范围0到n-1的n个数字中有且只有一个数字不在该数组 // 中,请找出这个数字。 #include //可以用等差数列求和得到A,然后求数组全部数字和B,然后A-B是缺失的数字,但是该算法时间复杂度是O(n),没有利用递增排序的特点 ...
阅读全文
摘要:// 面试题53(一):数字在排序数组中出现的次数 // 题目:统计一个数字在排序数组中出现的次数。例如输入排序数组{1, 2, 3, 3, // 3, 3, 4, 5}和数字3,由于3在这个数组中出现了4次,因此输出4。 #include int GetFirstK(const int* data, int length, int k, int start, int end); int ...
阅读全文
摘要:// 面试题52:两个链表的第一个公共结点 // 题目:输入两个链表,找出它们的第一个公共结点。 #include #include "List.h" unsigned int GetListLength(ListNode* pHead); //下面这个时间复杂度是O(m+n),且不用辅助空间 //另一种方法是使用两个栈,从尾到头比较,这样时间复杂度不变,空间复杂度O(m+n) ListN...
阅读全文
摘要:// 面试题51:数组中的逆序对 // 题目:在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组 // 成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。 #include using namespace std; int InversePairsCore(int* data, int* copy, int start, int end); int InverseP...
阅读全文
摘要:// 面试题50(二):字符流中第一个只出现一次的字符 // 题目:请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从 // 字符流中只读出前两个字符"go"时,第一个只出现一次的字符是'g'。当从该字 // 符流中读出前六个字符"google"时,第一个只出现一次的字符是'l'。 #include #include using namespace std; class ...
阅读全文
摘要:// 面试题50(一):字符串中第一个只出现一次的字符 // 题目:在字符串中找出第一个只出现一次的字符。如输入"abaccdeff",则输出 // 'b'。 #include #include //使用一个长度为常量的哈希表,两次遍历,时间复杂度O(n),空间复杂度O(1) char FirstNotRepeatingChar(const char* pString) { if ...
阅读全文
摘要:// 面试题49:丑数 // 题目:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。求按从小到 // 大的顺序的第1500个丑数。例如6、8都是丑数,但14不是,因为它包含因子7。 // 习惯上我们把1当做第一个丑数。 #include // ====================算法1的代码==================== //不用额外的内存,直接计算 boo...
阅读全文
摘要:// 面试题48:最长不含重复字符的子字符串 // 题目:请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子 // 字符串的长度。假设字符串中只包含从'a'到'z'的字符。 #include #include // 方法一:蛮力法 //不想说话 // 方法一:动态规划 int longestSubstringWithoutDuplication_2(const std::...
阅读全文
摘要:// 面试题47:礼物的最大价值 // 题目:在一个m×n的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值 // (价值大于0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向左或 // 者向下移动一格直到到达棋盘的右下角。给定一个棋盘及其上面的礼物,请计 // 算你最多能拿到多少价值的礼物? #include #include int getMaxValue_solution1(...
阅读全文
摘要:// 面试题46:把数字翻译成字符串 // 题目:给定一个数字,我们按照如下规则把它翻译为字符串:0翻译成"a",1翻 // 译成"b",……,11翻译成"l",……,25翻译成"z"。一个数字可能有多个翻译。例 // 如12258有5种不同的翻译,它们分别是"bccfi"、"bwfi"、"bczi"、"mcfi"和 // "mzi"。请编程实现一个函数用来计算一个数字有多少种不同的翻译方法。 ...
阅读全文
摘要:// 面试题45:把数组排成最小的数 // 题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼 // 接出的所有数字中最小的一个。例如输入数组{3, 32, 321},则打印出这3个数 // 字能排成的最小数字321323。 #include #include #include int compare(const void* strNumber1, const vo...
阅读全文
摘要:// 面试题44:数字序列中某一位的数字 // 题目:数字以0123456789101112131415…的格式序列化到一个字符序列中。在这 // 个序列中,第5位(从0开始计数)是5,第13位是1,第19位是4,等等。请写一 // 个函数求任意位对应的数字。 #include #include using namespace std; int countOfIntegers(int ...
阅读全文
摘要:// 面试题43:从1到n整数中1出现的次数 // 题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如 // 输入12,从1到12这些整数中包含1 的数字有1,10,11和12,1一共出现了5次。 #include #include #include // ====================方法一==================== //逐个判断,时间...
阅读全文
摘要:// 面试题42:连续子数组的最大和 // 题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整 // 数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。 #include bool g_InvalidInput = false;//全局错误处理方式 int FindGreatestSumOfSubArray(int *pData, int nLen...
阅读全文
摘要:// 面试题41:数据流中的中位数 // 题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么 // 中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值, // 那么中位数就是所有数值排序之后中间两个数的平均值。 #include #include #include using namespace std; template class Dyn...
阅读全文
摘要:// 面试题40:最小的k个数 // 题目:输入n个整数,找出其中最小的k个数。例如输入4、5、1、6、2、7、3、8 // 这8个数字,则最小的4个数字是1、2、3、4。 #include #include #include #include using namespace std; // ====================方法1==================== ...
阅读全文
摘要:// 面试题39:数组中出现次数超过一半的数字 // 题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例 // 如输入一个长度为9的数组{1, 2, 3, 2, 2, 2, 5, 4, 2}。由于数字2在数组中 // 出现了5次,超过数组长度的一半,因此输出2。 #include using namespace std; /*Random Partition*/ int...
阅读全文
摘要:0、算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时
阅读全文
摘要:顺序查找(线性查找) 1、基础内容 顺序查找(Sequential Search)又叫线性查找,是最基本的查找技术。它的查找过程为:从表中第一个(或最后一个)记录开始,逐个进行记录的关键字和给定值比较,如果某个记录的关键字和给定值相等,则查找成功,找到所查的记录。如果直到最后一个(或第一个)记录,其
阅读全文
摘要:// 面试题38:字符串的排列 // 题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc, // 则打印出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。 #include void Permutation(char* pStr, char* pBegin); void Permutation(char* pStr) { ...
阅读全文
摘要:// 面试题37:序列化二叉树 // 题目:请实现两个函数,分别用来序列化和反序列化二叉树。 #include "BinaryTree.h" #include #include using namespace std; void Serialize(const BinaryTreeNode* pRoot, ostream& stream)//序列化二叉树,ostream写文件流 { ...
阅读全文
摘要:// 面试题36:二叉搜索树与双向链表 // 题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求 // 不能创建任何新的结点,只能调整树中结点指针的指向。 #include #include "BinaryTree.h" //这个程序看的我真的是头大如牛 void ConvertNode(BinaryTreeNode* pNode, BinaryTreeNode** p...
阅读全文
摘要:文件ComplexList.h 文件ComplexList.cpp
阅读全文
摘要:// 面试题34:二叉树中和为某一值的路径 // 题目:输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所 // 有路径。从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 #include #include "BinaryTree.h" #include using namespace std; void FindPath(BinaryTreeNode* pRoo...
阅读全文
摘要:// 面试题33:二叉搜索树的后序遍历序列 // 题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。 // 如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。 #include // BST:Binary Search Tree,二叉搜索树 bool VerifySquenceOfBST(int sequence[], int lengt...
阅读全文
摘要:// 面试题32(三):之字形打印二叉树 // 题目:请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺 // 序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印, // 其他行以此类推。 #include #include "BinaryTree.h" #include void Print(BinaryTreeNode* pRoot) { if...
阅读全文
摘要:// 面试题32(二):分行从上到下打印二叉树 // 题目:从上到下按层打印二叉树,同一层的结点按从左到右的顺序打印,每一层 // 打印到一行。 #include #include "BinaryTree.h" #include void Print(BinaryTreeNode* pRoot) { if (pRoot == nullptr) return; ...
阅读全文
摘要:// 面试题32(一):不分行从上往下打印二叉树 // 题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。 #include #include "BinaryTree.h" #include void PrintFromTopToBottom(BinaryTreeNode* pRoot) { if (pRoot == nullptr) re...
阅读全文
摘要:// 面试题31:栈的压入、弹出序列 // 题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是 // 否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1、2、3、4、 // 5是某栈的压栈序列,序列4、5、3、2、1是该压栈序列对应的一个弹出序列,但 // 4、3、5、1、2就不可能是该压栈序列的弹出序列。 #include #include bool Is...
阅读全文
摘要:// 面试题30:包含min函数的栈 // 题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min // 函数。在该栈中,调用min、push及pop的时间复杂度都是O(1)。 #include #include #include //////////////////////////定义一个模板类/////////////////////////// template...
阅读全文
摘要:// 面试题29:顺时针打印矩阵 // 题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 #include void PrintMatrixInCircle(int** numbers, int columns, int rows, int start); void printNumber(int number); void PrintMatrixClockwisel...
阅读全文
摘要:// 面试题28:对称的二叉树 // 题目:请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和 // 它的镜像一样,那么它是对称的。 #include #include "BinaryTree.h" bool isSymmetrical(BinaryTreeNode* pRoot1, BinaryTreeNode* pRoot2); bool isSymmetrical(B...
阅读全文
摘要:// 面试题27:二叉树的镜像 // 题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。 #include #include "BinaryTree.h" #include void MirrorRecursively(BinaryTreeNode *pNode)//递归算法(自下而上) { if ((pNode == nullptr) || (pNode->m_pLef...
阅读全文
摘要:// 面试题26:树的子结构 // 题目:输入两棵二叉树A和B,判断B是不是A的子结构。 #include struct BinaryTreeNode { double m_dbValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRight; }; boo...
阅读全文
摘要:// 面试题25:合并两个排序的链表 // 题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按 // 照递增排序的。例如输入图3.11中的链表1和链表2,则合并之后的升序链表如链 // 表3所示。 #include #include "List.h" ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { if...
阅读全文
摘要:// 面试题24:反转链表 // 题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的 // 头结点。 #include #include "List.h" ListNode* ReverseList(ListNode* pHead) { ListNode* pReversedHead = nullptr;//设置三个节点变量,第一是已经被反转的头节点(原链表尾节...
阅读全文
摘要:// 面试题23:链表中环的入口结点 // 题目:一个链表中包含环,如何找出环的入口结点?例如,在图3.8的链表中, // 环的入口结点是结点3。 #include #include "List.h" ListNode* MeetingNode(ListNode* pHead)//鲁棒一:先确定有没有环,有的话先求得环中任意一个节点 { if (pHead == nullptr)/...
阅读全文
摘要:// 面试题22:链表中倒数第k个结点 // 题目:输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯, // 本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点, // 从头结点开始它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个结点是 // 值为4的结点。 //O(n)的解法:维护两个指针,让A走B前头,前K步,A到头,B就是解了,但是这个问题...
阅读全文
摘要:// 面试题21:调整数组顺序使奇数位于偶数前面 // 题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有 // 奇数位于数组的前半部分,所有偶数位于数组的后半部分。 #include void Reorder(int *pData, unsigned int length, bool(*func)(int)); bool isEven(int n); // ====...
阅读全文
摘要:// 面试题20:表示数值的字符串 // 题目:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如, // 字符串“+100”、“5e2”、“-123”、“3.1416”及“-1E-16”都表示数值,但“12e”、 // “1a3.14”、“1.2.3”、“+-5”及“12e+5.4”都不是 #include bool scanUnsignedInteger(const ch...
阅读全文
摘要:// 面试题19:正则表达式匹配 // 题目:请实现一个函数用来匹配包含'.'和'*'的正则表达式。模式中的字符'.' // 表示任意一个字符,而'*'表示它前面的字符可以出现任意次(含0次)。在本题 // 中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a" // 和"ab*ac*a"匹配,但与"aa.a"及"ab*a"均不匹配。 #include using ...
阅读全文
摘要:// 面试题18(二):删除链表中重复的结点 // 题目:在一个排序的链表中,如何删除重复的结点?例如,在图3.4(a)中重复 // 结点被删除之后,链表如图3.4(b)所示。 #include #include "List.h" using namespace std; void DeleteDuplication(ListNode** pHead)//注意有可能删除头结点,所以是** ...
阅读全文
摘要:// 面试题18(一):在O(1)时间删除链表结点 // 题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该 // 结点。 #include #include "List.h" void DeleteNode(ListNode** pListHead, ListNode* pToBeDeleted) { if (!pListHead || !pToBeDel...
阅读全文
摘要:// 面试题17:打印1到最大的n位数 // 题目:输入数字n,按顺序打印出从1最大的n位十进制数。比如输入3,则 // 打印出1、2、3一直到最大的3位数即999。 #include #include using namespace std; void PrintNumber(char* number); bool Increment(char* number); void Print...
阅读全文
摘要:// 面试题:数值的整数次方 // 题目:实现函数double Power(double base, int exponent),求base的exponent // 次方。不得使用库函数,同时不需要考虑大数问题。 #include #include using namespace std; bool g_InvalidInput = false;//使用全局变量作为错误处理方式 bool...
阅读全文
摘要:// 面试题:剪绳子 // 题目:给你一根长度为n绳子,请把绳子剪成m段(m、n都是整数,n>1并且m≥1)。 // 每段的绳子的长度记为k[0]、k[1]、……、k[m]。k[0]*k[1]*…*k[m]可能的最大乘 // 积是多少?例如当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此 // 时得到最大的乘积18。 #include #include // =======...
阅读全文
摘要:// 面试题:机器人的运动范围 // 题目:地上有一个m行n列的方格。一个机器人从坐标(0, 0)的格子开始移动,它 // 每一次可以向左、右、上、下移动一格,但不能进入行坐标和列坐标的数位之和 // 大于k的格子。例如,当k为18时,机器人能够进入方格(35, 37),因为3+5+3+7=18。 // 但它不能进入方格(35, 38),因为3+5+3+8=19。请问该机器人能够到达多少个格子?...
阅读全文
摘要:// 面试题:矩阵中的路径 // 题目:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有 // 字符的路径。路径可以从矩阵中任意一格开始,每一步可以在矩阵中向左、右、 // 上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入 // 该格子。例如在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字 // 母用下划线标出)。但矩阵中不包含字符串“ab...
阅读全文
摘要:// 面试题:二进制中1的个数 // 题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如 // 把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2。 #include using namespace std; //将flag(1)不停左移(右移会出现死循环情况),对每位进行与运算 int NumberOf1_Solution1(int n) { ...
阅读全文
摘要:第三种想法思路: 斐波那契数列扩展:
阅读全文
摘要:// 面试题:旋转数组的最小数字 // 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 // 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组 // {3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。 #include using namespace std; int MinInOrder(int* n...
阅读全文
摘要:论文地址:https://arxiv.org/pdf/1406.2661.pdf 1、简介: GAN的两个模型 判别模型:就是图中右半部分的网络,直观来看就是一个简单的神经网络结构,输入就是一副图像,输出就是一个概率值,用于判断真假使用(概率值大于0.5那就是真,小于0.5那就是假),真假也不过是人
阅读全文
摘要:// 面试题:用两个栈实现队列 // 题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail // 和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。 #include #include using namespace std; template class CQueue//模板类,习惯就好了 { private: sta...
阅读全文
摘要:异常详解: https://www.cnblogs.com/hdk1993/p/4357541.html#top 模版详解: https://blog.csdn.net/lezardfu/article/details/56852043 stack类: https://www.cnblogs.com
阅读全文
摘要:文件一:main.cpp 文件二:BinaryTree.h 文件三:BinaryTree.cpp
阅读全文
摘要:文件一:main.cpp 文件二:BinaryTree.h 文件三:BinaryTree.cpp
阅读全文
摘要:文件main.cpp 文件List.h 文件List.cpp
阅读全文
摘要:// 替换空格 // 题目:请实现一个函数,把字符串中的每个空格替换成"%20"。例如输入“We are happy.”, // 则输出“We%20are%20happy.”。 #include using namespace std; bool replace_space(char* str,const int length) { if (str == NULL && lengt...
阅读全文
摘要:引言 介绍 目前精度高的检测器都是基于two-stage,proposal-driven机制,第一阶段生成稀疏的候选对象位置集,第二阶段使用CNN进一步将每个候选位置分为前景或者背景以及确定其类别; 提出一个one-stage检测器可以匹配two-stage检测器在COCO上AP,例如FPN、Mas
阅读全文
摘要:一、R-FCN初探 1. R-FCN贡献 提出Position-sensitive score maps来解决目标检测的位置敏感性问题; 区域为基础的,全卷积网络的二阶段目标检测框架; 比Faster-RCNN快2.5-20倍(在K40GPU上面使用ResNet-101网络可以达到 0.17 sec
阅读全文
摘要:// 面试题3(二):不修改数组找出重复的数字 // 题目:在一个长度为n+1的数组里的所有数字都在1到n的范围内,所以数组中至 // 少有一个数字是重复的。请找出数组中任意一个重复的数字,但不能修改输入的 // 数组。例如,如果输入长度为8的数组{2, 3, 5, 4, 3, 2, 6, 7},那么对应的 // 输出是重复的数字2或者3。 #include using namespace ...
阅读全文
摘要:// 面试题3(一):找出数组中重复的数字 // 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了, // 也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2, 3, 1, 0, 2, 5, 3}, // 那么对应的输出是重复的数字2或者3。 #include using namespac...
阅读全文
摘要:// 二维数组中的查找 // 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按 // 照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个 // 整数,判断数组中是否含有该整数。 #include using namespace std; bool serach_in(int* matrix, int rows, int cols, int numb...
阅读全文
摘要://重载赋值运算符 #include #include using namespace std; class CMystring { private: char* m_pData;//私有变量m_pData public: CMystring(const char* pData = NULL)//具有默认参数的 含参构造函数,注意此处的const { ...
阅读全文
摘要:YOLO3主要的改进有:调整了网络结构;利用多尺度特征进行对象检测;对象分类用Logistic取代了softmax。 1.Darknet-53 network在论文中虽然有给网络的图,但我还是简单说一下。这个网络主要是由一系列的1x1和3x3的卷积层组成(每个卷积层后都会跟一个BN层和一个Leaky
阅读全文
摘要:概述 YOLO(You Only Look Once: Unified, Real-Time Object Detection)从v1版本进化到了v2版本,作者在darknet主页先行一步放出源代码,论文在我们等候之下终于在12月25日发布出来。 新的YOLO版本论文全名叫“YOLO9000: Be
阅读全文
摘要:SSD论文贡献: 1. 引入了一种单阶段的检测器,比以前的算法YOLO更准更快,并没有使用RPN和Pooling操作; 2. 使用一个小的卷积滤波器应用在不同的feature map层从而预测BB的类别的BB偏差; 3. 可以在更小的输入图片中得到更好的检测效果(相比Faster-rcnn); 4.
阅读全文

浙公网安备 33010602011771号