<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[叠搭宝箱]]></title><description><![CDATA[书阁自锁，七曜圣贤]]></description><link>https://blog.youkuaiyun.com/superalsrk</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; superalsrk]]></copyright><item><title><![CDATA[rvm安装与jekyll使用]]></title><link>https://blog.youkuaiyun.com/superalsrk/article/details/17999277</link><guid>https://blog.youkuaiyun.com/superalsrk/article/details/17999277</guid><author>superalsrk</author><pubDate>Wed, 08 Jan 2014 14:03:10 +0800</pubDate><description><![CDATA[为了把博客 stackbox.org 迁移到github + jekyll上去，本地搭建jekyll环境
但是，ubuntu对ruby进行了各种魔改，版本管理及其混乱，需要使用rvm进行版本管理


但是： apt-get install rvm 的这个 rvm是一个错误的rvm，需要按照官网的教程进行安装


安装依赖：


sudo apt-get install git]]></description><category></category></item><item><title><![CDATA[LeetCode之Length of Last Word]]></title><link>https://blog.youkuaiyun.com/superalsrk/article/details/17695085</link><guid>https://blog.youkuaiyun.com/superalsrk/article/details/17695085</guid><author>superalsrk</author><pubDate>Mon, 30 Dec 2013 23:56:51 +0800</pubDate><description><![CDATA[http://oj.leetcode.com/problems/length-of-last-word/





返回最后一个单词的长度，使用java的split方法即可



public class Solution {
    public int lengthOfLastWord(String s) {
        String[] arr = s.split]]></description><category></category></item><item><title><![CDATA[LeetCode之Minimum Depth of Binary Tree]]></title><link>https://blog.youkuaiyun.com/superalsrk/article/details/17693647</link><guid>https://blog.youkuaiyun.com/superalsrk/article/details/17693647</guid><author>superalsrk</author><pubDate>Mon, 30 Dec 2013 23:04:13 +0800</pubDate><description><![CDATA[http://oj.leetcode.com/problems/minimum-depth-of-binary-tree/





这道题用来求二叉树的最小深度，注意有一下两点：


The minimum depth is defined as the number
 of nodes along the shortest path from the root node d]]></description><category></category></item><item><title><![CDATA[LeetCode之Sum Root to Leaf Numbers]]></title><link>https://blog.youkuaiyun.com/superalsrk/article/details/17692763</link><guid>https://blog.youkuaiyun.com/superalsrk/article/details/17692763</guid><author>superalsrk</author><pubDate>Mon, 30 Dec 2013 22:35:25 +0800</pubDate><description><![CDATA[http://oj.leetcode.com/problems/sum-root-to-leaf-numbers/





计算每一条路径的数字之和，需要注意的是，对于二叉树
                    1
                 /
              2
            /
         3 
来讲，其只有一条路径，123， ]]></description><category></category></item><item><title><![CDATA[LeetCode之Remove Element]]></title><link>https://blog.youkuaiyun.com/superalsrk/article/details/17690169</link><guid>https://blog.youkuaiyun.com/superalsrk/article/details/17690169</guid><author>superalsrk</author><pubDate>Mon, 30 Dec 2013 21:05:28 +0800</pubDate><description><![CDATA[http://oj.leetcode.com/problems/remove-element/



采用快慢指针的思想，而且，这是一种 原地算法。



class Solution {
public:
    int removeElement(int A[], int n, int elem) {
       int start_pos = 0;
       for(int i]]></description><category></category></item><item><title><![CDATA[LeetCode之Climbing Stairs]]></title><link>https://blog.youkuaiyun.com/superalsrk/article/details/17683635</link><guid>https://blog.youkuaiyun.com/superalsrk/article/details/17683635</guid><author>superalsrk</author><pubDate>Mon, 30 Dec 2013 16:48:13 +0800</pubDate><description><![CDATA[http://oj.leetcode.com/problems/climbing-stairs/





WA: 递归方法导致TLE错误

class Solution {
public:
    int climbStairs(int n) {
        // Start typing your C/C++ solution below
        // DO NOT wri]]></description><category></category></item><item><title><![CDATA[LeetCode之Gas Station]]></title><link>https://blog.youkuaiyun.com/superalsrk/article/details/17683181</link><guid>https://blog.youkuaiyun.com/superalsrk/article/details/17683181</guid><author>superalsrk</author><pubDate>Mon, 30 Dec 2013 16:30:29 +0800</pubDate><description><![CDATA[http://oj.leetcode.com/problems/gas-station/





最初的想法是 两次遍历，复杂度O(n2), 导致TLE不能通过测试。


复杂度为O(n)的DP方法如下。

class Solution {
public:
    int canCompleteCircuit(vector &gas, vector &cost) {
      int t]]></description><category></category></item><item><title><![CDATA[LeetCode之Remove Duplicates from Sorted Array II]]></title><link>https://blog.youkuaiyun.com/superalsrk/article/details/17682447</link><guid>https://blog.youkuaiyun.com/superalsrk/article/details/17682447</guid><author>superalsrk</author><pubDate>Mon, 30 Dec 2013 15:54:44 +0800</pubDate><description><![CDATA[http://oj.leetcode.com/problems/remove-duplicates-from-sorted-array-ii/





删除数组的重复元素，最多可以重复两次。
NOTICE： 重复两次时，数组的指针在循环结束后向后移动 两位



class Solution {
public:
    int removeDuplicates(int]]></description><category></category></item><item><title><![CDATA[LeetCode之Remove Duplicates from Sorted Array]]></title><link>https://blog.youkuaiyun.com/superalsrk/article/details/17676887</link><guid>https://blog.youkuaiyun.com/superalsrk/article/details/17676887</guid><author>superalsrk</author><pubDate>Mon, 30 Dec 2013 10:55:42 +0800</pubDate><description><![CDATA[题目要求删除数组中的重复元素，AC的思路依然类似于 快慢双指针



class Solution {
public:
    int removeDuplicates(int A[], int n) {
        int start_pos = 0;
        for(int i = 0; i < n; i++) {
            if(i+1 >= n || A]]></description><category></category></item><item><title><![CDATA[LeetCode之Pascal's Triangle II]]></title><link>https://blog.youkuaiyun.com/superalsrk/article/details/17676287</link><guid>https://blog.youkuaiyun.com/superalsrk/article/details/17676287</guid><author>superalsrk</author><pubDate>Mon, 30 Dec 2013 10:34:26 +0800</pubDate><description><![CDATA[http://oj.leetcode.com/problems/pascals-triangle-ii/


依然是关于杨辉三角的题，核心的公式就是 A i,j = A 
i-1,j + A i-1,j-1


注意，必须从后往前遍历，不能从前往后遍历。 对于一矢量 [1,2,1] 来讲。


从后往前遍历的结果是:  [1,3,3]
从前往后遍历的结果是:  [1,3,4]]]></description><category></category></item><item><title><![CDATA[LeetCode之Swap Nodes in Pairs]]></title><link>https://blog.youkuaiyun.com/superalsrk/article/details/17620103</link><guid>https://blog.youkuaiyun.com/superalsrk/article/details/17620103</guid><author>superalsrk</author><pubDate>Fri, 27 Dec 2013 22:13:44 +0800</pubDate><description><![CDATA[http://oj.leetcode.com/problems/swap-nodes-in-pairs/



交换相邻的节点，思路如下所示：








/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNo]]></description><category></category></item><item><title><![CDATA[ListCode之Remove Nth Node From End of List]]></title><link>https://blog.youkuaiyun.com/superalsrk/article/details/17619549</link><guid>https://blog.youkuaiyun.com/superalsrk/article/details/17619549</guid><author>superalsrk</author><pubDate>Fri, 27 Dec 2013 21:17:28 +0800</pubDate><description><![CDATA[http://oj.leetcode.com/problems/remove-nth-node-from-end-of-list/



采用双指针的思路
1. 定义head1， head2 两个指针， head2先向前n步
2. head1， head2 同时向前，直到head2为NULL
3. head1 即为所要删除的节点
（为了便于处理，使用了一个头指针，具体算法略有不同但]]></description><category></category></item><item><title><![CDATA[LeetCode之Rotate Image]]></title><link>https://blog.youkuaiyun.com/superalsrk/article/details/17594789</link><guid>https://blog.youkuaiyun.com/superalsrk/article/details/17594789</guid><author>superalsrk</author><pubDate>Thu, 26 Dec 2013 22:43:03 +0800</pubDate><description><![CDATA[http://oj.leetcode.com/problems/rotate-image/


in-space算法，先按对焦先对转，然后左右对转
http://oj.leetcode.com/problems/rotate-image/



class Solution {
public:
    void rotate(vector > &matrix) {]]></description><category></category></item><item><title><![CDATA[LeetCode之Pascal's Triangle]]></title><link>https://blog.youkuaiyun.com/superalsrk/article/details/17594133</link><guid>https://blog.youkuaiyun.com/superalsrk/article/details/17594133</guid><author>superalsrk</author><pubDate>Thu, 26 Dec 2013 22:23:06 +0800</pubDate><description><![CDATA[http://oj.leetcode.com/problems/pascals-triangle/


输入行数，输出一个杨辉三角（帕斯卡三角)， 如果rowNum ==0， 则输出 [ ]




class Solution {
public:
    vector > generate(int numRows) {
        vector  > result;]]></description><category></category></item><item><title><![CDATA[LeetCode之Single Number II]]></title><link>https://blog.youkuaiyun.com/superalsrk/article/details/17593363</link><guid>https://blog.youkuaiyun.com/superalsrk/article/details/17593363</guid><author>superalsrk</author><pubDate>Thu, 26 Dec 2013 21:54:19 +0800</pubDate><description><![CDATA[http://oj.leetcode.com/problems/single-number-ii/




Every element appears three times
 except for one，需要注意的特殊情况是 n == 1的情况






class Solution {
public:
    int singleNumber(int A[], int n) {]]></description><category></category></item><item><title><![CDATA[LeetCode之Merge k Sorted Lists]]></title><link>https://blog.youkuaiyun.com/superalsrk/article/details/17591137</link><guid>https://blog.youkuaiyun.com/superalsrk/article/details/17591137</guid><author>superalsrk</author><pubDate>Thu, 26 Dec 2013 20:42:08 +0800</pubDate><description><![CDATA[http://oj.leetcode.com/problems/merge-k-sorted-lists/



合并K个排序数组，由于对引用，指针的的理解不够深入，AC的过程略曲折
思路： 每次遍历，取出最小值的那个节点，进行链接操作后 该节点 指向它的下一个节点，遍历完成之后返回结果。
注意： WA的代码中，我是新建了一个指针变量用来存最小值节点的，指向下一节点更改的也是该指针，而]]></description><category></category></item><item><title><![CDATA[LeetCode之Merge Sorted Array]]></title><link>https://blog.youkuaiyun.com/superalsrk/article/details/17582559</link><guid>https://blog.youkuaiyun.com/superalsrk/article/details/17582559</guid><author>superalsrk</author><pubDate>Thu, 26 Dec 2013 14:29:23 +0800</pubDate><description><![CDATA[http://oj.leetcode.com/problems/merge-sorted-array/





合并两个数组，因为A的空间足够大，把B加到A后快排即可



class Solution {
public:
    void merge(int A[], int m, int B[], int n) {
        for(int i = m; i]]></description><category></category></item><item><title><![CDATA[LeetCode之Sort Colors]]></title><link>https://blog.youkuaiyun.com/superalsrk/article/details/17580357</link><guid>https://blog.youkuaiyun.com/superalsrk/article/details/17580357</guid><author>superalsrk</author><pubDate>Thu, 26 Dec 2013 12:34:01 +0800</pubDate><description><![CDATA[http://oj.leetcode.com/problems/sort-colors/





按颜色排序，不能用内置的sort， 算法复杂度需要为  O(n)


思路： 一次遍历求出r，w，b个数，然后根据 r，w， b修改A数组即可



class Solution {
public:
    void sortColors(int A[], int n)]]></description><category></category></item><item><title><![CDATA[LeetCode之Plus One]]></title><link>https://blog.youkuaiyun.com/superalsrk/article/details/17579921</link><guid>https://blog.youkuaiyun.com/superalsrk/article/details/17579921</guid><author>superalsrk</author><pubDate>Thu, 26 Dec 2013 11:53:39 +0800</pubDate><description><![CDATA[http://oj.leetcode.com/problems/plus-one/



大数加法，但是只加了一个1， 注意进位



class Solution {
public:
    vector plusOne(vector &digits) {
        reverse(digits.begin(), digits.end());
        int carry_d]]></description><category></category></item><item><title><![CDATA[LeetCode之Linked List Cycle II]]></title><link>https://blog.youkuaiyun.com/superalsrk/article/details/17579667</link><guid>https://blog.youkuaiyun.com/superalsrk/article/details/17579667</guid><author>superalsrk</author><pubDate>Thu, 26 Dec 2013 11:42:01 +0800</pubDate><description><![CDATA[还是给定一个链表，查看是不是有环，有环的话返回 环的起始节点。
为了 without using extra space， 遍历某节点后更改val用以表明该节点已遍历过



/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *]]></description><category></category></item></channel></rss>