自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HDU-3234 Exclusive-OR 异或带权并查集

题目描述现在有n个数,X0,X1,…,Xn-1,你并不知道这n个数的大小,然后接下来有Q个询问,询问的格式如下1) I p v, 告诉你 Xp = v2) I p q v, 告诉你 Xp ^ Xq = v3) Q k Xi, Xi+1, ..,Xi+k-1, 让你求Xi ^ Xi+1 ^..^ Xi+k-1的值如果输入的第i个I条件和前面已知的冲突,则输出The first %d facts is conflicting.,并不输出后面的询问。如果Q条件可以求取则输出对应的值,否则输出I do

2020-07-29 19:46:06 413

原创 macOS升级Catalina后 gcc无法正常编译文件问题

macOS升级为Catalina后,原本gcc却出现了如下错误$> gccdyld: Symbol not found: _OBJC_IVAR_$_NSFont._fFlags Referenced from: /Applications/Xcode.app/Contents/Frameworks/IDEFoundation.framework/Versions/A/../../.....

2020-02-25 22:43:36 3637 1

原创 C++单例模式的n种实现总结

面试官:“接下来,说说C++实现一个单例模式的思路吧”。这个问题我曾经看过,舒了一口气,冷静了一下缓缓答道:“所谓单例模式,就是一个类在程序的过程中只能有一个实例对象,不能随意的创建对象实例,因此,首先就是要把构造函数设置为private,这样用户代码无法创建一个对象,还对象只能在类内创建。”面试官:“嗯,然后呢?”我:“同时还要定义一个public+static函数接口,供外部访问该对象,...

2019-03-21 18:29:10 441

原创 红黑树简易C++实现

原因这几天研究了红黑树,光说不练假把式,于是就自己手动实现一下数据结构声明#include <bits/stdc++.h>using namespace std;enum Color{ RED = 0, BLACK};// 红黑树节点RB_Nodestruct RB_Node{ int val; Color color; RB_Node *left; RB...

2019-03-13 11:09:16 386 2

原创 《Muduo C++网络库学习一》以Observer模式谈线程安全问题

  这是我学习muduo库的第二个阶段,前面一个阶段主要阅读了网络库部分的源码,大致了解网络通信各部分的细节。  编写线程安全的类不是难事,用同步原语(互斥量,条件变量,信号量等等) 保护内部状态即可。但是对象的生与死不能由对象自身的mutex来保护(△)。如何避免对象析构时存在的竞争条件(race condition)是C++多线程编程面临的基本问题,正确的答案是Boost库中的shared_...

2018-12-05 15:41:16 403

原创 UNIX高级环境编程-初读心得

写在前面大概从7月中旬~10月10中旬,花了大概三个月左右的时间,通读了《UNIX高级环境编程》第1章到第20章。读之前的状态大概是只懂一点linux命令行,c语言入门水平。通读的过程大概就是每天早上花1至2个小时,对于书中的一些代码,尽量都照着抄了一遍,写了一些对代码的理解在上面。学习过程中我个人觉得有一些章节读起来就比较枯燥,而有一些章节读起来则津津有味。因为就读了一遍,所以经常会有前面的知...

2018-10-15 15:37:46 2802 3

原创 LeetCode几道回文串题目

647. Palindromic Substrings给你一个长度不超过1000的字符串,判断该字符串包含多少回文子串。暴力法: 枚举子串,判断是否回文 动态规划:定义状态dp[i, j]为子串[i, j]是否为回文串。(这个状态定义在许多回文串问题中都有用到) 递归方程为dp[i, j] = j == i+1 ? s[i] == s[j] : dp[i+1, j-1] &...

2018-07-10 17:08:09 903

原创 LeetCode Largest Rectangle in Histogram

题目大意这题也是hdu 1506. 给定一个数组heights,其中heights[i]代表一个底为1,高为heights[i]的矩形。现在问你这个数组的所形成的“直方图”中最大的矩形面积。思路首先介绍一下单调队列与单调栈。顾名思义,就是容器内元素是单调的。重点就是在将元素压入容器的时候需要保持容器内的有序性。 对于单调栈来说,一个很简单的应用是:求某一个元素左边(右边)比它大(小...

2018-07-06 09:54:31 115

原创 LeetCode Next Greater Element I & II && III

题还是要当成吃饭睡觉一样每天坚持做规律做和总结的呀。496. Next Greater Element I有两个集合num1和num2,其中num1是num2的子集。让你找出对于每个num1的元素,在num2中再其右边的比其大的第一个数。由于集合最大不超过1000,因此O(n2)的遍历是一定能过的。但是,这种又和位置有关又和大小有关的要求,我想到了单调队列和单调栈。为什么呢?对于一...

2018-07-02 10:46:40 207

原创 dp背包训练

1. 01背包最基础的背包问题,要求熟练掌握空间优化的方法.hdu 2602 Bone Collector#include <bits/stdc++.h>using namespace std;int t, n, v, c[1005], w[1005], dp[1005];int main() { scanf("%d", &t); whi...

2018-05-25 18:44:48 312 1

原创 NowCoder Winter Camp Contest IV

比赛链接:https://www.nowcoder.com/acm/contest/76#question 比赛时间:18.2.11 14:00 ~ 17:00 比赛内容:图论相关基础题目,包括bfs与dfs,最小生成树、最短路Dijstra、拓扑排序、强连通分量tarJan等图论相关的基础算法。适合图论新手。A 石油采集题目描述给你一个NxN的海洋网格,每一格都由.和#组成,.代表海面,#代表

2018-02-14 22:38:20 225

原创 NowCoder Winter Camp Contest II 题解

比赛链接:https://www.nowcoder.net/acm/contest/74#question 比赛时间:2018.1.28 14:00 ~ 17:00 比赛内容:DP+C语言水题。其中dp考察了01背包问题,区间dp-最优三角剖分,状压dp,树的重心等比较经典的DP问题,由于个人对DP的理解不多,又正值放假,拖到一周后才补完题,并写了这篇题解。A 吐泡泡题目描述给定一...

2018-02-09 20:34:11 196

原创 WHU Winter Camp Contest 5 (for Div 2) 题解

Time: 2018.1.26 12:30 ~ 17:301 Happy Three Friends题目来源 HDU - 49311.1 题目描述给你6个数,一个人从中选2个,一个人从剩下的4个中任选3个,问你第一个人的总和能不能大于第二个人的总和。1.2 题解水题,直接排序就可以。2 Maximum Increase题目来源 CodeForces - 702A

2018-01-27 17:07:21 181

原创 WHU Winter Camp Contest 3 (for Div 2) 题解

Time: 2017/1/24 12:30 ~ 17:301 Pasha and Stick题目来源于: CodeForces - 610A1.1 题目描述有多少个矩形的周长不超过n,不包括正方形1.2 思路简单题,就是半周长不超过n/2的矩形个数,从1开始数,一直数到floor(n/4)。注意当4|n时(数学表示,意思是4能整除n),需要减去该情况。2

2018-01-25 19:58:03 211

原创 LintCode解题记录 17.12.2 LinkedList

99.Reorder List题目描述给定一个单链表L : L0 -> L1 -> L2 … -> Ln,将其重新排序,变成L0->Ln->L2->Ln-2…这样的形式。要求不能通过改变节点的值来实现。思路这是一道链表的综合性题目,考察了许多链表相关操作的小知识。为了实现题目的要求,我们按照如下3步来实现:Step1.O(n)下找到链表的中点mid(奇数长度则为中间的那一个点,偶数长度则为第左边的那

2017-12-02 19:17:55 213

原创 LintCode解题记录 17.11.25 反转单链表

前言这一周由于晚上课比较多,所以没有怎么做题。趁周五没有啥事来做几题。35. Reverse Linked List题目描述正如其字面意思,反转一个单链表。要求* Do it in-place and in one-pass *思路如果是仅要输出单链表的反序,可以用一个递归,回溯的时候打印输出即可。 单纯只是觉得需要掌握这种递归的思路。void ReversePrint(ListNode *hea

2017-11-25 15:56:23 252

原创 Longest Path in DAG 有向无环图中的最长路径问题

第一次看见这个问题是 《算法导论》Chapter 15 动态规划课后思考题15-1的题目。 本文主要参考:http://www.geeksforgeeks.org/find-longest-path-directed-acyclic-graph/问题描述给定一个有向图(Directed Acyclic Graph)以及一个起点s,求该图中s点到其余所有点的最长路径。题解正如算法导论中提到的那样,给

2017-11-23 19:29:21 4225

原创 LintCode 解题记录 17.11.11

前言又是一年双11,今日你剁手了吗?被同学忽悠没忍住买了台显示器,1000左右,不得不说京东白条真是无底洞啊。。Paint House题目描述有n个房子,每个房子都可以被涂红、蓝、绿三种颜色,假设第i个房子(i从0开始)涂第j个颜色的花费是cost[i, j], j = 0, 1, 2分别代表上述三种颜色。现在要求相邻的两间屋子不能涂相同的颜色,问你最小花费。思路跟House Robber很相似的题

2017-11-11 18:45:17 336

原创 LintCode解题记录 动态规划专题 Part1 17.11.4

写在前面最近这一周多吧,都在做动态规划的题目。把一些经典的动态规划题目基础夯实(比如各大教材中关于动态规划章节所讲的例子),然后对每一道动态规划的题目,都要仔细思考 这个递归关系是怎么得来的,这样的话动态规划的功力才会得到进步。Minimum Path Sum题目描述给定一个mxn的非负整数矩阵,问你求得一条从左上到右下的路径,使得这条路径上的数字和最小,每次只能往下走一格或者往右走一格。返回这个最

2017-11-04 19:54:58 332

原创 动态规划之背包问题

前言背包问题是动态规划的一系列经典问题,想必不少人刚接触动态规划问题时都是从这一类问题入手。最近刷LintCode时遇到了动态规划的专题,结合一直想读却一直懒得读的《背包问题九讲》,特意开一篇Blog学习一下。正题1. 01 背包问题有N件物品和一个容量为V的背包。放入第i件物品耗费的费用是Ci,得到的价值是Wi。求解将哪些物品装入背包可以使价值总和最大。基本思路这是最基本的背包问题,特点是:每种物

2017-10-31 19:45:53 311

原创 数据结构之位图

前言因为之前上数据挖掘的课的老师经常在课上提到这种方法,正好我又不会,于是抽点时间出来写一篇Blog学习一下这种数据结构。问题导入给定40亿个不重复的unsigned int的整数,没有排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中。快速思考C语言总一个int变量占32位,即4个字节,那么如果用一个40亿的数组来存储的话,需要的空间就是40亿x4Bytes = 160亿 Byte

2017-10-23 21:07:18 384

原创 LintCode 解题记录17.10.21

前言刷题的进度还是非常慢的,照这个进度,115道题估计过年前都刷不完。。真的是怠惰啊。House Robber题目描述给定一个数组,要求每次不能取相邻的两个数,求能取到所有数的最大和。思路初读一遍,发现是最优化问题(最大化),于是就思考最优化的两种思路 贪心和Dp。这里采用Dp的思想。我自己的思路就是采用 局部最优化与全局最优化的思想。设local[i]表示抢了第i家所能获得的最大利润,global

2017-10-23 20:24:32 188

原创 LintCode 解题记录 17.10.14 拓扑排序

第六周,抽了周二、周四和周六三晚做了五道题,来总结一下吧。Clone Graph题目描述给你一幅图,还有一大堆Balabala关于图的介绍,然后返回这幅图的“克隆”。思路“克隆”是什么意思呢?就是对于你遍历到的每一个节点,用其节点的label值新建一个节点,然后对于其邻接节点也是如此的操作。此处遍历采用BFS的方法,需要一个OldNode->NewNode的一个map映射来实现。代码Undirect

2017-10-16 11:18:10 262

原创 数据挖掘算法-Apriori算法

前言假设你是商场的一名推销员,正与一位刚在商店买了面包的顾客交谈。你应该向她推荐什么产品?你应该想知道你的顾客在购买了面包之后频繁的购买的哪些物品,这些信息是非常有用的。在这种情况下,频繁模式和关联规则正是你想要挖掘的知识。基本概念频繁模式(frequent pattern)是指频繁地出现在数据集中的模式,例如频繁的同时出现在交易数据集中的商品(比如牛奶和面包)集合是频繁项集。 如果我们想象全域是

2017-10-10 16:20:18 2705 1

原创 LintCode 解题记录 17.10.5 递归

LintCode Balanced Binary Tree题目描述给定一棵树,判断其是不是平衡二叉树(Avl树)思路平衡二叉树的定义是对于一个二叉查找树来说,其每一个节点的平衡因子(左右子树高度差的绝对值)小于2。 所以思路就很明朗,对于每一个节点,先判断该节点是否满足平衡条件,如何不满足则直接返回false,如果满足就递归地判断其左子树和右子树。代码 bool isBalanced(Tre

2017-10-06 20:32:51 249

原创 LintCode 解体记录 17.9.26

最近忙于上课、健身,也不愿抽出时间来做题了。。是懒了许多。LintCode Add Digits题目描述给定一个非负的整数,重复地把该数所有位上的数字加起来,直到只有一个数字。挑战Could you do it without any loop/recursion in O(1) runtime?思路利用模10除10求得整数上的每一位之后,相加,循环处理直到得到的数小于10. 至于挑战的思路,是看

2017-09-27 11:09:22 1212

原创 LintCode解题记录-Catalan Number

Catalan Number 卡特兰数1.基本定义组合数学中的知识,定义:令h(0) = h(1) =1, 则若h(n) = h(0)*h(n-1)+h(1)*h(n-2)+…+h(n-1)*h(0) (n >= 2),则称h(n)为卡特兰数。 例如: h(2) = h(0)*h(1) + h(1)*h(0) = 1*1 + 1*1 = 2, h(3) = h(0)h(2) + h(1)

2017-09-14 20:06:10 240

原创 LintCode解题记录 - 位操作

Tips:已经正式作为一名研究生啦:D.LintCode Product of Array Exclude Itself给定一个数组A,定义B[i] = A[0]…*A[i-1]*A[i+1]…*A[n-1].求数组B,但是在计算的时候请不要用除法。思路可以把B[i]看成两部分,即i的前缀积和i的后缀积,其中后缀积如果采用倒序遍历的方式掉话也就相当于前缀积。两次遍历,时间复...

2017-09-09 18:20:55 244

原创 LintCode 解题记录 17.8.30 两个指针

前言暑假临近结束,自己也没有了学习的动力,每天只是打打酱油似的做了几道题,而且还迷上了吃鸡,疯狂和同学在网吧相约吃鸡,本来想着早点去学校调整调整状态的,结果被告知宿舍只能在开学的时候入住。闲着没事,干脆就学学习吧。LintCode Partition List给定一个链表L和一个数x,让你把这个链表排序,把值小于x的节点放在前面,值大于等于x的节点放在后面,要求各节点之间保持原有的顺序。思路可以声明

2017-08-30 16:55:25 290

原创 LintCode 解题记录17.8.19 字符串处理6

LintCode Scramble String判断给定两个等长的字符串是不是攀爬字符串。 对于给定的字符串,我们通过不断将其分割成两个非空子字符串的方式构建一棵二叉树。我们可以选择任一个非叶子节点然后交换其孩子节点,再重新从底部攀爬上去形成一个新字符串,那么该新字符串就与原字符串形成了攀爬字符串。思路由于二叉树是递归的建立的,那么我们就可以尝试从递归的角度来解决这个问题。对于两个字符串树tree

2017-08-19 21:57:49 279

原创 LintCode解题记录17.8.9 字符串处理5

LintCode Binary Representation给定一个数(包含小数),返回其二进制形式。如果小数点后的二 进制位大于32位,则返回ERROR。 思路 整数部分转化为二进制是模2取余,小数部分是乘2取整。 代码 string binaryRepresentation(string n) { // wirte your code here in

2017-08-10 15:47:43 259

原创 LintCode 解题记录17.8.8 字符串处理4

LintCode Restore IP Addresses给定一个由数字组成的字符串,返回能复原的有效Ip地址。 注意:有效的Ip地址指每一位都在0~255之间。 思路 Dfs,每跳一次就是一个子网段,然后在后面加个’.’。那么根据题意可以知道每次最多可以跳三步,如果当前位为0则只能跳一步。组成的数还必须符合0~255的条件。 代码 vector<string> restoreIpAd

2017-08-08 15:47:20 292

原创 LintCode 解题记录 17.8.7 字符串处理3

LintCode Generate Parentheses给定n对括号,写一个函数去产生所有符合要求的括号组合。 思路 递归+回溯。 如何判断一个序号组合序列是有效的呢?我最先想到的是堆栈。左括号就入栈,右括号就出栈(前提栈不为空),如果空了就说明此时的组合不是合法的,就结束此次搜索。 还有一种简单的方法。针对从1~2n的序列,我们发现如下规则始终成立:左括号的个数大于等于右括号的个数。那么

2017-08-07 11:53:19 173

原创 LintCode 解题记录17.8.4 字符串处理2

Distinct Distance给定字符串S和T,求S中T的子串的个数。这里的子串是指不连续的子串。比如S=”rabbbit”,T=”rabbit”,那么S有三个rabbit子串。(中间的3个b有3种取2个b的取法) 思路 这一是一道动态规划的题目,我们维护的状态变量是S中前i个字符中T的前j个字符的个数dp[i][j],接下来的目标就是寻找递归关系。递推关系大部分都是dp[i][j]和dp[

2017-08-04 14:11:09 169

原创 LintCode 解题记录 字符串处理1.0 17.7.29

Before: 按照难度做的 ————————-Easy———————————LintCode Add Binary二进制求和。给定两个用字符串表示的二进制序列,求其和序列,同样以字符串表示。 1.思路 按照加法的规则来,从两个字符串的末尾(相当于最低位)开始加,维护进位位,把每次得到的结果顺序加在结果字符串上,最后利用reverse函数将结果字符串颠倒即为正确答案。 2.注意 要注意判断

2017-07-29 16:53:54 231

原创 LintCode 解题记录 Matrix专题

LintCode Matrix Zig Traversal按照之字形遍历输出矩阵。跟之前按照螺旋稳的方式遍历输出矩阵的题目很相似。 但是自己做起来就觉得总是这考虑不全那儿考虑不全,改来改去才能AC。 看了网上的解法,觉得比自己的要好,于是记录一下。 思路: 首先要明白之字形是怎么样的一种走法,可以概括为如下方式: 先沿斜右上方走到头,然后选择向右移动一位或者是像下移动一位。 然后沿斜左下

2017-07-26 21:19:25 334

原创 LintCode 解题记录 7.11 ~ 7.16

7.1~7.10号去南京玩了,所以没有刷题。现在回来了,题目继续搞起吧~LintCode Median of Two Sorted ArrayHARD题,没做出来。 看完网上的思路来总结一下: 这题可以转换为topK问题来解决,已知有序数组A和数组B,其合并后的中位数就是求其第k(k = (A.size+B.size)/2 )小数的问题。我们可以分别在数组A和B中考虑第k/2数,即A[k/2-1

2017-07-11 12:07:54 184

原创 LintCode 解题记录17.6.26 ~ 17.7.2

6.26LintCode Wiggle Sort给定一个未排序的数组,要求按照如下规则原地排序: nums[0] <= nums[1] >= nums[2] <= nums[3]… 答案会有很多种,输出其中一种就可以。 自己的思路:按照这样的选择规则就可以:首先把数组排序,然后nums[0],nums[2],nums[4]..这些从小到大选,而nums[1],nums[3],nums[5].

2017-06-27 15:22:27 219

原创 LintCode 解题记录 17.6.19~17.6.25

大概有十几天没有做题了,主要是出差大概耽误了一周左右的时间,进度又跟不上了。17.6.19 晚LintCode Next PermutationsII给定一个序列,求其下一个序列。比如123下一个序列就是132,如果已经是最大的序列321,那么会回到最小的123。 思路:从序列的末尾开始看起,如果对于位置i的数,从i+1~n-1的数全部小于位置i的数,那么说明从位置i开始的数就是最大的。如果发现一

2017-06-19 21:35:17 422

原创 Machine Learning With Spark--读书笔记

第一章 Spark的环境搭建与运行Spark的支持四种运行模式 - 本地单机模式Spark Standalone:所有Spark进程都运行在同一个Java虚拟机中。 - 集群单机模式:使用Spark内置的任务调度框架。 - 基于Mesos:Mesos是一个流行的开源集群计算框架。 -基于YARN:即Hadoop2,它是一个与Hadoop关联的集群计算和资源调度框架。1.1 Spark

2017-06-09 16:55:59 732

空空如也

空空如也

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

TA关注的人

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