<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sdadssa1的专栏]]></title><description><![CDATA[一个编程初学者]]></description><link>https://blog.youkuaiyun.com/sdadssa1</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sdadssa1]]></copyright><item><title><![CDATA[lintcode做题总结, Oct 31 B]]></title><link>https://blog.youkuaiyun.com/sdadssa1/article/details/49548453</link><guid>https://blog.youkuaiyun.com/sdadssa1/article/details/49548453</guid><author>sdadssa1</author><pubDate>Sun, 01 Nov 2015 03:35:01 +0800</pubDate><description><![CDATA[1. Largest Number 这一题技巧性很强，对数组排序根据a+b和b+a进行比较。
public class Solution {
    public String largestNumber(int[] nums) {
        String[] strs = new String[nums.length];
        for(int i = 0; i < nums.l]]></description><category></category></item><item><title><![CDATA[lintcode做题总结, Oct 31 A]]></title><link>https://blog.youkuaiyun.com/sdadssa1/article/details/49548433</link><guid>https://blog.youkuaiyun.com/sdadssa1/article/details/49548433</guid><author>sdadssa1</author><pubDate>Sun, 01 Nov 2015 03:16:20 +0800</pubDate><description><![CDATA[1. Different Ways to Add Parentheses 所有不同加括号的可能性，这种题应该可以直接想到递归



public class Solution {
    private int compute(String s) {
            //System.out.println(s);
            for (int i = 1; i < s]]></description><category></category></item><item><title><![CDATA[lintcode做题总结, Oct 07]]></title><link>https://blog.youkuaiyun.com/sdadssa1/article/details/48970697</link><guid>https://blog.youkuaiyun.com/sdadssa1/article/details/48970697</guid><author>sdadssa1</author><pubDate>Thu, 08 Oct 2015 12:17:17 +0800</pubDate><description><![CDATA[1. Scramble String 这道题代码没几行但是用了三维DP还是很复杂的，用[i][j][k]代表从s1.charAt(i)和s2.charAt(j)开始的k的字符的字符串是不是scramble，由于字符变换是基于交换的，所以只要找到那个分界线然后交换判断既可以。


public class Solution {
    public boolean isScramble(Str]]></description><category></category></item><item><title><![CDATA[lintcode做题总结, Oct 05]]></title><link>https://blog.youkuaiyun.com/sdadssa1/article/details/48929845</link><guid>https://blog.youkuaiyun.com/sdadssa1/article/details/48929845</guid><author>sdadssa1</author><pubDate>Tue, 06 Oct 2015 10:55:31 +0800</pubDate><description><![CDATA[1. Word Ladder 这道题的方法是将word放入队列，然后依次提取然后对于每一个字符进行从a到z的变换。如果等于end则返回，如果等于字典set里的word，则放入map和队列，map里存放字符和对应的距离。
public class Solution {
    public int ladderLength(String beginWord, String endWord, Set]]></description><category></category></item><item><title><![CDATA[lintcode做题总结, Oct 01]]></title><link>https://blog.youkuaiyun.com/sdadssa1/article/details/48851857</link><guid>https://blog.youkuaiyun.com/sdadssa1/article/details/48851857</guid><author>sdadssa1</author><pubDate>Fri, 02 Oct 2015 00:42:30 +0800</pubDate><description><![CDATA[1. Max Points on a Line 这道题思路不难，对于每一个点，然后历遍后面的点，计算斜率然后储存到map里。需要有两个特殊情况，一个是垂直，其实也可以存成斜率1.0，另一个是重复，最后要注意存储的时候要注意最后最后计算数目的时候不能忘记点本身，还要注意在计算斜率的时候要先转成double然后再计算。这个题应该还可以存储dup的节点，这样以后遇到了就不用重复计算了。
/**
 * ]]></description><category></category></item><item><title><![CDATA[lintcode做题总结, Sept 30]]></title><link>https://blog.youkuaiyun.com/sdadssa1/article/details/48844641</link><guid>https://blog.youkuaiyun.com/sdadssa1/article/details/48844641</guid><author>sdadssa1</author><pubDate>Thu, 01 Oct 2015 22:46:17 +0800</pubDate><description><![CDATA[1. LRU Cache 这个题思路不麻烦，但是挺tricky的，思路是把节点不但存进map里还要连成队列。现在我这里多用了head 和 end两个节点，这样虽然浪费一点空间，但是代码会简练很多。
public class LRUCache {
    private class Node {
        int key;
        int val;
        Node pre ]]></description><category></category></item><item><title><![CDATA[Building real time app with Socket.io and Node.js]]></title><link>https://blog.youkuaiyun.com/sdadssa1/article/details/48765749</link><guid>https://blog.youkuaiyun.com/sdadssa1/article/details/48765749</guid><author>sdadssa1</author><pubDate>Sun, 27 Sep 2015 12:10:35 +0800</pubDate><description><![CDATA[Socket.io is a framework which implement WebSocket in HTML5. 我们可以通过其和Node.js实现实时通信。


var http = require('http').Server(app);
var io = require('socket.io')(http);
io.on('connection', function(socke]]></description><category></category></item><item><title><![CDATA[lintcode做题总结, Sept 18]]></title><link>https://blog.youkuaiyun.com/sdadssa1/article/details/48572601</link><guid>https://blog.youkuaiyun.com/sdadssa1/article/details/48572601</guid><author>sdadssa1</author><pubDate>Sat, 19 Sep 2015 11:49:11 +0800</pubDate><description><![CDATA[1. Number of 1 Bits My Submissions Question Solution 
这道题本来很简单的，但是在测试中参数int的值会越界，我也不知道是怎么穿进去的
public class Solution {
    // you need to treat n as an unsigned value
    public int hammingWeight(int]]></description><category></category></item><item><title><![CDATA[lintcode做题总结, Sept 16]]></title><link>https://blog.youkuaiyun.com/sdadssa1/article/details/48568637</link><guid>https://blog.youkuaiyun.com/sdadssa1/article/details/48568637</guid><author>sdadssa1</author><pubDate>Sat, 19 Sep 2015 03:58:23 +0800</pubDate><description><![CDATA[1. Factorial Trailing Zeroes 算是个小的智力题
public class Solution {
    public int trailingZeroes(int n) {
        if (n < 0)
    		return -1;
     
    	int count = 0;
    	for (long i = 5; n / i >= 1; i ]]></description><category></category></item><item><title><![CDATA[lintcode做题总结, Sept 15]]></title><link>https://blog.youkuaiyun.com/sdadssa1/article/details/48478273</link><guid>https://blog.youkuaiyun.com/sdadssa1/article/details/48478273</guid><author>sdadssa1</author><pubDate>Thu, 17 Sep 2015 08:54:00 +0800</pubDate><description><![CDATA[1. Maximal Square
这道题通过记录边长的方式。对于m[i][j]，如果是0，则把res矩阵这个元素设为0，如果是1则记录m[i-1][j], m[i][j-1], m[i-1][j-1]的最小值+1.
public class Solution {
    /**
     * @param matrix: a matrix of 0 and 1
     * @return:]]></description><category></category></item><item><title><![CDATA[GO语言学习笔记3(函数接口并发)]]></title><link>https://blog.youkuaiyun.com/sdadssa1/article/details/48205521</link><guid>https://blog.youkuaiyun.com/sdadssa1/article/details/48205521</guid><author>sdadssa1</author><pubDate>Fri, 04 Sep 2015 07:09:51 +0800</pubDate><description><![CDATA[GO里面没有类的定义，可以使用type 定义后再添加方法。
type Vertex struct {
X, Y float64
}

func (v *Vertex) Abs() float64 {
return math.Sqrt(v.X*v.X + v.Y*v.Y)
}

func main() {
v := &Vertex{3, 4}
fmt.Println(v.Abs]]></description><category></category></item><item><title><![CDATA[GO语言学习笔记2(指针数组MAP)]]></title><link>https://blog.youkuaiyun.com/sdadssa1/article/details/48192569</link><guid>https://blog.youkuaiyun.com/sdadssa1/article/details/48192569</guid><author>sdadssa1</author><pubDate>Fri, 04 Sep 2015 03:01:51 +0800</pubDate><description><![CDATA[指针声明
var p *int
或者
i := 2
p = &i
*p 表示取内容
但是对于数组/结构，可以直接通过p[1]/p.X来访问


结构的定义有点类似与C
type Vertex struct {
X int
Y int
}

初始化可以使用
v := Vertex{1, 2}
v.X = 4

其他几种定义方式
var (
v1 = Vert]]></description><category></category></item><item><title><![CDATA[lintcode做题总结, 题目Rotate String 8]]></title><link>https://blog.youkuaiyun.com/sdadssa1/article/details/48191207</link><guid>https://blog.youkuaiyun.com/sdadssa1/article/details/48191207</guid><author>sdadssa1</author><pubDate>Thu, 03 Sep 2015 04:36:44 +0800</pubDate><description><![CDATA[这个题目很简单，只是在旋转的时候有一个很巧妙的方法，从转动的位置开始将两个部分反转，然后再将整个字符串反转即可
比如需要将12345变成34512
1. 12345 -> 21345
2. 21345 -> 21543
3. 21543 -> 34512


public class Solution {
    /**
     * @param str: an array of ]]></description><category></category></item><item><title><![CDATA[GO语言学习笔记1(基本概念，条件循环语句)]]></title><link>https://blog.youkuaiyun.com/sdadssa1/article/details/48174997</link><guid>https://blog.youkuaiyun.com/sdadssa1/article/details/48174997</guid><author>sdadssa1</author><pubDate>Thu, 03 Sep 2015 00:43:24 +0800</pubDate><description><![CDATA[今天开始学习GO语言，下面是我的学习笔记
1.首先是基本的格式，package, main func和print。
package main

import "fmt"

func main() {
	fmt.Println("Hello, 世界")
}
import (
"fmt"
"math/rand"
)

使用是使用rand.Intn(10)调用。
下面是函数的定义
f]]></description><category></category></item><item><title><![CDATA[Node.js + MongoDB学习]]></title><link>https://blog.youkuaiyun.com/sdadssa1/article/details/48047003</link><guid>https://blog.youkuaiyun.com/sdadssa1/article/details/48047003</guid><author>sdadssa1</author><pubDate>Fri, 28 Aug 2015 10:11:41 +0800</pubDate><description><![CDATA[昨天下午学习了一下搭建Node.js服务器访问MongoDB。
首先介绍一下Node.js其实只是使用chrome的JS引擎运行JS而已，换句话说，他就只是个运行JS的环境，使用node xx.js命令即可本地执行js。如果要搭建服务器则要使用里面的库。node.js使用的单线程异步IO，不过我对这个的优缺点还没有深刻的认识。
这里分享几个不错的博客。
https://www.mongodb]]></description><category></category></item><item><title><![CDATA[leedcode做题总结, 题目Maximum Subarray II & Maximum Subarray Difference]]></title><link>https://blog.youkuaiyun.com/sdadssa1/article/details/48045163</link><guid>https://blog.youkuaiyun.com/sdadssa1/article/details/48045163</guid><author>sdadssa1</author><pubDate>Fri, 28 Aug 2015 05:02:44 +0800</pubDate><description><![CDATA[这道题是I的拓展，有点像stock的2但是还是挺不一样的，这里是求和不是求差，所以只需要对每个点i通过I的方法分别求出左右的最大子序列然后历遍相加即可，要注意的是left[i]储存的是0-i的最大sum，而right[i]则是i+1 ~ n-1的sum，这一点需要注意。


public class Solution {
    /**
     * @param nums: A list]]></description><category></category></item><item><title><![CDATA[leedcode做题总结, 题目Median 80]]></title><link>https://blog.youkuaiyun.com/sdadssa1/article/details/47998181</link><guid>https://blog.youkuaiyun.com/sdadssa1/article/details/47998181</guid><author>sdadssa1</author><pubDate>Wed, 26 Aug 2015 09:22:15 +0800</pubDate><description><![CDATA[这道题虽然是easy，但是其实挺麻烦的，使用了快速排序选择第K小数的思路。i 和 j始终在pivot的左右


public class Solution {
    /**
     * @param nums: A list of integers.
     * @return: An integer denotes the middle number of the array.
  ]]></description><category></category></item><item><title><![CDATA[Majority Number I&II]]></title><link>https://blog.youkuaiyun.com/sdadssa1/article/details/47696881</link><guid>https://blog.youkuaiyun.com/sdadssa1/article/details/47696881</guid><author>sdadssa1</author><pubDate>Sun, 16 Aug 2015 04:35:16 +0800</pubDate><description><![CDATA[这个题的名字是在lintcode中，在leetcode中的名字是Majority Element，虽然有少许不同，但是主要都是一样的。
这个题很简单，但是如果要满足n的时间复杂度和1的空间复杂度则需要摩尔投票法。废话不多说了，直接上代码。
I：
public class Solution {
    /**
     * @param nums: a list of integers
   ]]></description><category></category></item><item><title><![CDATA[PAXOS学习心得]]></title><link>https://blog.youkuaiyun.com/sdadssa1/article/details/47680077</link><guid>https://blog.youkuaiyun.com/sdadssa1/article/details/47680077</guid><author>sdadssa1</author><pubDate>Sat, 15 Aug 2015 11:16:23 +0800</pubDate><description><![CDATA[上一周看到了公司内部过于分布式讲座，提到了如果遇到master失效，其他节点该如何选举master，有提到paxos算法，后来又看到了zookeeper也有提到。所以我就搜了下，这个算法网上都说理解起来有难度，所以我首先查看了这个算法的过程，这里有几个博客讲的比较详细：
http://blog.youkuaiyun.com/baiduforum/article/details/7007741

http]]></description><category></category></item><item><title><![CDATA[Android NDK 实践(用C编写Android程序)]]></title><link>https://blog.youkuaiyun.com/sdadssa1/article/details/47078995</link><guid>https://blog.youkuaiyun.com/sdadssa1/article/details/47078995</guid><author>sdadssa1</author><pubDate>Mon, 27 Jul 2015 06:49:13 +0800</pubDate><description><![CDATA[今天尝试了一下Android的NDK库，简单来说就是在Android 程序里调用C写的代码。步骤并不复杂。
先在Java代码中定义Native 的方法，然后编译成class文件，之后通过javah来生成C++的.h文件，然后编写C函数实现native方法。之后再重新编译，或者用NDK-BUILD生成.so文件即可。


具体可以参考http://blog.youkuaiyun.com/rznice/a]]></description><category></category></item></channel></rss>