自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(111)
  • 收藏
  • 关注

原创 Impala学习记录(最小化可执行环境)

be/build/dubug中的.a文件,是静态链接库0.shell脚本获得当前路径IMPALA_HOME=$(cd `dirname $0`; pwd)或者先cd进入相应文件,再用...='pwd' 即可1.库的分类根据链接时期的不同,库又有静态库和动态库之分。静态库是在链接阶段被链接的(好像是废话,但事实就是这样),所以生成的可执行文件就不受库的影响了,即使库...

2019-11-26 15:24:37 189

原创 不用加减乘除做加法(剑指offer)

题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。解题思路考虑二进制的加法,两数异或相当于不加进位的加法,两数相与并左移一位相当于进位。class Solution {public: int Add(int num1, int num2) { while(num2){ int sum =...

2019-07-12 21:20:25 145

原创 约瑟夫问题(剑指offer)

题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去.....

2019-07-12 16:04:18 160

原创 左旋转字符串(剑指offer)

题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!解题思路最暴力的思路即循环n次,每次拿出第一个字符,加到末尾,再删除第一个字符。cl...

2019-07-11 21:13:25 120

原创 和为S的两个数字(剑指offer)

题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。解题思路因为刚做了一道滑动窗口的题,印象比较深刻。银耳分析这道题题目时很自然地想到再次用滑动窗口解决这个问题。合适的窗口变换方式为从最大逐渐缩小。窗的左边界为0,右边界为数组的最右边,窗口左...

2019-07-10 21:18:17 120

原创 和为s的连续正数序列(剑指offer)

题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所有和为S的连续正数...

2019-07-10 21:01:37 99

原创 数组中只出现一次的数字(剑指offer)

题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。解题思路最直观的解法是使用STL库里的map,第一次遍历做映射,第二次遍历判断为1的两个数字。class Solution {public: void FindNumsAppearOnce(vector<int> data,int* num1,int *num...

2019-07-10 10:05:28 98

原创 平衡二叉树(剑指offer)

题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。解题思路平衡二叉树的定义为,两子树的深度差小于等于1,同时两子树都为平衡二叉树。按照这个思路直接编写递归。class Solution {public: int maxdepth(TreeNode* pRoot){ if(pRoot == NULL) return 0; return ...

2019-07-10 09:06:30 102

原创 两个链表的第一个公共节点(剑指offer)

题目描述输入两个链表,找出它们的第一个公共结点。解题思路比较简单的一道题,用map映射第一个链表节点,再遍历第二个链表看有没有已经出现的。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {...

2019-07-09 18:58:24 147

原创 丑数(剑指offer)

题目描述把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。解题思路因为每一个res[i]都会且只会一次分别乘以2,3,5.因此我们记录下一个乘以2,3,5的位置。且每一次比较三个结果,取最小的那一个作为res[i+1],代码如下:class Solu...

2019-07-09 15:43:37 170

原创 把数组排成最小的数(剑指offer)

题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。解题思路本质上是定义排序方式的过程。首先想到的方法是定义比较函数直接比较,相等返回true或false都行,不等则根据长度及内容分别判断,代码逻辑较麻烦:class Solution {publi...

2019-07-09 14:51:43 76

原创 整数中1出现的次数(剑指offer)

题目描述求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。解题思路这道题是自己想的方案,觉得还挺简洁易懂的,就没看其他题解了...

2019-07-09 11:15:18 89

原创 连续子数组的最大和(剑指offer)

题目描述例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和,你会不会被他忽悠住?(子向量的长度至少是1) O(nlogn)方法一:分治法class Solution {private: int conarray(vector<int> &array, int s...

2019-07-09 10:10:21 98

原创 数组中出现次数超过一半的数字(剑指offer)

题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。三种方案:1.最简单,复杂度最高,而且使用stl。用map库映射。class Solution {public: int MoreThanHalfNum_...

2019-07-09 09:22:47 126

原创 二叉搜索树与双向链表(剑指offer)

题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。解题思路比较简单的二叉树题目,我的思路是创造一个辅助队列,中序遍历二叉搜索树,遍历结果即为有序的,将遍历内容填入队列。接着依次弹出,弹出的元素的右指针指向上一个弹出的元素,左指针指向下一个弹出的元素。以下是代码:/*struct TreeNode { in...

2019-07-02 15:49:10 97

原创 复杂链表的复制(剑指offer)

题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)解题思路(1)最初的思路希望直接以递归来解决问题,但是运行会发生内存不足的情况,考虑到使用该递归方式会不断地创造新的重复空间,使得内存占用量大大提升,因而内存不足,代...

2019-07-01 15:09:52 71

原创 二叉树中和为某一值的路径(剑指offer)

题目描述输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)解题思路很容易想到该题是一道深度优先搜索的模板题,注意输出要求数组长度较大的数组靠前,因而最终的返回数组在返回之前需要先进行排序。注意排序的函数必须定义为static。还有一点需...

2019-06-30 09:57:24 77

原创 二叉搜索树的后序遍历序列(剑指offer)

题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。解题思路:二叉搜索树的特性是:对于遍历的最后一个数k,可以作为前面所有数的大小分界点,分界的前部分序列都小于k。分界的后部分序列都大于k。值得注意的是,如果k小于前面的所有数或者k大于前面的所有数,则同样是二叉搜索树的后序遍历。以下是我的解题...

2019-06-29 14:54:43 83

原创 栈的弹入、弹出序列(剑指offer)

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)解题思路:利用stack建造一个辅助栈,接着模拟出栈入栈的过程。第一次自己...

2019-06-26 15:58:50 230

原创 包含min函数的栈(剑指offer)

题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。解题思路按照题目给出的接口,我是自己定义了结构体写了栈的,但是标准解法里却用的是stack stl库,这里先贴出我的代码,会发生段错误,目前原因未知:class Solution {public: struct stack1{ int value...

2019-06-25 16:41:10 96

原创 顺序打印矩阵(剑指offer)

题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.基本思路:因为是环装打印的方式,可以将环的个数作为大循环的次数,循环内部依次遍历环的上部、右部、下部、以及左部...

2019-06-25 10:17:30 301

原创 使用git上传github代码

第一次使用git上传github的代码,记录一下使用步骤。1.找到自己代码根目录,右键点击Git Bash here2,git init3.git status4.git cheakout -b ** //**为自己的命名分支5.git add .6.git commit -m "记...

2019-05-25 14:40:34 259

原创 剑指offer(第三波)

题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)解题思路:有两点需要注意的,一是可以再添加一个函数,该函数用于判断两子树以当前点作为根节点是否相互包含。另外需要注意的是,递归的部分可以做一点优化,如果左子树已经包含了pRoot2,则可以不用再判断右子树而直接得出结果。class Solution {public: bool ...

2019-03-31 10:28:44 122

原创 剑指offer合集(第二波)

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解题思路:这道题为比较简单的状态转移动态规划题。f(n)=f(n-1)+f(n-2)+f(n-3)....f(1)+f(0);定义一个数组,二层for循环可以得到答案,题目数据量应该不大,数组定义100*int足够。class Solution {public: ...

2019-03-17 09:19:40 206

原创 剑指offer题目合集:

题目描述输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。注意事项:递归时注意特殊情况,输入为一个空指针,率先判断head是否为空!class Solution {public: vector&lt;int&gt; Q; vector&lt;int&gt; printListFromTailToHead(ListNode* head) { ...

2019-03-06 20:35:18 178

原创 剑指offer_1:二维数组中的查找

题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。原思路:原本自己考虑的是利用该数组从左到右从上到下依次递增的性质,对角线上的数字是后面区域(该数字往下或者往右边区域)最小的数字。所以我先考虑两种极端情况,即target小于左上角数字以及ta...

2019-03-06 18:44:45 134

原创 24口交换机SYNC模块学习

IEEE1588实现时间统一和软件实现最佳主时钟选择。已实现:FPGA实现时间统一和软件实现最佳主时钟选择。新需求:原软件实现的最佳主时钟选择由FPGA实现。(1)单一子网主时钟方法     最佳主时钟算法?后文是否会有?硬件实现时间同步(1)主设备模式周期性发一次SYNC帧,自身设备信息存放在BRAM。发完SYNC帧后开始接受其他设备的SYNC帧,先判断接受的SY...

2019-02-25 15:37:59 1208

原创 陌生用法及一些盲点

#0文件读写:#include<fstream>fstream myfile("C:\\tsinghua\\软硕192\\example.txt", ios::in|ios::out||ios::app);fstream可读可写,如果读完后再想写先myfile.clear();myfile<<"abcd";这样即可在文件后追加"abcd"字符串。...

2018-09-13 20:57:33 192 1

原创 动态规划特训:切蛋糕(UVA1629)

解题思路:利用动态规划的思想,这里的状态即是蛋糕的上线、下线、左线、右线。然后进行记忆化搜素。遍历竖着切的每一种方式和横着切的每一种方式最终得到结果。状态转移方程稍微有些繁琐,在这里就不列举了,可以直接看代码理解。题目大意:给定一个方形蛋糕,上面有一些樱桃,现在可以对该蛋糕做切割处理,保证切出来的每一份小蛋糕上都有一个樱桃,且切割线的总长度最小。Sample Input3 4 31 2...

2018-09-11 16:06:17 1077

原创 动态规划特训:免费糖果(UVA10118)神奇的记忆话搜索

解题思路:多阶段dp,每次可以选择从四堆糖顶部拿出一颗。用dp[][][][]记录所有状态,那么如何处理状态的转换呢。这里用了非常巧妙的方法。定义一个一维数组top[5]记录四堆糖顶部的位置,动态规划时取了该位置的糖则top[i]++,递归返回则top[i]--。处理方式非常类似回溯法。用mark数组记录口袋里的颜色,处理用top数组,类似回溯法,具体实现方式可参见代码。题目大意:有四堆糖,每...

2018-09-10 20:55:09 268

原创 最大值尽量小问题:抄书(UVA714)

解题思路:利用二分法解决问题,因为可根据枚举的容限判断得到最小划分次数,据此与m比较,如果&gt;=m,则表示容限还不够大,L=m+1,否则R=m;输出时有特殊的贪心策略请注意!题目大意:按顺序给你m个数,将这m个数分成连续的k段,使得这k段每段的和中的最大值最小,输出最小值(1&lt;=N&lt;=100000,1&lt;=M&lt;=N,每个数在1到10000之间),如果有多种可能的话,尽...

2018-09-09 15:52:51 276

原创 DFS回溯特训:黄金图形(UVA225)

解题思路:直接DFS暴力枚举,注意这里的方向判断,因为不能和上次走相同或相反的方向,要做适当的处理。开始依然可以枚举四个方向,当前一个方向与现方向相同(表现为对应数值相等)或相反(表现为对应数值相加等于5),则continue跳过,具体看代码。还可作剪纸处理,当已走步数距离原点太远以至于不可能返回时剪掉(还未做剪纸处理)。题目大意:输入两个整数n(表示走几次)k(表示障碍物个数),每走一次步数...

2018-09-08 22:02:44 200

原创 最短路特训:噪音恐惧症(UVA10048) Floyd变形

解题思路:传统Floyd算法的一个变形,floyd的思路是枚举某一点,作为中间点,看新的路径是否小于原来的路径。那么这里我们稍微转换一下,看新的路径的噪声限度( 即max( g[i][k] , g[k][j] ) )是否小于现在的噪声限度,这个新思路可以比较巧妙地解决问题。题目大意:给定一张无方图,边权是每条路上的噪音大小,求从某点到某点路径中噪音限度(即该路径上边权最大值)最小为多少。S...

2018-09-08 15:36:25 393

原创 最短路径练习:电话圈(UVA247)Floyd算法应用

解题思路:这里采用flyod算法求图中所有点的连通性,再DFS输出满足条件的圈即可。注意flyod判通要把判断语句修改为:g[i][j]=g[i][j] || g[i][k]&amp;&amp;g[j][k];题目大意:有N个人互相打了M次电话,请找出所有电话圈(Eg.a→b,b→c,c→d,d→a 就算一个电话圈)并输出。Sample Input5 6Ben AlexanderAl...

2018-09-08 15:25:03 305

原创 素数筛法(坑点万请注意!!犯了n次)

输出第15000个素数一定注意判断时不要if(i*i&gt;200000) continue;因为很可能i*i超过int的范围越界导致程序运行错误,这里直接:if(i&gt;10000) continue;就可以了!void init(){ for(int i=2;i&lt;200000;i++) { if(mark[i]==false) { prim...

2018-09-03 17:48:16 313

原创 动态规划特训:图的色数(POJ1129)

解题思路:所有的节点可以用集合表示,则dp[s]则表示该节点集最少的染色数目,设s1为s子集,且其内存节点没有直接相邻的,则状态转移方程为dp[s]=min{1+dp[s^s1]};这里用邻接矩阵存储无向图,判断比起用vector要方便不少。奇怪的是所有网上找的测试样例都过了,但是百练就是WA。题目大意:给定一个无向图,把图中的节点染成尽量少的颜色,使得相邻节点的颜色不同。样例输入2...

2018-08-31 08:52:36 1060

原创 动态规划特训:旅行商问题(回溯法或记忆搜索法)

解题思路:可以设定一个集合s表示还未访问的城市,i表示现在所在的城市,状态转移至任一还未访问的城市,转移方程为:dp[i][s]=min(dis[i][j]+dp[j][s^1&lt;&lt;j]);而回溯法比较直观,这里直接给出代码。题目大意:有n个城市,两两之间均有道路直接相连。给出所有道路的长度(矩阵形式)。求一条经过每个城市一次且仅一次,最后回到起点的路线,使得经过的道路总长度最短。N...

2018-08-30 20:59:34 1164

原创 动态规划特训:最优配对问题(集合在复杂状态dp中的应用)

解题思路:用二维dp表示状态,dp[i][s]中i表示前i个点两两配对,s表示在集合s的范围中。然后通过考虑i与s中某一个配对进行状态转移。dp[i][s]=min{dist(i,j)+dp[i][s-{i}-{j}]};注意枚举过程的细节。具体看代码及其注释。问题大意:空间中有n个点,将他们分配成n/2对,使得每个点恰好在一个对里,所有点对中两点距离和应尽量小。Input:201 2...

2018-08-30 16:19:56 520

原创 动态规划特训:Hali-Bula的晚会(UVA1220)

解题思路:此题是典型的树形dp中最大独立集的问题。定义两个数组s[u]和gs[u],分别代表选择u时只能选孙节点gs[u]和不选择u时选择其儿子的最大值。这里使用刷表的方法,随时更新s[u]和gs[u]两个数组。因为需要判断是否唯一,因而定义了三个数组,分别对应选子节点和孙节点是否唯一以及判断子节点和孙节点大小并选择后最终的本节点是否唯一。题目大意:一个公司员工要举行聚会,要求任意一个人不能和...

2018-08-29 21:41:55 211

原创 树的最长路径

解题思路:设dp[i]为以i为根节点该树的深度。随便选一个作为根节点,求与其直接相连的子树最长长度dp[j],长度最长的前两个再加上两株子树分别与根节点的距离则可以求得树中最远的两点距离。题目大意:给定一棵n个结点的无根树,找到一条最长路径。换句话说,要找到两个点,使得它们的距离最短。#include&lt;cstdio&gt;#include&lt;cstring&gt;#incl...

2018-08-29 17:01:58 860

空空如也

空空如也

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

TA关注的人

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