01 2018 档案

内连接、外连接、交叉连接等
摘要:简介: 连接,实际是将两个表做笛卡尔积生成临时表,再进行过滤的操作。 对于多表连接,也是先对两个表操作,生成临时表再合并(类似reduce)。 名称: 名字是有各种各样,简单分类下: 内连接。 外连接:分左外连接,右外连接,全外连接(或叫完全连接)。 交叉连接。 联合连接(不是联合查询)。 使用方法 阅读全文

posted @ 2018-01-31 20:35 willaty 阅读(246) 评论(0) 推荐(0)

leetcode 197. Rising Temperature
摘要:查询今天比前一天温度低的Id。 阅读全文

posted @ 2018-01-31 19:49 willaty 阅读(115) 评论(0) 推荐(0)

leetcode 196. Delete Duplicate Emails
摘要:# 慢,内连接delete p1 from Person p1, Person p2 where p1.Email=p2.Email and p1.Id>p2.Id delete from Person where Id not in ( select Id from ( select min(Id) as Id from Person group by... 阅读全文

posted @ 2018-01-31 10:45 willaty 阅读(123) 评论(0) 推荐(0)

MYSQL错误:You can't specify target table for update in FROM clause
摘要:这句话意思是:不能先select再更新(修改)同一个表。 可以再外嵌套多一层,这个问题只有mysql有,mssql和oracle都没有。 阅读全文

posted @ 2018-01-31 10:42 willaty 阅读(252) 评论(0) 推荐(0)

leetcode 205. Isomorphic Strings
摘要:求两字符串是否同构。即每个字符可且仅可映射为一个字符(包括自己),若两字符串经过某映射相同,则同构。 朴素的解法是保存其映射值和被映射值。 其实只要保存布尔值即可,巧妙。 阅读全文

posted @ 2018-01-30 14:22 willaty 阅读(85) 评论(0) 推荐(0)

leetcode 203. Remove Linked List Elements
摘要:删除链表中某个元素。 要么直接删,要么值覆盖。算法题就不用free了。 阅读全文

posted @ 2018-01-30 14:13 willaty 阅读(86) 评论(0) 推荐(0)

leetcode 202. Happy Number
摘要:一个数,是否为happy number,取每一位求平方和,得出结果继续,如果结果为1则为happy number。 阅读全文

posted @ 2018-01-30 13:05 willaty 阅读(127) 评论(0) 推荐(0)

leetcode 198. House Robber
摘要:给定一系列整数,取整数,相邻不能取。 解法有二: 动态规划: 求差: 取last = nk - n(k - 1) + n(k - 2) - n(k - 3)...,当遍历到当前元素时,做差,如果结果为正数,则取;否则置0(相当于断开)。 而上式和sum求和除二等于相邻元素和。 阅读全文

posted @ 2018-01-30 13:04 willaty 阅读(129) 评论(0) 推荐(0)

leetcode 191. Number of 1 Bits
摘要:统计bit中1的个数。与一下即可。 阅读全文

posted @ 2018-01-30 10:49 willaty 阅读(115) 评论(0) 推荐(0)

leetcode 190. Reverse Bits
摘要:将32位反转。 也可以用bitset。 阅读全文

posted @ 2018-01-30 00:30 willaty 阅读(94) 评论(0) 推荐(0)

leetcode 189. Rotate Array
摘要:前进k步,k可能大于数组。 。。。 阅读全文

posted @ 2018-01-29 23:22 willaty 阅读(95) 评论(0) 推荐(0)

leetcode 183. Customers Who Never Order
摘要:select Name as Customers from Customers where Id not in (select CustomerId from Orders); 阅读全文

posted @ 2018-01-29 23:11 willaty 阅读(88) 评论(0) 推荐(0)

leetcode 182. Duplicate Emails
摘要:找出重复的数据。 阅读全文

posted @ 2018-01-29 23:08 willaty 阅读(111) 评论(0) 推荐(0)

leetcode 181. Employees Earning More Than Their Managers
摘要:直接写也行 阅读全文

posted @ 2018-01-29 23:01 willaty 阅读(119) 评论(0) 推荐(0)

leetcode 176. Second Highest Salary
摘要:查询第二大的数。 阅读全文

posted @ 2018-01-29 22:44 willaty 阅读(146) 评论(0) 推荐(0)

leetcdoe 175. Combine Two Tables
摘要:给定两个表,一个是人,一个是地址,要求查询所有人,可以没有地址。 详细可参考:https://www.cnblogs.com/grandyang/p/5348900.html 阅读全文

posted @ 2018-01-29 22:26 willaty 阅读(290) 评论(0) 推荐(0)

leetcode 172. Factorial Trailing Zeroes
摘要:求阶乘的尾0,要求对数时间复杂度。 解决: 只有2*5能得出0,对于阶乘,各项因子,因子2的数量肯定大于5,求5即可。 含有5的因子有5,25... 阅读全文

posted @ 2018-01-29 22:09 willaty 阅读(125) 评论(0) 推荐(0)

leetcode 171. Excel Sheet Column Number
摘要:给定字符串,A-Z代表1~26,转化为数字,AA表示27。 阅读全文

posted @ 2018-01-29 22:07 willaty 阅读(107) 评论(0) 推荐(0)

leetcode 169. Majority Element
摘要:给定一个数组,其中一个数字出现的次数超过整个数组的一半,求这个数字。数组非空且必有解。 解法有二: 哈希: 把map改为unordered_map即为哈希,但更慢:-(,肯定是测试集里有数字比较大,坑。 摩尔投票算法: 未完待续。。。 可参考: http://blog.csdn.net/u01250 阅读全文

posted @ 2018-01-29 18:17 willaty 阅读(124) 评论(0) 推荐(0)

leetcode 168. Excel Sheet Column Title
摘要:将数字转化为字母,如1 - A, 26 - Z, 27 - 27。 解决: 理解辗转相除法即可,思考: Z*26^2 + Z*26^1 + Z*26^0 辗转相除,除以26的时候,Z*26^1 + Z*26^0 + (Z / 26),最后多个1。要么减掉,要么判断。 也可先--n再除,直接加上‘A’ 阅读全文

posted @ 2018-01-29 15:45 willaty 阅读(112) 评论(0) 推荐(0)

leetcode 167 Two Sum II - Input array is sorted
摘要:给定一个有序的数组,和一个整数目标,求两个数的和等于目标的索引,索引从1开始。假设必定存在解。 有两种思路: 直接找: 原理显而易见,最坏情况,也就O(n),当两个索引位于中间位置。 二分查找: 每次都是二分地前进后退,最坏情况下达到O(nlogn),当两索引位于中间。 但当两个答案靠近某一端时性能 阅读全文

posted @ 2018-01-29 13:08 willaty 阅读(135) 评论(0) 推荐(0)

leetcode 155 Min Stack
摘要:设计一个最小栈,要求push,pop,top,getMin都是O(1)的。 关键在于: 维护一个普通栈的同时,维护额外一个栈,保存正常栈的递减序列。即除了第一元素,之后的元素都比最小栈的top小。 原理想想就懂,只有更小的能成为min。注意相同元素也入最小栈就行。 阅读全文

posted @ 2018-01-29 11:04 willaty 阅读(81) 评论(0) 推荐(0)

leetcode 141 Linked List Cycle
摘要:链表判断是否有环,快慢指针。 复杂度O(n),不超过n。 阅读全文

posted @ 2018-01-26 17:42 willaty 阅读(100) 评论(0) 推荐(0)

mongo通信协议
摘要:先是一个包头: 特点:每个请求都有个id,客户端启动的时候从0开始递增 opCode表示操作类型,根据这个处理后面真正的请求 比如查询包: 抓包情况如下: 一目了然。 官网:https://docs.mongodb.com/manual/reference/mongodb-wire-protocol 阅读全文

posted @ 2018-01-26 11:56 willaty 阅读(567) 评论(0) 推荐(0)

Redis网络协议
摘要:Redis网络协议较为简单,易于阅读。 命令或数据已\r\n结尾,但除了状态回复,其他数据都是二进制安全的(包含长度) 头部如下: + 正确的状态信息,具体信息是当前行+后面的字符。 - 一条错误信息,具体信息是当前行-后面的字符。 * 表示消息共有多少行,不包括当前行,*后面是具体的行数。 $ 表 阅读全文

posted @ 2018-01-26 11:35 willaty 阅读(195) 评论(0) 推荐(0)

leetcode 136 Single Number
摘要:给定一个数组,其中每个元素出现两次,只有一个出现一次,找出它。 能否用O(N)复杂度以及不用额外空间。 用哈希就没意思,想了一下没想出来 :-P 这东西! 阅读全文

posted @ 2018-01-25 00:46 willaty 阅读(95) 评论(0) 推荐(0)

leetcode 125 Valid Palindrome
摘要:给串字符串,忽略大小写,只关注数字和字母,判定是否回文。 阅读全文

posted @ 2018-01-25 00:20 willaty 阅读(103) 评论(0) 推荐(0)

leetcode 119 Pascal's Triangle II
摘要:求Pascal三角的某一层,要求O(n)复杂度。 阅读全文

posted @ 2018-01-24 23:13 willaty 阅读(118) 评论(0) 推荐(0)

leetcode 118 Pascal's Triangle
摘要:给定一整数,求Pascal三角形。 阅读全文

posted @ 2018-01-24 22:45 willaty 阅读(107) 评论(0) 推荐(0)

leetcode 112 Path Sum
摘要:给定一棵二叉树和一个整数,求是否存在一条从根节点到叶节点,其数值等于整数。 阅读全文

posted @ 2018-01-24 22:43 willaty 阅读(100) 评论(0) 推荐(0)

leetcode 111 Minimum Depth of Binary Tree
摘要:求二叉树最小深度。 递归非常简单,见最大深度。 这里用BFS。 阅读全文

posted @ 2018-01-24 14:26 willaty 阅读(114) 评论(0) 推荐(0)

leetcode 110 Balanced Binary Tree
摘要:判断是否平衡二叉树。 中间多了个判断,剪枝。 阅读全文

posted @ 2018-01-24 13:35 willaty 阅读(109) 评论(0) 推荐(0)

leetcode 108 Convert Sorted Array to Binary Search Tree
摘要:给定一个有序的数组,生成平衡二叉树。 阅读全文

posted @ 2018-01-24 01:48 willaty 阅读(85) 评论(0) 推荐(0)

leetcode 107 Binary Tree Level Order Traversal II
摘要:给定二叉树,从左到右遍历每层,在从下到上遍历。 解决: BFS 由于数据量大,move增速明显。 DFS 阅读全文

posted @ 2018-01-24 01:19 willaty 阅读(113) 评论(0) 推荐(0)

leetcode 104 Maximum Depth of Binary Tree
摘要:int maxDepth(TreeNode* root) { if (!root == NULL) return 0; return max(maxDepth(root->left), maxDepth(root->right)) + 1; } 阅读全文

posted @ 2018-01-24 00:34 willaty 阅读(80) 评论(0) 推荐(0)

leetcode 101 Symmetric Tree
摘要:判定两棵树是否严格镜像对称。 解决: BFS DFS 阅读全文

posted @ 2018-01-24 00:30 willaty 阅读(108) 评论(0) 推荐(0)

leetcode 100 Same Tree
摘要:给两棵树,判断是否完全相同。 阅读全文

posted @ 2018-01-23 14:11 willaty 阅读(109) 评论(0) 推荐(0)

leetcode 88 Merge Sorted Array
摘要:从后往前比较。 阅读全文

posted @ 2018-01-23 13:35 willaty 阅读(86) 评论(0) 推荐(0)

leetcode 83 Remove Duplicates from Sorted List
摘要:给定一个列表,删除重复元素 解决: 阅读全文

posted @ 2018-01-23 13:04 willaty 阅读(82) 评论(0) 推荐(0)

leetcode 70 Climbing Stairs
摘要:给定n阶楼梯,每次只能一步或两步,求共有多少种走法。 解法: 递归一看,明显f(n) = f(n - 1) + f(n - 2),斐波那契,迭代求。 阅读全文

posted @ 2018-01-23 11:07 willaty 阅读(85) 评论(0) 推荐(0)

leetcode 69 Sqrt(x)
摘要:实现开平方。 解决: n分逼近 牛顿迭代法: 牛顿迭代是求近似根的一种方法。 刚看到就想证明: 即若有: r * r > x (一) [(r + x/r) / 2] ^ 2 < x 则: [(r + x/r) / 2 + 1] ^ 2 > x 利用式(一)若干次放大缩小即可。 思考: 抛开数学不谈。 阅读全文

posted @ 2018-01-23 11:04 willaty 阅读(132) 评论(0) 推荐(0)

leetcode 58 Length of Last Word
摘要:给定一字符串,求最后一个单词的长度,其中空格为分隔符,可能含有多个。 从后往前算即可。 阅读全文

posted @ 2018-01-23 10:01 willaty 阅读(99) 评论(0) 推荐(0)

leetcode 53 Maximum Subarray
摘要:给定一个整型数组,其中若干项和最大,求最大值。 思路: 1. 动态规划,子状态为走到 i 的最大和,dp[i] = max(dp[i - 1], 0) + a[i],如果前一项比0小,就抛弃了。 2. 求每一项的前n向和,再遍历,减去前面出现过的最小和,从中选出最大值即可。 都很简单,这里给出dp的 阅读全文

posted @ 2018-01-23 09:59 willaty 阅读(89) 评论(0) 推荐(0)

leetcode 67 Add Binary
摘要:给定两个字符串,是二进制串,实现加法,返回也是二进制。 阅读全文

posted @ 2018-01-23 01:51 willaty 阅读(122) 评论(0) 推荐(0)

leetcode 66 Plus One
摘要:给定一个数组,表示整数的各个位数,现要将其加上1,考虑进位。 思考: 其实也有最后用insert的,其实insert代价也是O(n),需要后移。 也想过判定全是9可以放在for前面,考虑正常情况下全9出现较少,放后面效率好点,概率,:-) 阅读全文

posted @ 2018-01-23 00:58 willaty 阅读(132) 评论(0) 推荐(0)

leetcode 38 Count and Say
摘要:描述: 规则有点奇怪,第n个数 数出上个数的位。 如3122,表示上个数有3个1,2个2,即11122。 现定义: 1为1 2为11,表示1个1 3为21,表示2个1 4为1211,表示1个2,1个1 解决: 注意其中出现的push_back和move! 原本用+号和赋值,效率真的慢,为8ms左右。 阅读全文

posted @ 2018-01-22 18:32 willaty 阅读(130) 评论(0) 推荐(0)

leetcode 35 Search Insert Position
摘要:将一个整数插入一个已排序数组,如果已存在则返回其索引。 二分查找。 阅读全文

posted @ 2018-01-22 14:11 willaty 阅读(168) 评论(0) 推荐(0)

leetcode 28 Implement strStr()
摘要:实现子串索引,不存在则返回-1。 这里仅用朴素的字符串查找。 阅读全文

posted @ 2018-01-22 13:05 willaty 阅读(127) 评论(0) 推荐(0)

leetcode 27 Romove element
摘要:描述: 删除指定元素。不是真的删除,要求把不符合的元素前移。 解决: 非常简单。 阅读全文

posted @ 2018-01-22 12:50 willaty 阅读(133) 评论(0) 推荐(0)

leetcode 26 Remove Duplicates from Sorted Array
摘要:描述: 去除重复的元素。注意要求,要在原vector的基础上操作,并返回去重后长度。即将不重复的元素往前移。 解决: 比较当前与上一个即可。 阅读全文

posted @ 2018-01-22 11:54 willaty 阅读(93) 评论(0) 推荐(0)

leetcode 21 Merge Two Sorted Lists 合并两个有序链表
摘要:描述: 合并两个有序链表。 解决: 阅读全文

posted @ 2018-01-22 11:02 willaty 阅读(111) 评论(0) 推荐(0)

leetcode 20 Valid Parentheses 有效的括号
摘要:描述: 给定一些列括号,判断其有效性,即左括号有对应的有括号,括号种类只为小,中,大括号。 解决: 用栈。 阅读全文

posted @ 2018-01-22 10:03 willaty 阅读(110) 评论(0) 推荐(0)

leetcode 14 最长公共前缀
摘要:描述: 给个字符串vector,求最长公共前缀。 解决: 直接取第一个字符串作为最长公共前缀,将其每个字符遍历过一次。设最长字符实际为k,共n个元素,则复杂度O(nk) 阅读全文

posted @ 2018-01-22 09:47 willaty 阅读(2747) 评论(0) 推荐(0)

leetcode 13 Roman to Integer 罗马数组转整型
摘要:描述: 将一个字符串表示的罗马数字转为整数,范围0~3999 解决: 如果后一个比前一个大,则表示减,没什么技巧。 阅读全文

posted @ 2018-01-22 00:28 willaty 阅读(178) 评论(0) 推荐(0)

leetcode 9 Palindrome Number 回文数
摘要:描述: 判定一个整数是否回文数(注意,负数必定不是回文数,由于是根据读音来判断的)。 要求空间复杂度O(1)。 解决: 一:直观的思路是一个一个对比。 二:反转整数,当反转到反转的数已经大于被反转数时,可判断是否回文。 显然二效率高。 阅读全文

posted @ 2018-01-21 23:50 willaty 阅读(169) 评论(0) 推荐(0)

leetcode 7 reverse integer 反转整数
摘要:描述: 给定32位整数,反转,如321转成123。 解决: 关键是溢出检测: 看了下其他答案,还有一些思路: 先声明个long,看最后是否溢出,这样只有long是64位时可以,或者用int64_t。 还有先转字符串反转再转数字的。 阅读全文

posted @ 2018-01-21 21:55 willaty 阅读(150) 评论(0) 推荐(0)

leetcode 1 A+B problems
摘要:描述: 给个数组和整数t,一串整数中,存在两个数其和等于t,求这两个数的索引。 解决: 想要快,用个哈希储存曾经出现过的数的索引。 阅读全文

posted @ 2018-01-18 18:43 willaty 阅读(179) 评论(0) 推荐(0)

leetcode 121 股票买卖问题系列
摘要:描述: 给一些列数字,表示每条股票的价格,如果可以买卖一次(不能同一天买和卖),求最大利益(即差最大)。 其他三道问题是,如果能买卖无限次,买卖两次,买卖k次。 题一: 实质是求后面一个数减前一个数的最大差值。 维护一个最小值,和当前最大值。只需遍历一次,空间也是常数。 题二: 只要是后一个数比前一 阅读全文

posted @ 2018-01-18 17:11 willaty 阅读(3736) 评论(0) 推荐(0)

leetcode 204 count prim 数素数
摘要:描述: 给个整数n,计算小于n的素数个数。 思路: 埃拉托斯特尼筛法,其实就是普通筛子,当检测到2是素数,去除所有2的倍数;当检测到3是素数,去除其倍数。 不过这要求空间复杂度为n,时间复杂度为n。 解决: 有几个注意的地方。 1. no数组用new,不要用vector,由于操作简单。 2. 更新时 阅读全文

posted @ 2018-01-12 17:53 willaty 阅读(157) 评论(0) 推荐(0)

CVE-2017-7494:Linux Samba named pipe漏洞
摘要:描述: 漏洞是由于代码中一个管道申请命令的判断导致的,可以通过构造特定请求执行上传的so文件。 漏洞影响了Samba 3.5.0 之后到4.6.4/4.5.10/4.4.14中间的所有版本。 测试: 靶机:CentOS6.5 server 攻击机:kali 2017.2 samba版本:3.5.22 阅读全文

posted @ 2018-01-12 10:44 willaty 阅读(853) 评论(0) 推荐(0)

单源最短路:Dijkstra算法 及 关于负权的讨论
摘要:描述: 对于图(有向无向都适用),求某一点到其他任一点的最短路径(不能有负权边)。 操作: 1. 初始化: 一个节点大小的数组dist[n] 源点的距离初始化为0,与源点直接相连的初始化为其权重,其他为无穷大(INT32_MAX等)。 标记源点,其到自身距离是0,已经是最小了。 2. 计算 对于di 阅读全文

posted @ 2018-01-09 11:24 willaty 阅读(6020) 评论(1) 推荐(0)

单源最短路:Bellman-Ford算法 及 证明
摘要:描述: 求图中某一点到其他任一点的最短距离。 操作: 1. 初始化 结果保存在一个dist数组里,源点的结果初始化为0,其他初始化为无穷大(如INT32_MAX)。 2. 计算: 两重for循环,第一层,迭代n - 1次(n为节点数); 第二层,遍历每条边,如果其源点对应的距离加上边权重小于终点对应 阅读全文

posted @ 2018-01-08 17:44 willaty 阅读(2319) 评论(1) 推荐(1)

数论:威尔逊定理
摘要:描述: 如果整数p符合(p - 1)! ≡ -1 ( mod p ),则p是素数。但是由于阶乘增长非常快的,其结论对于实际操作意义不大。 通俗点,当且仅当p是素数,则(p-1)! + 1能被p整除。 证明: 充分性证明: 证明其逆反命题即可:如果p是合数,则p不符合(p - 1)! ≡ -1 (mo 阅读全文

posted @ 2018-01-05 15:37 willaty 阅读(1646) 评论(2) 推荐(1)

数论:剩余类,剩余系等概念
摘要:剩余类: 对于一个整数m,可以把所有整数分成m类,每类对于m都同余。每一类都叫做m的一个剩余类。 比如5,有5个剩余类,对0同余的有{-5,0,5,...} 完全剩余系: 从m的每个剩余类中任抽出一个数组成的集合,称为m的完全剩余系。 简化剩余系(或称缩系): 从m的剩余类中,选出余数互质的剩余类, 阅读全文

posted @ 2018-01-05 01:43 willaty 阅读(1969) 评论(0) 推荐(0)

图的表示法:邻接矩阵,邻接表,前向星
摘要:下面将介绍几种常用表示法:邻接矩阵,邻接表,前向星。以下图为例子: 邻接矩阵: 基础 0 1 1 0 0 1 0 0 0 可以用二维矩阵实现,意义: 第一行表示第一点,第一行也表示第一点,没有连接,为0; 第一行第二列,表示第一点到第二点,有连接,为1; 第三行,第三点,未连接到任何点,全是0; 扩 阅读全文

posted @ 2018-01-05 00:14 willaty 阅读(1016) 评论(0) 推荐(0)

leetcode 235 236 二叉树两个节点的最近公共祖先
摘要:描述: 给定二叉树两个节点,求其最近公共祖先。最近即所有公共祖先中深度最深的。 ps:自身也算自身的祖先。 235题解决: 这是二叉搜索树,有序的,左边小右边大。 236题解决: Aha: 其实还有一些优化可以在编译期层或概率层,如第一个if中的三个或,根据树的深度和测试数量,或发生的概率进行调整, 阅读全文

posted @ 2018-01-04 12:05 willaty 阅读(957) 评论(0) 推荐(0)

ICG游戏:斐波那契博弈
摘要:描述: 有一堆个数为n(n>=2)的石子,游戏双方轮流取石子,规则如下: 1)先手不能在第一次把所有的石子取完,至少取1颗; 2)之后每次可以取的石子数至少为1,至多为对手刚取的石子数的2倍; 3)取走最后一个石子的人为赢家。 结论: 如果n为斐波那契数(2,3,5,8,13,21,34,55,89 阅读全文

posted @ 2018-01-02 17:49 willaty 阅读(517) 评论(0) 推荐(0)

导航