<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[u010217321的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/u010217321</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u010217321]]></copyright><item><title><![CDATA[373. Find K Pairs with Smallest Sums]]></title><link>https://blog.youkuaiyun.com/u010217321/article/details/69951236</link><guid>https://blog.youkuaiyun.com/u010217321/article/details/69951236</guid><author>u010217321</author><pubDate>Mon, 10 Apr 2017 21:27:20 +0800</pubDate><description><![CDATA[题意：输入两个整形升序数组，整数k，要求分别从2个数组中取出2个数组成对，输出和最小的k个对。
思路：1 参考leetcode discuss；
   2  PriorityQueue实现最小堆，具体步骤如下：
初始化为array1中的前k个元素（注意，如果array1中的长度小于k，则为array1.length）和array2中的首个元素组成的pair；
每次从堆中剔除首个元素p（即目]]></description><category></category></item><item><title><![CDATA[nethogs使用]]></title><link>https://blog.youkuaiyun.com/u010217321/article/details/56016857</link><guid>https://blog.youkuaiyun.com/u010217321/article/details/56016857</guid><author>u010217321</author><pubDate>Mon, 20 Feb 2017 17:46:22 +0800</pubDate><description><![CDATA[1、nethogs中的选项-t （追踪模式）在控制台定时刷新各进程的收发带宽，使用管道命令>即可实现输出重定向，完整命令“./nethogs –t –d 5”//-d 5表示每隔5s刷新一次。（教训：完全没必要添加Line：：toString（），浪费1天时间，自身带有的参数-t）
 
2、查看使用“apt-get install 软件名”安装的软件（实际上在ubuntu下是可执行文件）存在的]]></description><category></category></item><item><title><![CDATA[O_DIRECT选项使用方法]]></title><link>https://blog.youkuaiyun.com/u010217321/article/details/56016540</link><guid>https://blog.youkuaiyun.com/u010217321/article/details/56016540</guid><author>u010217321</author><pubDate>Mon, 20 Feb 2017 17:31:53 +0800</pubDate><description><![CDATA[1、使用O_DIRECT的目的：对文件进行直接的IO操作，避免系统缓冲区的影响，一般用于测试自带的缓存系统的效果
2、使用O_DIRECT方法
diskfd = open("/dev/sdb", O_RDWR| O_DIRECT)
error: ‘O_DIRECT’ undeclared (first use in thisfunction)
//说明编译时无法识别O_DIRECT标识符，]]></description><category></category></item><item><title><![CDATA[16. 3Sum Closest]]></title><link>https://blog.youkuaiyun.com/u010217321/article/details/55260312</link><guid>https://blog.youkuaiyun.com/u010217321/article/details/55260312</guid><author>u010217321</author><pubDate>Sat, 18 Feb 2017 12:09:12 +0800</pubDate><description><![CDATA[题意：给定n个整数的数组S，找出S中最接近目标的3个数的和，返回和。
思路：由于题意只需要求和，不需要返回的元素的位置，那么可以先对数组排序，再求和
            优化： 1、已经找到3个元素的和为target，停止程序；
                         2、i : 0->length-3, j: 0->length-2, index = binarySearch]]></description><category></category></item><item><title><![CDATA[apt-get install nethogs安装出现E: Unmet dependencies. Try 'apt-get -f install' with no packages (or spe]]></title><link>https://blog.youkuaiyun.com/u010217321/article/details/54289849</link><guid>https://blog.youkuaiyun.com/u010217321/article/details/54289849</guid><author>u010217321</author><pubDate>Mon, 09 Jan 2017 16:11:26 +0800</pubDate><description><![CDATA[错误信息如下：

root@f49:/home/ws# apt-get install nethogs
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt-get -f install'to c]]></description><category></category></item><item><title><![CDATA[150. Evaluate Reverse Polish Notation]]></title><link>https://blog.youkuaiyun.com/u010217321/article/details/53816711</link><guid>https://blog.youkuaiyun.com/u010217321/article/details/53816711</guid><author>u010217321</author><pubDate>Fri, 23 Dec 2016 09:46:49 +0800</pubDate><description><![CDATA[题意：使用Reverse Polish Notation计算数学表达式的值，
温馨提示：有效的操作符为+、-、*、/，操作数是整数
思路：逆序---->后进先出，数据结构：栈]]></description><category></category></item><item><title><![CDATA[92. Reverse Linked List II]]></title><link>https://blog.youkuaiyun.com/u010217321/article/details/53815011</link><guid>https://blog.youkuaiyun.com/u010217321/article/details/53815011</guid><author>u010217321</author><pubDate>Thu, 22 Dec 2016 16:32:29 +0800</pubDate><description><![CDATA[题意：将位置m到n处的链表，不要移动元素位置，只走一趟。
温馨提示：1
思路：修改m->n之间的链接指针，注意保存位置在m-1、n+1处的节点，m为1的情况(加入一个虚的头结点，或者直接把m为1的情况单独拿出来讨论)。

    public ListNode reverseBetween(ListNode head, int m, int n) {
    	ListNode pivo]]></description><category></category></item><item><title><![CDATA[96. Unique Binary Search Trees]]></title><link>https://blog.youkuaiyun.com/u010217321/article/details/53809765</link><guid>https://blog.youkuaiyun.com/u010217321/article/details/53809765</guid><author>u010217321</author><pubDate>Thu, 22 Dec 2016 10:40:46 +0800</pubDate><description><![CDATA[题意：输入n，节点值为1....n,构成的不同的bst(二叉查找树)共有多少个？
思路：n:节点个数， |left|表示左子树的节点个数，|rigth|表示右子树的节点个数，
递推关系：1、f(n) = sum(f(|left|*f|right|)(for root in 1，...，n, 从n个数中选择一个数作为根节点的值，剩余的数分别落在左右子树中)）]]></description><category></category></item><item><title><![CDATA[458PoorPigs]]></title><link>https://blog.youkuaiyun.com/u010217321/article/details/53785742</link><guid>https://blog.youkuaiyun.com/u010217321/article/details/53785742</guid><author>u010217321</author><pubDate>Wed, 21 Dec 2016 16:58:02 +0800</pubDate><description><![CDATA[题意：有1000个桶，有且仅有一个桶中包含毒药，其余的都是水。它们看起来都差不多。一头猪如果喝了毒药，将会在15分钟内死去。在一个小时内找出有毒的桶所需猪的最少数目。延伸到更一般的情况：n个桶，一头猪喝完毒药后m分钟内会死掉，要找出有毒的桶需要的最少的猪的数目。

思路：参考leetcode discuss
    public int poorPigs(int buckets, int m]]></description><category></category></item><item><title><![CDATA[460LFU Cache]]></title><link>https://blog.youkuaiyun.com/u010217321/article/details/53780199</link><guid>https://blog.youkuaiyun.com/u010217321/article/details/53780199</guid><author>u010217321</author><pubDate>Wed, 21 Dec 2016 15:17:32 +0800</pubDate><description><![CDATA[题意：设计并实现LFU缓存，需要支持get、set操作，二者的语义描述如下：
get（key）：如果key在缓存中，返回值，否则返回-1；
set（key, value) ：如果key不存在，插入（key， value）。注意问题：1、当缓存满时（达到缓存capacity），先淘汰掉最近使用最少的项；2、当多个key访问频率相同时，淘汰最近没被访问的key。
要求：set/get操作的时间复]]></description><category></category></item><item><title><![CDATA[354RussianDollEnvelopes]]></title><link>https://blog.youkuaiyun.com/u010217321/article/details/52835792</link><guid>https://blog.youkuaiyun.com/u010217321/article/details/52835792</guid><author>u010217321</author><pubDate>Mon, 17 Oct 2016 11:31:17 +0800</pubDate><description><![CDATA[题意：给定一系列的标有(w, h)的信封，当且仅当一个信封的长和宽都小于另一个信封时，才能装进去。最多能嵌套多少个信封？
思路：以w为主序，h为次序将信封排序，当前信封标记为（w, h），找到宽度大于w的信封中且首个高度大于h的信封。数据结构二维数组，一维表示信封数，二维表示（w,h）。

    public int maxEnvelopes(int[][] envelopes) {]]></description><category></category></item><item><title><![CDATA[31NextPermutation]]></title><link>https://blog.youkuaiyun.com/u010217321/article/details/52757818</link><guid>https://blog.youkuaiyun.com/u010217321/article/details/52757818</guid><author>u010217321</author><pubDate>Sat, 08 Oct 2016 17:49:21 +0800</pubDate><description><![CDATA[题意：实现下一个变换，将数字按字典序变换成下一个更大的数字组合，如果不存在这种变换，将它重排成最小的顺序。排放的空间复杂度为O(1)。
思路：将数组的元素从右向左看（增序），直到遇到首个逆序（即左边的元素比右边的元素小）（记为左、右元素），找到数组右半部分刚好大于左元素的元素，交换位置，然后将后面的元素变成升序。时间复杂度O(n)

    public void nextPermutati]]></description><category></category></item><item><title><![CDATA[85MaximalRectangle]]></title><link>https://blog.youkuaiyun.com/u010217321/article/details/52747929</link><guid>https://blog.youkuaiyun.com/u010217321/article/details/52747929</guid><author>u010217321</author><pubDate>Fri, 07 Oct 2016 11:15:12 +0800</pubDate><description><![CDATA[题意：输入一个二维元素为0或1的矩阵，找到包含的1最多的矩形，返回该区域
思路：从左上角依次以1为矩形左上顶点，水平向右扩展直到遇到首个0位置，如果紧邻的元素是0，则直接放弃从该顶点开始的探索（一条边至少由两个元素组成），然后垂直向下搜索，原则类似水平向右搜索。同时，左上顶点的选择能跳过上一次选择过的的水平区域，即本次选择的左上顶点从0后面的首个1开始，而不用从1开始。
注意：矩阵是用字符数组]]></description><category></category></item><item><title><![CDATA[26RemoveDuplicatesfromSortedArray]]></title><link>https://blog.youkuaiyun.com/u010217321/article/details/52724323</link><guid>https://blog.youkuaiyun.com/u010217321/article/details/52724323</guid><author>u010217321</author><pubDate>Sun, 02 Oct 2016 17:39:28 +0800</pubDate><description><![CDATA[题意：输入一个有序数组，删除重复元素满足每个元素只出现一次，返回数组的新长度

要求：不要为新数组分配空间，空间复杂度为O(1)
思路：由于该数组是有序的，重复的元素必定相邻，设置游标表示当前不同的元素，记录不同元素的个数.
    public int removeDuplicates(int[] nums) {
    	if(nums.length == 0 || nums ==]]></description><category></category></item><item><title><![CDATA[29DivideTwoIntegers]]></title><link>https://blog.youkuaiyun.com/u010217321/article/details/52722725</link><guid>https://blog.youkuaiyun.com/u010217321/article/details/52722725</guid><author>u010217321</author><pubDate>Sun, 02 Oct 2016 12:01:26 +0800</pubDate><description><![CDATA[题意：不使用乘法、除法、取模运算，相除 两个整数，如果商溢出，返回MAX_INT
思路：能使用加法、减法、移位运算，被除数不断减去除数，直到为不大于0为止，并且判断上是否超过MAX_INT， 
           优化：除数左移i位，...1位（其中i+1位就大于被除数），直到余数小于除数。注意：除数是2的情况、被除数和除数是Integer.MAX_VALUE、Integer.MIN_VAL]]></description><category></category></item><item><title><![CDATA[14LongestCommonPrefix]]></title><link>https://blog.youkuaiyun.com/u010217321/article/details/52684793</link><guid>https://blog.youkuaiyun.com/u010217321/article/details/52684793</guid><author>u010217321</author><pubDate>Tue, 27 Sep 2016 21:43:51 +0800</pubDate><description><![CDATA[题意：找到字符串数组中最长的公共全缀
思路：思路将最短的字符串当做哨兵，记录与当前字符串相同的前缀的位置index，直到和数组中的全部字符串比较完成

    public String longestCommonPrefix(String[] strs) {
        if(strs == null || strs.length == 0){
        	return ne]]></description><category></category></item><item><title><![CDATA[235LowestCommonAncestorofaBinarySearchTree]]></title><link>https://blog.youkuaiyun.com/u010217321/article/details/52668005</link><guid>https://blog.youkuaiyun.com/u010217321/article/details/52668005</guid><author>u010217321</author><pubDate>Mon, 26 Sep 2016 10:44:17 +0800</pubDate><description><![CDATA[题意：输入一个二叉查找树（BST），和两个给定节点，在BST中找到这两个节点的最低的共同的祖先（LCA）。
温馨提示：wiki对LCA的定义为两个节点的最低的祖先，即两个节点到根的首个交点，LCA用在树（计算两个节点之间的距离，即两个节点到根距离的和减去2被的LCA）或者有向无环图。
思路：1、节点的层次，其中，根节点的层次是父节点层次加1（递归定义）；
            2、使用Ha]]></description><category></category></item><item><title><![CDATA[19RemoveNthNodeFromEndofList]]></title><link>https://blog.youkuaiyun.com/u010217321/article/details/52618269</link><guid>https://blog.youkuaiyun.com/u010217321/article/details/52618269</guid><author>u010217321</author><pubDate>Thu, 22 Sep 2016 09:22:33 +0800</pubDate><description><![CDATA[题意：输入一个单链表，删除从链尾开始的第n个节点（从1开始），然后返回头结点
声明：n总是有效的，时间复杂度O(n)
思路：使用数据结构ArrayList,存放映射关系，扫描一遍单链表，建立每个节点与位序之间的关系，直接将位于倒数（n+1）的next指向倒数（n-1）节点
运行出现internal error，刷新网页，成功提交

	 public ListNode removeNthF]]></description><category></category></item><item><title><![CDATA[297SerializeandDeserializeBinaryTree]]></title><link>https://blog.youkuaiyun.com/u010217321/article/details/52603964</link><guid>https://blog.youkuaiyun.com/u010217321/article/details/52603964</guid><author>u010217321</author><pubDate>Wed, 21 Sep 2016 10:30:00 +0800</pubDate><description><![CDATA[题意：序列化是一个过程，将数据结构或者对象转化成位串，以便存进文件、缓冲区或者通过网络传输到对端再进行重构。
           设计算法实现二叉树的序列化和降序列化，对算法无性能要求，仅需保证二叉树能被序列化成字符串，同时字符串能被降序列为二叉树。
声明：不要使用类的成员、全局、静态的变量去存储状态，因为序列化和非序列化都是针对对象的，是无状态的。
思路：类似BFS，数据结构队列，处理父]]></description><category></category></item><item><title><![CDATA[11ContainerWithMostWater]]></title><link>https://blog.youkuaiyun.com/u010217321/article/details/52592644</link><guid>https://blog.youkuaiyun.com/u010217321/article/details/52592644</guid><author>u010217321</author><pubDate>Tue, 20 Sep 2016 10:15:29 +0800</pubDate><description><![CDATA[题意：给定n个非负整数a1、a2，...，an，画n条竖线，满足第i条线的终点分别为(i,ai)和(i,0)。找出两条线，和x轴形成一个容器，满足装的水最多。
说明：不能倾斜容器。
思路：设选中的两条线分别为i，j（i 
1、穷举法，依次求面积找最大，运行超时，时间复杂度O(n)

2、找规律，距离逐渐减小，短边逐渐变大，求出面积最大值 时间复杂度O(n) 

{优快云:CODE:]]></description><category></category></item></channel></rss>