自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

u010900754的专栏

真心希望国内博客环境 多一些原创 少一些复制

  • 博客(26)
  • 资源 (3)
  • 收藏
  • 关注

原创 【Leetcode】410. Split Array Largest Sum

题目:https://leetcode.com/problems/split-array-largest-sum/?tab=Description题目要求是把一个数组分成m个连续的部分,让m个部分的最大值最小。每一种分法都会存在一个最大值,目的是找出所有分法的最大值中的最小值。有两个思路。1.第一个是dp,或者说backtracking带memo。定义函数find(i, m),返回

2017-02-28 11:06:23 382

原创 【Leetcode】190. 7. reverse bits, integer

190,reverse bits:https://leetcode.com/problems/reverse-bits/?tab=Description把一个int的二进制反转。要得到一个int的二进制的每一位,需要使用移位操作,但是取得的每一位如何赋值给结果?一个思路就是先移位再或操作,更好的的是每次对结果的最低位赋值,然后把结果左移一位,那么结果和输入每一次只移动一位。最后一次结果不能

2017-02-27 23:30:36 228

原创 【信息安全】RSA

公钥加密,密钥是一对,一个公开一个保密,用其中一个加密,用另一个解密。RSA是一种公钥加密方法。过程如下:(1)选择质数p,q,n=p*q,p和q是private,n是public;(2)选择e,e与f(n)=(p-1)*(q-1)互质,且1(3)求解e^-1 = d mod f(n),d是private的。e是d是一对密钥。e公开d保密;(4)加密m,其中m(5)解密c,

2017-02-27 08:06:45 362

原创 【信息安全】DHP

DHP,全称是Diffie Hellman Protocol,是一种交换密钥的方式。在私钥加密体系中,密钥是非公开的,加密和解密使用的是同一个密钥,那么如何传递密钥?DPH提供了在公共channel传递密钥的方法。假设A和B要通信,那么二者传递key的方式如下:先选择质数p和底数g,公开。(1)A产生一个随机数a,a是保密的。(2)A发送A = g^a % p给B。(3)B

2017-02-27 06:12:22 1332

原创 【信息安全】一些数论小知识

1.乘法逆元a*x = 1 mod n,那么x就是a的乘法逆元模n。即a*x = k*n + 1, 根据扩展的欧几里得定理,a存在乘法逆元模n 的 充要条件是 a和n互质。如何求解逆元?不断用除数与余数做除法,直到得到余数1为止,然后再倒推一次。比如求997 模 126的乘法逆元。997 = 126 * 7 + 115126 = 115 * 1 + 11115 =

2017-02-27 01:51:09 567

原创 【Leetcode】Single Number 系列问题

这三道题目很考察bit操作思路。使用了下列几个技巧。1.如何取得一个int数字二进制表示的每一位,方法就是使用逻辑右移操作,逐位与1做&操作;2.亦或xor是一个很关键的操作,0与任意一个数做偶数次xor结果是0,奇数次结果是1。3.位操作是满足交换律的,因为每一个bit是满足的。4.如何得到一个int的最右侧的第一个1?方法是与其相反数做&。因为相反数是取反加一,取反以后,第一个

2017-02-26 04:28:26 900

原创 【数据结构与算法】数据库索引

1.物理外部存储,最典型的是磁盘或者disk,根据柱面,磁道,扇区来定位。柱面指定半径,磁道指定哪一块盘(通常是若干磁盘为一组),扇区指定在磁盘的哪一块。2.Block,Block是缓冲区,操作系统IO操作总是读取一块数据进入内存,这样相邻的数据可能再一次读取中就可以得到。block大小是对应计算机IO的,这个大小和磁盘的扇区大小其实是两个概念。磁盘大小是磁盘生产时就决定的。但是IO的

2017-02-25 08:21:54 611

原创 【数据结构与算法】B+ tree

之前介绍了B tree,但是在实际应用中,通常会选择B tree的变种即这里的B+ tree作为数据结构,B+ tree究竟在哪些方面优于B tree?由于《算法导论》中没有对B+ tree的介绍,这里主要参照的是《数据库系统基础 6th》中的内容。B+ tree和B tree的主要区别在于节点结构与操作。节点方面:B+ tree中有两种节点,一个是索引节点,另一个是数据节

2017-02-25 01:44:42 857

原创 【数据结构与算法】B tree 即相关操作 深入解读

B tree是从其他搜索树结构中延伸出来的一种用于外存设备比如disk的一种数据结构。先抛开B tree与disk的关系,单纯地了解下数据结构。1.定义粗略地来讲,B tree定义主要包含以下几个方面:(1)每一个节点的结构,节点包含关键字key,指针pointer,key数目n和叶节点标志bool。(2)顺序问题,每一个节点的key以非降序方式排列。而且,如果ci是ki和ki+1...

2017-02-24 05:12:15 635

原创 【Big data】Odd even merge sort

Odd-even merge sort也是一种基于merge思想的排序算法。对于merge类型的算法,只要知道如何merge,就知道如何排序。首先看odd-even merge。假设现有x1,...,n和y1,...yn两个有序的数组,那么把x分成xodd和xeven两部分,也就是下标时奇数和偶数两部分,y同理,然后递归merge xodd和yodd,递归merge xeven和yeven

2017-02-23 10:26:23 1079 3

原创 【Leetcode】312. Burst Balloons

第一种思路可以采用backtracking。把一个list传递下去,每一步可以选择任意一个删除,然后再递归处理下一个,比较简单。 public int maxCoins1(int[] nums) { if(nums == null || nums.length == 0) return 0; List list = new ArrayList<>(); for(int i : nu

2017-02-22 10:36:39 306

原创 【Leetcode】301. Remove Invalid Parentheses 移除非法小括号

题目https://leetcode.com/problems/remove-invalid-parentheses/?tab=Solutions。题意是给出一个string,其中的小括号可能不配对,移除不配对的括号,返回所有的解。首先,如何判断括号是否合法。可以用栈,这也是栈这个数据结构的一个典型应用。也可用一个count计数器,遇到左括号++,右括号--,一旦count小于0,就说明不

2017-02-21 12:32:38 1565 1

转载 What is the difference between pages and blocks?

http://www.programmerinterview.com/index.php/database-sql/page-versus-block/

2017-02-20 12:12:08 362

原创 【Big data】外部排序

外部排序指要排序的数据大于内存空间的排序。是out-of-core算法。out-of-core算法的时间复杂度高度依赖IO次数,因为对内存的读取速度远远大于对disk的读取速度。所以内存中的处理时间可以不计,整个算法的复杂度由IO次数决定。IO的操作又是以block为基础的。假设内存大小为M,block大小是B,排序数据是n。第一种是2-路排序。1.首先把数据分成n/M组,每一组调入内

2017-02-20 10:30:34 398

原创 【Leetcode】Stock Buy and Sell 系列问题 终极分析!

股票系列一共五个变种,这里先分析其中的三个。第一个:https://leetcode.com/problems/best-time-to-buy-and-sell-stock/?tab=Description至多交易一次,返回最大利润。实质上是让求一个连续的子串,其最后一个元素和第一个元素只差最大。因为题目要求至多一次交易而不是必须一次,因此如果数组降序,可以选择不交易,所以理论上最小值是

2017-02-20 04:27:58 1397

原创 【面试】lliveramp 面试题 面经 最大时刻问题

给出四个int数字,让返回可以组成的合法的最大的24小时时刻。格式为“HH:MM”。比如1,2,3,4,返回23:41,如果无法组成,返回“not possbile”。答完题以后发现自己漏了一种情况。。。忧伤。。。思路是把数字放入数组,然后排个序,方便处理。(1)先检测o位,如果大于2,返回不可能;(2)处理前两位。最小的数字一定是0或者1或者2。分别考虑这三种情况,从高到低。

2017-02-19 13:00:39 633

原创 【面试】Liveramp 面试题 面经 城市问题

以上来自:http://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=138979&pid=2817216&page=1&extra=page%3D1%26filter%3Dsortid%26sortid%3D311%26searchoption%255B3089%255D%255Bvalue%255D%255B5%255D%3D5%2

2017-02-19 05:44:38 559

原创 【面试】Liveramp 面试题 面经 子序列问题

以上参考:http://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=138979&extra=page%3D1%26filter%3Dsortid%26sortid%3D311%26searchoption%5B3089%5D%5Bvalue%5D%5B5%5D%3D5%26searchoption%5B3089%5D%5Btype%

2017-02-19 01:41:44 476

原创 【面试】Liveramp 面试题 面经 猴子过河问题

题目和青蛙过河有一点不同,A数组值是时间,因为我们需要按时间先后来处理,因此首先想到对值排序,但是复杂度会是nlogn,与题目不和。再看题目要求空间是哦(N+MAX(A)),因此可以新建一个数组,size为maxA,那么直接把值和索引兑换一下,空间换时间,就是On级别了。之后与青蛙过河完全相同。public int monkeyCross(int D, int[] A, int N){ i

2017-02-19 00:59:19 1551

原创 【面试】Liveramp 面试题 面经 青蛙过河问题

题目如上图所示,截取自http://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=142004&highlight=liveramp说下自己的思路,首先可以肯定的是需要遍历时间数组。每一个时间看一下能否到达。第一个思路是用backtracking,每一个时间检测一次,时间复杂度基本是O(DN^2)。事实上,对于线性的所搜或者可达

2017-02-18 11:56:46 2134

原创 【数据结构与算法】选择算法 selection

选择算法指的是解决选出序列中第n大的元素。比如中位数。方法如下:1.使用priorityqueue,维持size为k,如果queue的size小于k,则直接加入,否则看最小的元素能否比得过,比得过就剔除最小元素,加入新元素,比不过就看后面的元素,最后返回堆顶元素即可。这里需要使用最小堆。public int findKthMax(int[] array, int k){ P...

2017-02-16 04:59:13 2784

原创 【数据结构与算法】backtracking 回溯法

backtracking也是一种编程思想,使用到了递归。backtracking要解决的问题大致具有这样的特征,为了得到问题的解,需要进行若干步骤,每一步的抉择都是相同的,每一步都是在上一步的基础上完成的,需要记录之前的轨迹,直到终点情况,不过有可能是正确也有可能是错误。比如最典型的N皇后问题。需要部署N个皇后,每一次部署都有N种可能。其程序在实现上满足下列特征:(1)每一步的处理,先

2017-02-14 08:59:19 4158

原创 【数据结构与算法】 DP 动态规划 介绍

最近在看算法导论。DP全称是dynamic programming,这里programming不是编程,是一个表格保存之前的结果。DP 是一种编程思想,主要用于解决最优解类型的问题。其思路是为了求解当前的问题的最优解,使用子问题的最优解,然后综合处理,最终得到原问题的最优解。但是也不是说任何最优解问题都可以DP,使用dp的问题一般满足下面的两个特征:(1)最优子结构,就是指问题

2017-02-13 00:42:51 9024

原创 【数据结构与算法】二叉搜索树 及 常用操作

/** * @author miracle * bst是一棵二叉树,具有如下性质,对于任意一个结点p,左子树的任意一个节点都小于p,右子树的任意一个结点都大于p。 * 当然也有定义加上等于,但是这里不考虑等于,问题会简化,参照leetcode的定义。 */class TreeNode{ int val; TreeNode left; TreeNode right; Tree

2017-02-12 06:11:29 255

原创 mysql order by 多个字段

下图是只加了一个排序的结果:可以看到,单一字段是没问题的。如果加入c2呢?下图是c2可以发现,这里的orderby是先按c1增序,然后对于按c1排好序以后的相同的元素,又根据c2做了降序排序。下面 是c1,c2都增序,结果符合。总结就是,orderby多个字段时,用逗号分隔每一个字段,如果字段不指明排序方式,默认是增序。排序的方法是先按第一个字段排序,如果有相同

2017-02-11 12:14:08 11263 3

原创 【数据结构与算法】最小堆 minheap

最小堆与最大堆实现思路一样,只不过顺序不同,这里只记录最小堆。最小堆的定义是,一棵完全二叉树,每一个节点都大于等于其父节点。完全二叉树是叶子都在最后一层,且尽量靠左。实现方面可以使用链表或者数组,这里使用数组。如果使用数组,那么下标从0开始,父节点是i,则左子树是2*i+1,右子树是2*i+2。如果子节点是i,则父节点是(i-1)/2。minheap的操作主要有两个,一个是add,

2017-02-01 06:53:56 16502

设计模式的 课件

主要讲解了 设计模式的相关内容 包括类图等其他

2014-04-15

head first 审计模式

headfirst 一系列书籍中 对设计模式的讲解 很容易理解

2014-04-15

shell编程 详解

主要 讲解了linux中shell编程的相关内容 基础的语法 等

2014-04-15

空空如也

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

TA关注的人

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