面试题--完全二叉树的的最后一层的最右节点
摘要:只说一下思路:由于除了最后一层,上面的构成满二叉树。对当前节点,判断最左和最右节点的层数,如果想等说明不在这个子树上,不等则在这个子树上递归求解:O(logn)?
阅读全文
数据库原理--故障恢复
摘要:数据库故障分类:事务故障(事务中途执行失败)系统故障(病毒之类的)介质故障(存储数据的硬件出现故障)故障恢复方法:数据库备份+数据库日志(记录事务更新操作的文件)事务故障:回滚到事务之前的一致性状态系统故障:撤销未完成事务,重做已完成事务介质故障:重新安装,重做所有事务进阶:加入检查点
阅读全文
数据库原理--事务并发控制
摘要:事务并发:指事务能够在同一时间同时执行存在的问题:1、丢失修改(T1和T2同时修改,T2的结果将T1的结果覆盖)2、读脏数据(T1修改后,T2读取,但是T1撤销修改)3、不能重复读(T1前后读的数据不同)并发控制:锁:互斥锁(X)、共享锁(S)、U锁2段锁协议:分两个阶段,第一阶段只能申请锁;第二阶...
阅读全文
数据库原理--事务(一)
摘要:一、什么是事务通俗的讲,事务是指一组数据库操作。二、事物的基本性质ACIDA(atom)原子性:事务要么都做,要么都不做C(consistency)一致性:事务的结果必须是从一个一致性状态到另外一个一致性状态,中间出现故障就回滚I(Isolation)隔离性:各个事务间不能有干扰D()持续性:事务作...
阅读全文
数据库原理--1nf 2nf 3nf
摘要:数据库设计的第三范式关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式。数据库的设计范式是数据库设计所需要满足的规范。只有理解数据库的设计范式,才能设计出高效率、优雅的数据库,否则可能会设计出错误的数据库.目前,主要有六种范式:第一范式、第二范式、第三范式、BC范式、第四范式和第五范...
阅读全文
数据库原理--外键和主键
摘要:在关系型数据库中,数据结构有逻辑结构和物理结构。物理结构指存储在物理介质上的数据文件的结构。逻辑结构即关系,也就是一张张的二维表。表中的一列即为一个字段(属性),代表的是实体的一个属性。表中的一行即为一条记录。如:学生表中(学号,姓名,年龄,性别),在该表中有4个字段,代表学生实体的4个属性。表中的...
阅读全文
数据库原理--函数依赖和范式
摘要:关系数据库设计范式介绍 .1 第一范式(1NF)无重复的列 所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为...
阅读全文
c++笔记--stl的hash_map
摘要:以下内容是转载的:http://stlchina.huhoo.net/bin/view.pl/Main/STLDetailHashMap详细解说STL hash_map系列详细解说STL hash_map系列0 为什么需要hash_map1 数据结构:hash_map原理2 hash_map 使用2...
阅读全文
LeetCode--3Sum
摘要:类似于2sum,先排序,然后从左开始遍历,计算a[i]后面的等于-a[i]的两个元素,注意去除重复元素 1 class Solution { 2 public: 3 vector > threeSum(vector &num) { 4 vector > res; 5 ...
阅读全文
九章算法--寻找数组波峰
摘要:题目描述:一 个数组A[1..n],假设数组中没有任何相邻两数相等,满足A[1]A[n]。A[i]被称为波峰,当且仅当 A[i]>A[i-1]并且A[i]>A[i+1]。请找到数组中的一个波峰。假设数组中存在相邻相等的数,该怎么做?二分法寻找一个波峰,如果数组存在相邻相等的元素则必须O(n) 1 /...
阅读全文
c++笔记--父类和子类的转化问题
摘要:以下二种情况是可以成立的:父类指针或者引用可以指向子类对象(指针解释的对象大小为基类大小,子类包含有基类)子类分割成基类对象(一只鸡一定是一个动物)以下二种情况不能成立:子类指针或者引用指向父类对象(指针解释的对象大小为子类大小,比基类要大,会出现不合法的内存访问)基类转化成子类(一个动物不一定是鸡...
阅读全文
c++笔记--函数重载(不合法的重载情况)
摘要:在下面几种情况下不能视为重载:1、返回值不同的函数不能视为重载2、返回值是否为静态不能视为重载3、数组和指针int fun(int *ptr);int fun(int ptr[]); // redeclaration of fun(int *ptr)4、函数和函数指针void h(int ());v...
阅读全文
重新排列数组,使得负数后面跟着正数,O(1)的空间
摘要:两种情况:可以打乱原始顺序;不可以打乱原始顺序下面代码未测试,只是build了一下 1 /************************************************************************* 2 > File Name: RearrangeArr...
阅读全文
LeetCode--Insert Interval
摘要:其实可以O(n)的思路,如下 1 class Solution { 2 public: 3 vector insert(vector &intervals, Interval newInterval) { 4 // Start typing your C/C++ soluti...
阅读全文
LeetCode--Surrounded Regions
摘要:1 class Solution { 2 public: 3 void solve(vector> &board) { 4 int m = board.size(); 5 if(m == 0) 6 return; 7 ...
阅读全文
LeetCode--Container With Most Water
摘要:双指针 1 class Solution { 2 public: 3 int maxArea(vector &height) { 4 if(height.size() == 0 || height.size() == 1) 5 return 0; 6 ...
阅读全文
LeetCode--Permutation Sequence
摘要:1 class Solution { 2 public: 3 string getPermutation(int n, int k) { 4 int fac[10]; 5 bool vis[10]; 6 memset(vis, 0, size...
阅读全文
LeetCode--Regular Expression Matching
摘要:1 class Solution { 2 public: 3 bool isMatch(const char *s, const char *p) { 4 // Start typing your C/C++ solution below 5 // DO N...
阅读全文
LeetCode--Populating Next Right Pointers in Each Node II
摘要:同上题:但是这题需要考虑好对当前节点的left和right的next指针如何设置。 1 /** 2 * Definition for binary tree with next pointer. 3 * struct TreeLinkNode { 4 * int val; 5 * Tre...
阅读全文
LeetCode--Populating Next Right Pointers in Each Node
摘要:由于题目意思是满二叉树:所以,对当前节点,设置它的左右子节点的next指针即可root->left->next = root->rightroot->right->next = root->next?root->next->left:NULL 1 /** 2 * Definition for bi...
阅读全文
内部网关协议--RIP和OSPF
摘要:主要说一下这两种协议的区别:RIP协议是距离向量协议,使用的是TCP/UDP,相邻路由之间发送距离向量表,互相更新;由于每个路由都需要邻居的信息,所以收敛比较慢;而且在中间出现路由故障后,各个路由器的路由表可能会形成路由自环(因为出现故障那个路由不可达了,导致都没有相关距离信息)OSPF是链路状态协...
阅读全文
如何判断大端小端?
摘要:一、最简单的做法:参考(深入理解计算机系统中文版第二版,P28,show_bytes)转化成usigned char*的byte_pointer;然后遍历输出每个字节的值,即可判断。输入可以是任意一个数。类似于:http://blog.csdn.net/yuucyf/article/details/...
阅读全文
Careercup--Write a method to return first five 10 digit prime numbers
摘要:http://www.careercup.com/question?id=5763123118080000Primes after a point in the series are multiples of 6 +/-1. that is 31 = 30 + 1, 37 = 36 + 1 and ...
阅读全文
C++重载自增运算符的效率问题
摘要:C++规定后缀形式有一个int类型参数,当函数被调用时,编译器传递一个0做为int参数的值给该函数。increment的前缀形式表示“增加然后取回”,后缀形式表示“取回然后增加”。 1 #include "stdafx.h" 2 #include "assert.h" 3 c...
阅读全文
GNU make 参数(转)
摘要:http://www.ha97.com/961.html下面列举了所有GNU make 3.80版的参数定义。其它Linux版本和产商的make大同小异,不过其它产商的make的具体参数还是请参考各自的产品文档。“-b”“-m”这两个参数的作用是忽略和其它版本make的兼容性。“-B”“–alway...
阅读全文
make输出log以及dry run
摘要:一.输出log如何获得Linux下make的log? 如何保存控制台对话? 如何将编译过程的信息保存成日志? 编译的过程可能会出错,导致编译过程无法继续进行。详细分析出错信息,有助于解决源码中的语法错误。 那么如何保存配置编译过程的信息?这些信息量很大,都可能超出Shell向上翻滚查看的范围。最好...
阅读全文
C++四种cast操作符
摘要:C++的四种cast操作符的区别发信站: 水木社区 (Thu Jan 26 21:15:16 2006), 站内声明 by NetMD:并非我的原创,来自互联网,且是两篇帖子的合集,个人觉得这样才比较完备------------------------------------------------...
阅读全文
LeetCode--Anagrams
摘要:1 /************************************************************************* 2 > File Name: Anagrams.cpp 3 > Author: zhoukang1991 4 > Mai...
阅读全文
LeetCode--N-Queens
摘要:dfs:根据行或者列开始,假设根据行,从第1行开始,从第一行的每一列对应的元素开始dfs,直到第n行,输出结果 1 /************************************************************************* 2 > File Name: N-...
阅读全文
LeetCode--Gas Station
摘要:1 /************************************************************************* 2 > File Name: GasStation.cpp 3 > Author: zhoukang1991 4 > Mail: zhoukan...
阅读全文
GDB调试(转)
摘要:GDB 是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。 一般来说,GDB主...
阅读全文
LeetCode--Word Search
摘要:dfshttps://github.com/cane1991/BasicAlogrithmSourceCode/blob/master/LeetCode/WordSearch.cpp 1 /*******************************************************...
阅读全文
Ptrace_scope的作用及设置
摘要:echo "0"|sudo tee /proc/sys/kernel/yama/ptrace_scopeShort answer: no practical danger yet, but read on for a better way...What's this ptrace thing any...
阅读全文
LeetCode--Gray Code
摘要:格雷码的定义第二次写的,参考别人。代码写的很简洁 1 class Solution { 2 public: 3 vector grayCode(int n) { 4 // Start typing your C/C++ solution below 5 // ...
阅读全文
Vim强大设置(转)
摘要:http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html""""""""""""""""""""""""""""""""""""""""
阅读全文
LeetCode--Decode Ways
摘要:其实本题和:http://www.geeksforgeeks.org/count-possible-decodings-given-digit-sequence/是类似的。但是这道题需要考虑错误情况。 1 class Solution { 2 public: 3 int numDecodin...
阅读全文
Git连接GitHub
摘要:其实这个内容就是git如何添加和使用远程库参考:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013752340242354807e192f02a44359908df8a5643...
阅读全文
堆排序-c++
摘要:1 /************************************************************************* 2 > File Name: HeapSort.cpp 3 > Author: zhoukang 4 > Mail: z...
阅读全文
LeetCode--Sudoku Solver
摘要:思路:dfs+数独游戏规则。数独游戏规则是:同行同列不能有重复数字;并且每9宫内不能有重复数字 1 class Solution { 2 public: 3 bool isValid(vector > &board, int a, int b) { 4 int i,j; 5 ...
阅读全文
LeetCode--Merge Intervals
摘要:简单题:先按左左边排序,然后对输入的区间和当前结果合并 1 /** 2 * Definition for an interval. 3 * struct Interval { 4 * int start; 5 * int end; 6 * Interval() : ...
阅读全文
LeetCode--Valid Number
摘要:这道题真心是难度比较大,不是算法难度,是实现难度,各种case都得考虑到。我没有A过,一开始就把.1这种case当做是错误的。导致程序逻辑乱套了。下面是别人的代码: 1 class Solution { 2 public: 3 bool isNumber(const char *s) { 4...
阅读全文
LeetCode--Max Points on a Line
摘要:思路:时间复杂度:O(n^2),挨个遍历。暴力搜索。但是有几点要注意:第一,map的斜率是float,所以,为了不损失精度,求斜率先把int-》float,再相除;第二,注意处理为空和为0的情况。为1是返回0还是1,这个和面试官交流,leetcode上面是返回1 1 /** 2 * Definit...
阅读全文
1.1
摘要:1.1 Implement an algorithm to determine if a string has all unique characters. Whatif you cannot use additional data structures? 1 #include 2 #includ...
阅读全文
智能指针原理与简单实现(转)
摘要:以下实现没有考虑线程安全的问题。智能指针:它的一种通用实现方法是采用引用计数的方法。智能指针将一个计数器与类指向的对象相关联,引用计数跟踪共有多少个类对象共享同一指针。 每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建时,拷贝构造函数拷贝指针并增加与之相应的引用计...
阅读全文
C++内存管理(转)
摘要:内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,...
阅读全文
算法题--扔棋子
摘要:题目如下:“有一个100层高的大厦,你手中有两个相同的玻璃围棋子。从这个大厦的某一层扔下围棋子就会碎,用你手中的这两个玻璃围棋子,找出一个最优的策略,来得知那个临界层面。“先说下扩展:n层k个球这道题有一个dp解,因存在递归。假设第一次扔在第r层,碎了就在1~r之间寻找,此时还剩k-1个球;没碎就在...
阅读全文
LeetCode--Substring with Concatenation of All Words
摘要:通过hash记录L中各个单词出现的次数,由于每个单词仅仅在S的解中出现一次,且单词长度一样,所以还是很好处理的。但是有一个问题需要注意:string的length函数返回的size_t是无符号的。参看代码注释1http://www.cplusplus.com/reference/string/str...
阅读全文
LeetCode--Text Justification
摘要:我的思路:循环遍历输入的单词,每次获取一组符合 fullJustify(vector &words, int L) { 2 // Note: The Solution object is instantiated only once. 3 vector res; 4 ...
阅读全文
海量数据处理--hash和bit-map
摘要:问题实例:海量日志数据,提取出某日访问百度次数最多的那个IP。答:对于ip,最多也就2^32个。所以可以很好地通过hash函数映射到内存中,再进行统计。IP最多为2^32个,为4G,一次放入内存中不行,可以采用分而治之的方法,先Hash(IP)/1024,将IP地址分别映射到1024个小文件中,每个...
阅读全文
海量数据处理--bloom filter
摘要:例题:给定两个大文件,各含有50亿条url,要求利用4G内存快速找出共同的url解答:假设两个文件为A和B,4G内存有32G位,可以表示5G的url。本文采用bloom filter解答:首先简单介绍一下bloom filter的思想,其核心是:位数组;K个hash函数。通过对大量数据处理,通过k个...
阅读全文
SSH原理简介(转)
摘要:http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.htmlSSH是每一台Linux电脑的标准配置。随着Linux设备从电脑逐渐扩展到手机、外设和家用电器,SSH的使用范围也越来越广。不仅程序员离不开它,很多普通用户也每天使用。SSH具备多...
阅读全文
内存对齐(转)
摘要:http://www.cnblogs.com/kex1n/archive/2009/06/16/2286527.html一.内存对齐的初步讲解内存对齐可以用一句话来概括:“数据项只能存储在地址是数据项大小的整数倍的内存位置上”例如int类型占用4个字节,地址只能在0,4,8等位置上。例1:#incl...
阅读全文
Ubuntu12.04 安装(无法将 grub-efi 软件包安装到/target/中,如果没有 GRUB 启动引导期,所安装的系统无法启动)
摘要:这个问题是由于在安装的时候,选择了efi boot mode的原因。所以解决方案就是:改efi boot mode 为Legacy boot mode关于efi和bios的区别,自行百度吧。BIOS即Basic Input/Output System,翻成中文是“基本输入/输出系统”,是一种所谓的“...
阅读全文
算法题--等概率产生0和1(有扩展)
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 using namespace std;11 12 const int k =...
阅读全文
算法题--rand5产生rand7
摘要:由一个随机数产生另外一个随机数,最关键的问题是,如何实现等概率映射?下面是我的rand5产生rand7的实现:主要思路是将rand5映射到rand(5~30),然后抛去多余的几个,将剩下的21个数每三个映射到1~7之间得数。 1 #include 2 #include 3 #include 4...
阅读全文
设计模式分类
摘要:目的创建型模式Creational Pattern结构型模式Structural Patterns行为型模式Behavioral Pattern概念创建型模式,就是创建对象的模式,抽象了实例化的过程。它帮助一个系统独立于如何创建、组合和表示它的那些对象。关注的是对象的创建,创建型模式将创建对象的过程...
阅读全文
单例模式
摘要:由于项目中用到了一些设计模式,所以稍微总结一下。第一个是单例模式。单例模式分为饿汉模式和懒汉模式:前者是线程安全的后者是非线程安全的。饿汉模式下,是利用静态变量的生命周期以及初始化的特性来实现的。懒汉模式是在使用的时候才初始化。但是不是线程安全的,所以需要加锁来同步。但是直接加锁的话每次都得判断,影...
阅读全文
九章算法--分配抄书员
摘要:思路:(1)最常见的思路就是dp:状态表示为dp[i][j],表示前j个人抄i本书最少时间;dp[i][j] = min(max(dp[k][j-1],sum(k+1,i))) (j 2 #include 3 #include 4 #include 5 #include 6 #include...
阅读全文
Ubuntu12.04 enable the 'partner' repository
摘要:http://askubuntu.com/questions/14629/how-do-i-enable-the-partner-repositoryGUI Way:Click on the ubuntu button, then search for "Software Sources" and ...
阅读全文
sudo: /etc/sudoers is mode 0777, should be 0440问题解决方案
摘要:网上有介绍登入root用户,或者去grub的recovery mode选项去选择root模式进入,再去用chmod把/etc/sudoers的权限改回来.但是你可能从来没设置过root密码,或者你根本就不知道root密码是多少.或者即便进入了recovery mode选项去选择root模式,当执行c...
阅读全文
LeetCode--Minimum Window Substring
摘要:这题关键注意:T可能有重复,所以得统计次数,我之前理解错了,后来参考别人代码才知道的。思路就是双指针+字符hash,具体见注释 1 class Solution { 2 public: 3 string minWindow(string S, string T) { 4 ...
阅读全文
LeetCode--Combination Sum II
摘要:思路:类似于上一题,但是加了一个index数组记录结果里面已经存放的元素索引,用来判断当前的元素是否和上一个相同并且上一个是否使用过。主要为了解决重复解的问题。 1 class Solution { 2 public: 3 vector >ans; 4 vector > combin...
阅读全文
LeetCode--Combination Sum
摘要:题目链接:https://oj.leetcode.com/problems/combination-sum/思路:题目要求合并的答案需要升序排序。所以先排序,然后每次选一个,递归处理。注意:每个元素可以多次,然后不能有重复的答案,所以碰到处理过的元素就不处理了。 1 class Solution {...
阅读全文
c++笔记--关于箭头运算符重载使用
摘要:在stl里面,list的迭代器有重载箭头运算符。之前没搞清楚这个有什么用,看了一些资料,加上自己前面一篇笔记。写了下面测试程序: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8...
阅读全文
程序员面试100题--02
摘要:题目描述:实现一个min操作位O(1)的栈//之前其实写过一次,这次换一个何海涛的方法,设定辅助栈保存当前的最小值的索引。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #i...
阅读全文
程序员面试100题--01
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 9 /*10 思路:11 递归的转化左子树以及右子树,然后将当前节点作为左子树链表的末尾节点,12 作...
阅读全文
c++笔记--重载箭头运算符
摘要:箭头操作符(->)的通常用法是,使用一个类对象的指针来调用该指针所指对象的成员。左操作数为对象指针,右操作数为该对象的成员。定义重载箭头操作符之后看起来就有点特别,可以用类对象的指针来调用,也可以用类对象直接调用。重载箭头操作符,首先重载箭头操作符必须定义为类成员函数。箭头操作符可能看起来是二元操作...
阅读全文
从LLVM源码学C++(六)
摘要:今天看clang的有关DeclSpec.h,看到有关关键字的一些信息。这里总结一下知识点:各种关键字C++关键字(static/register/atuo/extern/volatile/const)释疑 下面关于C++的几个关键字是经常和我们打交道的而我们又经常对这些含糊不清的, 本文根据自己的学...
阅读全文
LeetCode--Longest Palindromic Substring
摘要:有一个比较容易出错的点:反转求最长公共子序列,这是错误的想法 1 class Solution { 2 public: 3 string longestPalindrome(string s) { 4 int n = s.length(); 5 int lon...
阅读全文
LeetCode--Palindrome Number
摘要:关键:如何取最高位的数? 1 class Solution { 2 public: 3 bool isPalindrome(int x) { 4 if(x = 10) 9 {10 div = div*10;11 ...
阅读全文