Data structure and Algorithm
文章平均质量分 77
码蹄疾
小米广告平台服务端开发。曾求学于哈尔滨工业大学,小米广告平台第3代引擎开发者,擅长java、计算广告、分布式、并发等多个领域。
展开
-
社招面试总结——算法题篇
面试结果总结下最近的面试:头条后端:3面技术面挂蚂蚁支付宝营销-机器学习平台开发: 技术面通过,年后被通知只有P7的hc蚂蚁中台-机器学习平台开发: 技术面通过, 被蚂蚁HR挂掉(脉脉上好多人遇到这种情况,一个是今年大环境不好,另一个,面试尽量不要赶上阿里财年年底,这算是一点tips吧)快手后端: 拿到offer百度后端: 拿到offer最终拒了百度,去快手了, 一心想去阿里, ...原创 2019-04-08 21:36:54 · 2764 阅读 · 0 评论 -
杭电1232//并查集入门
# include#includeusing namespace std;int set[1024];//存储根节点int find(int x)//查找根节点{ if(set[x]!=x) set[x]=find(set[x]); return set[x];}void jion(int x,int y)//合并{原创 2012-07-26 11:38:03 · 1125 阅读 · 0 评论 -
程序设计实践(一)作业之二分查找
给定一列有序的数。查询其中第一个大于x的数的位置。位置下标从0开始。如果这列数中不存在大于x的数,则输出-1。Input每组输入由四行组成,第一行一个整数N(1≤N≤10,000),表示这列数是N。第二行有N个由空格隔开的数,表示这列有序的数。第三行一个整数Q(1≤N≤10,000),表示有Q次查询。第四行有Q个由空格分开的整数,表示查询第一个大于这个数的位置。Outp原创 2012-09-17 21:19:10 · 1597 阅读 · 3 评论 -
HOJ 2581 Go-------------------BFS 围棋中所占地盘的计算
HOJ 2581//题意:求围棋中白方和黑方的棋子,然后判断谁win//思路:BFS//hint:涉及到标志的问题,我是看网上的,我自己标志完全弄乱啦,具体看代码吧!#include#include#include#define maxlen 22#includeint mat[maxlen][maxlen],black,white;int dir[4][2]= {{-1原创 2013-01-26 16:14:07 · 1696 阅读 · 0 评论 -
HOJ 3130 Qie-Gao -----------BFS
HOJ 3130 Qie-Gao//题意:此处略去好多字//思路:BFS 记录搜索的起点和终点,// 然后把他们所围的矩形的大小求出,然后再与搜索的步数比较,如果相等,说明这是切糕,不等不是//hint:......// 做啦一天搜索题目,这个题最有快感啦,一次a,貌似没有什么收获,// 大一的秋季校赛题,表示也不过如此啊,为什么我当年校赛只a啦一题,擦原创 2013-01-27 00:04:11 · 1102 阅读 · 0 评论 -
哈工大数据结构实验三 图型结构及其应用
实验三 图型结构及其应用实验项目: 图的存储结构的建立与遍历(搜索)图的遍历(搜索)算法是图型结构算法的基础,本实验要求编写程序演示图的存储结构的建立和遍历(搜索)过程。实验要求:(1)能够建立(有向和无向)图的邻接矩阵和邻接表存储结构 (2)能够在邻接矩阵和邻接表存储结构上对(有向和无向)图进行深度优先(递归和非递归都要求)和广度优先搜索(3)能够存储和显示相应的搜索结果原创 2013-07-20 02:14:55 · 3662 阅读 · 0 评论 -
杭电1398,1028,1085//赤裸裸的母函数
G(x)=(1+x+x2+x3+x4+…)(1+x4+x8+x12+…)(1+x9+x18+x27+…)…典型母函数!//HDOJ_1398 Square Coins//G(x)=(1+x+x^2+x^3+x^4+…)(1+x^4+x^8+x^12+…)(1+x^9+x^18+x^27+…)…#include using namespace std;const int lma原创 2012-07-28 16:55:48 · 920 阅读 · 0 评论 -
HOJ1987 Recursive Function
Recursive FunctionMy Tags (Edit) Source : SCU Programming Contest 2005 Preliminary Time limit : 1 sec Memory limit : 32 M原创 2012-09-24 21:46:00 · 1027 阅读 · 0 评论 -
HOJ1760 The jackpot--------最大子段和问题
题意:最大子段和思路:见博客的链接注意:犯很低级的错误,找一个数组的最大值的时候wa啦一次!#include #include#define MAX 10010int a[MAX],dp[MAX];using namespace std;int main(){ int n,i,m; while(cin >> n&&n) { memset(d原创 2012-11-04 23:50:39 · 875 阅读 · 0 评论 -
HOJ 1599-------Box of Bricks
#include #includeusing namespace std;int a[110];int main(){ int n,i,sum,count,x=0; while(cin >> n&&n) { sum=0,count=0; for(i=0; i<n; i++) { cin >>原创 2012-11-11 09:47:03 · 849 阅读 · 0 评论 -
并查集找连通分量的个数
题目1012:畅通工程时间限制:1 秒内存限制:32 兆特殊判题:否提交:2349解决:1032题目描述: 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建原创 2013-08-19 17:58:55 · 1882 阅读 · 0 评论 -
九度OJ题目1019:简单计算器(看到一神代码)
九度OJ题目1019:简单计算器 #include "stdio.h"#include "string.h"#define MAX 1001double stack[MAX];int tail;int main(){ int a; while(scanf("%d ",&a)&&a!=0){ tail=0; stack[++tail]=1.0*a;//tail始转载 2013-11-14 17:44:03 · 1381 阅读 · 1 评论 -
HOJ1003//Mixing Milk
Mixing MilkMy Tags (Edit) Source : Unknown Time limit : 3 sec Memory limit : 32 MSubmitted : 7215, Accepted : 3010原创 2012-09-09 20:05:45 · 1241 阅读 · 0 评论 -
最小生成树 prim(与边无关,适合稠密的图,o(n^2))
题目1017:还是畅通工程时间限制:1 秒内存限制:32 兆特殊判题:否提交:1653解决:838题目描述: 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请原创 2013-08-19 17:16:23 · 1600 阅读 · 0 评论 -
哈工大数据结构实验二 树形结构及其应用
实验二 树形结构及其应用实验内容:树型结构的建立与遍历树型结构的遍历是树型结构算法的基础,本实验要求编写程序演示二叉树的存储结构的建立和遍历过程。实验要求:(1) 至少用两种方法,编写建立二叉树的二叉链表存储结构的程序,并用广义表的形式显示并保存二叉树;(2) 采用二叉树的二叉链表存储结构,编写程序实现二叉树的先序、中序和后序遍历的递归和非递归算法以及层序遍原创 2013-07-20 02:13:51 · 3293 阅读 · 0 评论 -
HOJ 2979 Escape from Pyramids --------BFS求最小的步数
HOJ 2979 Escape from Pyramids//题意:按照题中给的金字塔的位置 ,s代表起点 ,*代表障碍,@代表此路可走// D代表出口(注意出口不止一个),在规定的时间内判断是否能走出金字塔//思路:BFS求最短的路径上面所走的步数,注意搜索失败的时候队列是空的,判断一下子//调试注意:// 1.注意步数是1这种特殊情况(对应题目中所给样例的case3原创 2013-01-25 20:07:21 · 1377 阅读 · 0 评论 -
HOJ 2939 Coin Question-------放硬币游戏
/* 题意:这道题估计是太简单,在网上都找不到答案,貌似思路是有的 就是两个人在一个圆桌上面放硬币,不能重叠,各种,然后最后谁放不下啦就输啦 思路:大神那儿得来的,我是想不出来,见链接吧。*/#include #includeusing namespace std;int main(){ double a,b; while(scanf("%lf%原创 2012-11-05 22:52:55 · 902 阅读 · 0 评论 -
今日头条高频面试题LRU
转自知乎:https://zhuanlan.zhihu.com/p/34133067题目运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - ...原创 2019-03-17 21:03:12 · 674 阅读 · 0 评论 -
【Leetcode】106. 从中序与后序遍历序列构造二叉树
题目根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7题解根据前序和中序可以构造一颗二叉树,根据中序和后续也可以构建一颗二叉树。...原创 2019-03-05 09:30:18 · 237 阅读 · 0 评论 -
【Leetcode】72.编辑距离
题目给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入: word1 = "horse", word2 = "ros"输出: 3解释: horse -> rorse (将 'h' 替换为 'r')rorse -> rose ...原创 2018-09-20 23:00:06 · 297 阅读 · 0 评论 -
【Leetcode】61.旋转链表
作者: 码蹄疾 毕业于哈尔滨工业大学。 小米广告第三代广告引擎的设计者、开发者; 负责小米应用商店、日历、开屏广告业务线研发; 主导小米广告引擎多个模块重构; 关注推荐、搜索、广告领域相关知识;给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->...原创 2018-09-06 23:41:46 · 257 阅读 · 0 评论 -
【Leetcode】58. 最后一个单词的长度
题目给定一个仅包含大小写字母和空格 ’ ’ 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。说明:一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: "Hello World"输出: 5题解这个题比较水,主要是注意一下前后有空格这种情况。 如下代码用preLong记录截止到当前字符最后一个单词的长度.class ...原创 2018-09-02 09:26:05 · 246 阅读 · 0 评论 -
【Leetcode】56. 合并区间
题目给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为...原创 2018-08-30 09:23:24 · 312 阅读 · 0 评论 -
【Leetcode】57. 插入区间
作者: 码蹄疾 毕业于哈尔滨工业大学。 小米广告第三代广告引擎的设计者、开发者; 负责小米应用商店、日历、开屏广告业务线研发; 主导小米广告引擎多个模块重构; 关注推荐、搜索、广告领域相关知识;题目给出一个无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间...原创 2018-08-31 09:40:28 · 493 阅读 · 0 评论 -
【Leetcode】42. 接雨水
题目给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 示例: 输入: [0,1,0,2,1,0,1,3,2,1,2,1] 输出: 6题解这种存水得题目都是在考察双指针。 ...原创 2018-08-06 23:31:44 · 626 阅读 · 0 评论 -
24. 两两交换链表中的节点
知乎ID: 码蹄疾 码蹄疾,毕业于哈尔滨工业大学。 小米广告第三代广告引擎的设计者、开发者; 负责小米应用商店、日历、开屏广告业务线研发; 主导小米广告引擎多个模块重构; 关注推荐、搜索、广告领域相关知识;题目给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。示例:给定 1->2->3->4, 你应该返回...原创 2018-07-14 07:57:43 · 636 阅读 · 0 评论 -
18. 四数之和
知乎ID: 码蹄疾 码蹄疾,毕业于哈尔滨工业大学。 小米广告第三代广告引擎的设计者、开发者; 负责小米应用商店、日历、开屏广告业务线研发; 主导小米广告引擎多个模块重构; 关注推荐、搜索、广告领域相关知识;题目给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得...原创 2018-07-05 23:23:19 · 5661 阅读 · 1 评论 -
17. 电话号码的字母组合
知乎ID: 码蹄疾 码蹄疾,毕业于哈尔滨工业大学。 小米广告第三代广告引擎的设计者、开发者; 负责小米应用商店、日历、开屏广告业务线研发; 主导小米广告引擎多个模块重构; 关注推荐、搜索、广告领域相关知识;题目给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任...原创 2018-07-03 08:15:33 · 1307 阅读 · 1 评论 -
21. 合并两个有序链表
知乎ID: 码蹄疾 码蹄疾,毕业于哈尔滨工业大学。 小米广告第三代广告引擎的设计者、开发者; 负责小米应用商店、日历、开屏广告业务线研发; 主导小米广告引擎多个模块重构; 关注推荐、搜索、广告领域相关知识;题目将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2-&...原创 2018-07-09 07:23:53 · 266 阅读 · 0 评论 -
16. 最接近的三数之和
知乎ID: 码蹄疾 码蹄疾,毕业于哈尔滨工业大学。 小米广告第三代广告引擎的设计者、开发者; 负责小米应用商店、日历、开屏广告业务线研发; 主导小米广告引擎多个模块重构; 关注推荐、搜索、广告领域相关知识;题目给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target ...原创 2018-07-01 22:22:49 · 311 阅读 · 0 评论 -
15. 三数之和
知乎ID: 码蹄疾 码蹄疾,毕业于哈尔滨工业大学。 小米广告第三代广告引擎的设计者、开发者; 负责小米应用商店、日历、开屏广告业务线研发; 主导小米广告引擎多个模块重构; 关注推荐、搜索、广告领域相关知识;题目给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出...原创 2018-07-01 21:46:36 · 459 阅读 · 0 评论 -
HOJ2098//归并排序求逆系数
Ultra-QuickSortMy Tags (Edit) Source : Waterloo ACM Programming Contest Feb 5, 2005 Time limit : 3 sec Memory limit : 32 M原创 2012-09-08 11:38:57 · 1016 阅读 · 0 评论 -
凸包---HDU 2202
题意:给N个点,求着N个点中选择三个联的最大的三角形面积!注意精度:不然OJ上面会超时的#include#include#include#include#includeconst double eps = 1e-8;using namespace std;struct point{ int x,y;} p[50005],res[50005];int cross(原创 2013-08-27 01:14:56 · 1117 阅读 · 0 评论 -
杭电1108//最小公倍数
#include #include#include #include #include #include using namespace std;int gcd(int da,int xiao);int main(){ int a,b,c; while(cin >> a >> b) { if(a>b) c=gcd(a,b); else c=gcd(b原创 2012-07-25 14:35:55 · 780 阅读 · 0 评论 -
DP入门题------ Number Triangles HOJ 1058
/*DP入门题题意:输入一个三角形,从第一行到最后一行, 找出通过的路径上面的数字之和最大的和是多少?思路:自下往上找,我是用DP[i][j]来记录下面的N-i+1行最大的和,理解啦思路感觉好经典的思想! 状态转移方程dp[i][j]=multiple[i][j]+max(dp[i+1][j],dp[i+1][j+1])调试注意:开始的时候数组开小啦,所以以后开数组的原创 2012-10-29 21:06:00 · 973 阅读 · 0 评论 -
最短路--Dijkstra算法 --HDU1790
#include#include#include#include#include#define INF 0x3f3f3f3fusing namespace std;struct node{ int d,p;} mat[1005][1005];int main(){ int x,y,n,m,a,b,s,t,i,j,k,d[1005],p[1005],minsd,原创 2013-08-20 14:13:29 · 977 阅读 · 0 评论 -
HOJ题目分类
各种杂题,水题,模拟,包括简单数论。1001 A+B1002 A+B+C1009 Fat Cat1010 The Angle1011 Unix ls1012 Decoding Task1019 Grandpa's Other Estate1034 Simple Arithmetics1036 Complete the sequence!1043 Maya Calendar10转载 2012-12-07 20:52:06 · 5024 阅读 · 0 评论 -
已知二叉树的中序和前序序列(或后序)求解树
原博客地址:http://www.cnblogs.com/bmrs/archive/2010/08/19/SloveTree.html ,感谢博主。。。这种题一般有二种形式,共同点是都已知中序序列。如果没有中序序列,是无法唯一确定一棵树的,证明略。一、已知二叉树的前序序列和中序序列,求解树。1、确定树的根节点。树根是当前树中所有元素在前序遍历中最先出现的元素。2、求转载 2013-08-23 11:15:08 · 1415 阅读 · 0 评论 -
图-----------拓扑排序+AOE网络关键路径
1.拓扑排序(1)举个例子,要学习某些课程必须先学过一些课程用图把这个东东描述出来就变成: 那么,问题来啦,是否可以找到一个序列,使得这个序列上的所有课程都满足:先修课程在后修的课程前面?这样的序列就是拓扑序列.....(2)怎么求拓扑序列?简单的说是不断去掉没有前驱的点,得到的这些点就是拓扑序列;还是上面的例子:step1:9没有前驱,去掉(和它相关的边也原创 2013-07-20 02:31:30 · 5770 阅读 · 4 评论 -
二叉树-----数组存储结构及操作算法的实现------堆排序
//file :HEAPSORT.h#ifndef _HEAPSORT_H_HUMING_INCLUDE_#define _HEAPSORT_H_HUMING_INCLUDE_#include#define maxlen 10000using namespace std;template class array_BTtree{public: void原创 2013-07-20 02:19:32 · 1195 阅读 · 0 评论