自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

sdadssa1的专栏

一个编程初学者

  • 博客(124)
  • 收藏
  • 关注

原创 lintcode做题总结, Oct 31 B

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

2015-11-01 03:35:01 365

原创 lintcode做题总结, Oct 31 A

1. Different Ways to Add Parentheses 所有不同加括号的可能性,这种题应该可以直接想到递归public class Solution { private int compute(String s) { //System.out.println(s); for (int i = 1; i < s

2015-11-01 03:16:20 410

原创 lintcode做题总结, Oct 07

1. Scramble String 这道题代码没几行但是用了三维DP还是很复杂的,用[i][j][k]代表从s1.charAt(i)和s2.charAt(j)开始的k的字符的字符串是不是scramble,由于字符变换是基于交换的,所以只要找到那个分界线然后交换判断既可以。public class Solution { public boolean isScramble(Str

2015-10-08 12:17:17 386

原创 lintcode做题总结, Oct 05

1. Word Ladder 这道题的方法是将word放入队列,然后依次提取然后对于每一个字符进行从a到z的变换。如果等于end则返回,如果等于字典set里的word,则放入map和队列,map里存放字符和对应的距离。public class Solution { public int ladderLength(String beginWord, String endWord, Set

2015-10-06 10:55:31 369

原创 lintcode做题总结, Oct 01

1. Max Points on a Line 这道题思路不难,对于每一个点,然后历遍后面的点,计算斜率然后储存到map里。需要有两个特殊情况,一个是垂直,其实也可以存成斜率1.0,另一个是重复,最后要注意存储的时候要注意最后最后计算数目的时候不能忘记点本身,还要注意在计算斜率的时候要先转成double然后再计算。这个题应该还可以存储dup的节点,这样以后遇到了就不用重复计算了。/** *

2015-10-02 00:42:30 391

原创 lintcode做题总结, Sept 30

1. LRU Cache 这个题思路不麻烦,但是挺tricky的,思路是把节点不但存进map里还要连成队列。现在我这里多用了head 和 end两个节点,这样虽然浪费一点空间,但是代码会简练很多。public class LRUCache { private class Node { int key; int val; Node pre

2015-10-01 22:46:17 336

原创 Building real time app with Socket.io and Node.js

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

2015-09-27 12:10:35 274

原创 lintcode做题总结, Sept 18

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

2015-09-19 11:49:11 355

原创 lintcode做题总结, Sept 16

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

2015-09-19 03:58:23 309

原创 lintcode做题总结, Sept 15

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:

2015-09-17 08:54:00 341

原创 GO语言学习笔记3(函数接口并发)

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

2015-09-04 07:09:51 257

原创 GO语言学习笔记2(指针数组MAP)

指针声明var p *int或者i := 2p = &i*p 表示取内容但是对于数组/结构,可以直接通过p[1]/p.X来访问结构的定义有点类似与Ctype Vertex struct {X intY int}初始化可以使用v := Vertex{1, 2}v.X = 4其他几种定义方式var (v1 = Vert

2015-09-04 03:01:51 468

原创 lintcode做题总结, 题目Rotate String 8

这个题目很简单,只是在旋转的时候有一个很巧妙的方法,从转动的位置开始将两个部分反转,然后再将整个字符串反转即可比如需要将12345变成345121. 12345 -> 213452. 21345 -> 215433. 21543 -> 34512public class Solution { /** * @param str: an array of

2015-09-03 04:36:44 323

原创 GO语言学习笔记1(基本概念,条件循环语句)

今天开始学习GO语言,下面是我的学习笔记1.首先是基本的格式,package, main func和print。package mainimport "fmt"func main() { fmt.Println("Hello, 世界")}import ("fmt""math/rand")使用是使用rand.Intn(10)调用。下面是函数的定义f

2015-09-03 00:43:24 367

原创 Node.js + MongoDB学习

昨天下午学习了一下搭建Node.js服务器访问MongoDB。首先介绍一下Node.js其实只是使用chrome的JS引擎运行JS而已,换句话说,他就只是个运行JS的环境,使用node xx.js命令即可本地执行js。如果要搭建服务器则要使用里面的库。node.js使用的单线程异步IO,不过我对这个的优缺点还没有深刻的认识。这里分享几个不错的博客。https://www.mongodb

2015-08-28 10:11:41 310

原创 leedcode做题总结, 题目Maximum Subarray II & Maximum Subarray Difference

这道题是I的拓展,有点像stock的2但是还是挺不一样的,这里是求和不是求差,所以只需要对每个点i通过I的方法分别求出左右的最大子序列然后历遍相加即可,要注意的是left[i]储存的是0-i的最大sum,而right[i]则是i+1 ~ n-1的sum,这一点需要注意。public class Solution { /** * @param nums: A list

2015-08-28 05:02:44 667

原创 leedcode做题总结, 题目Median 80

这道题虽然是easy,但是其实挺麻烦的,使用了快速排序选择第K小数的思路。i 和 j始终在pivot的左右public class Solution { /** * @param nums: A list of integers. * @return: An integer denotes the middle number of the array.

2015-08-26 09:22:15 825

原创 Majority Number I&II

这个题的名字是在lintcode中,在leetcode中的名字是Majority Element,虽然有少许不同,但是主要都是一样的。这个题很简单,但是如果要满足n的时间复杂度和1的空间复杂度则需要摩尔投票法。废话不多说了,直接上代码。I:public class Solution { /** * @param nums: a list of integers

2015-08-16 04:35:16 281

原创 PAXOS学习心得

上一周看到了公司内部过于分布式讲座,提到了如果遇到master失效,其他节点该如何选举master,有提到paxos算法,后来又看到了zookeeper也有提到。所以我就搜了下,这个算法网上都说理解起来有难度,所以我首先查看了这个算法的过程,这里有几个博客讲的比较详细:http://blog.csdn.net/baiduforum/article/details/7007741http

2015-08-15 11:16:23 371

原创 Android NDK 实践(用C编写Android程序)

今天尝试了一下Android的NDK库,简单来说就是在Android 程序里调用C写的代码。步骤并不复杂。先在Java代码中定义Native 的方法,然后编译成class文件,之后通过javah来生成C++的.h文件,然后编写C函数实现native方法。之后再重新编译,或者用NDK-BUILD生成.so文件即可。具体可以参考http://blog.csdn.net/rznice/a

2015-07-27 06:49:13 455

原创 leetcode做题总结,题目Palindrome Partitioning 131

题目是把一个字符串分成多个回文子串,求出所有情况。这个题目也是比较典型的回溯法。public class Solution { public List> partition(String s) { ArrayList> res = new ArrayList>(); ArrayList list = new ArrayList();

2015-01-27 06:08:17 315

原创 leetcode做题总结,题目Restore IP Addresses 93

这道题的也是比较典型的回溯法题目。public class Solution { private boolean isValid(String str){ if(str==null || str.length()>3) return false; int num = Integer.parseInt(str);

2015-01-27 04:47:36 314

原创 leetcode做题总结,题目Clone Graph 133

题目是复制一个图,方法是使用广度优先历遍,然后使用HASHMAP判断重复然后放入队列。像这种clone或者两者比较的题目有个好的方法是使用map使他们之间建立映射。public class Solution { public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) { if(node ==

2015-01-27 04:38:57 326

原创 leetcode做题总结,题目Next Permutation 31

这道题的思路是从后往前历遍,找到第一个非递增的数,然后和后面的数里大于它的最小数交换,然后对后面的数排序即可,如果全部是从前往后递减,则对整个数排序class Solution11 { public void nextPermutation(int[] num) { int i = num.length-1; while(--i>=0){

2015-01-25 11:38:55 323

原创 leedcode做题总结, 题目Longest Palindromic Substring 5

题目是求一个字符串的最长回文子串,可以用两种方法,一种是动态规划,用一个矩阵,boolean[i,j] 表示字符串从i-j是否为一个回文串,我用的方法是直接判断class Solution11 { public String longestPalindrome(String input) { int max=0; String res="";

2015-01-25 06:46:56 364

原创 leedcode做题总结, 题目Permutations I/II46/47

这两道题是生成一串数字的所有可能排列,方法都是回溯法。第二题需要判断重复,这里使用一个Set来储存已经生成的字符串来进行判断重复。public class Solution { private void generate( LinkedList l, LinkedList numl, LinkedList> res){ if(numl.size()==0){

2015-01-08 09:59:51 456

原创 leedcode做题总结, 题目Unique Binary Search TreesI/II95/96

这两道题使用的是递归,一次以每一个节点作为父节点然后对两边进行递归即可,第二题是要返回所有序列,用递归从下向上传回来即可。public class Solution { private int generate(int i, int j){ if(i>=j) return 1; int sum=0; for(in

2015-01-08 09:32:37 320

原创 leedcode做题总结, 题目Construct Binary Tree from Preorder。。。105/106

这两题主要是用找规律的方法,找出两种序列的关系然后递归构造即可。public class Solution { private TreeNode generate(int i, int j, int m, int n, int[] preorder, int[] inorder){ if(i==j) return new TreeNode(pre

2015-01-08 09:20:25 380

原创 leedcode做题总结, 题目Surrounded Regions130

这道题没什么说的DFS由边界开始,去不到的点即为包围的点public class Solution { private void check(int i, int j,char[][] board){ if(i=board.length||j=board[0].length||board[i][j]=='P'||board[i][j]=='X')

2015-01-08 09:12:01 391

原创 leedcode做题总结, 题目Find Minimum in Rotated Sorted Array I/II

这两道题类似于之前的旋转数列search,使用二分法即可

2015-01-08 06:04:49 301

原创 leedcode做题总结,动态规划II(Maximum Subarray,Maximum Product Subarray)

这两道题都作出来了,但是代码冗长,于是我上网搜了一下,发现了非常简洁的做法,特此链接http://blog.csdn.net/linhuanmars/article/details/21314059http://blog.csdn.net/linhuanmars/article/details/39537283主要思路是不使用矩阵,使用local和global变量来记录包含当前

2015-01-08 05:59:21 498

原创 leedcode做题总结,题目Find Minimum in Rotated Sorted ArrayI/II 153/154

这两道题类似于之前的旋转有序array的search,使用二分法即可,同时把middle与left的值进行比较来判断minimum的位置。与普通二分法不同的是由于数列不是有序的,所以不一定left大于right,所以要处理类似[2,1]这样的特例。同时对于有重复的来说[2,1,2,2,2]这样的情况使用二分很难处理,这是后就要移动left来找到与middle不同的数,同时,在left移动中,如果值

2015-01-08 05:48:18 327

原创 leetcode做题总结,动态规划II(Maximum Subarray, Maximum Product Subarray)

这两道题都作出来了,但是代码冗长,于是我上网搜了一下,发现了非常简洁的做法,特此链接http://blog.csdn.net/linhuanmars/article/details/21314059http://blog.csdn.net/linhuanmars/article/details/39537283主要思路是不使用矩阵,使用local和global变量来记录包含当前

2015-01-08 04:15:02 374

原创 leetcode做题总结,题目Multiply Strings 43

题目是Multiply Strings这道题大整数的乘法,和加法一样,需要按位计算然后加起来即可。但是有一个问题要注意的是这里的乘法积很可能非常大,因此需要用数组来储存。在计算的时候数组元素可以大于9,之后再历遍进位即可。public class Solution { public String multiply(String num1, String num2) {

2014-12-28 04:23:01 383

原创 leetcode做题总结,题目Simplify Path 71

题目是Simplify Path这道题思路很简单,就是按照“/”分开然后压栈,遇到特定字符进行处理即可public class Solution { public String simplifyPath(String path) { if(path.length()==0) return null; if(path.l

2014-12-28 03:11:34 610

原创 leetcode做题总结,题目Longest Substring Without Repeating Characters

题目链接Longest Substring Without Repeating Characters这道题使用了窗口的概念,在有关子字符串的题目中可以考虑,即使用前后两个指针控制一个窗口,窗口里包含的便是这个没有重复字符的子字符串。public class Solution { public int lengthOfLongestSubstring(String s) {

2014-12-28 03:02:18 309

原创 leetcode做题总结,题目Anagrams 2012/03/19

这道题是https://oj.leetcode.com/problems/anagrams/题目有点不太清晰,意思是说把有异构的字符串进行归类,然后按照类别依次输出,只有超过两个字符串异构才进行输出。我学到的有把一个String转成char array可以用toCharArray(),但是要注意如果String是“”返回的Array也是空的。还有就是存在容器里的list,array对其进行修改

2014-12-22 06:31:29 336

原创 leetcode做题总结,题目Permutation Sequence 2012/03/27

题目是Permutation Sequence 这道题其实和前面的很多题都是类似,一开始我的想法是要用回溯法把字符串全部生成然后取第K个,其实这样很明显会超时,尤其是在遇到查找第K个的时候一般都是不用全部生成的,直接生成对应的字符串即可。这个题目很好找规律,然后从高位到低位依次生成即可。但是我一开始是用boolean数组判断重复,boonlean数组在判断重复上很有用,但是这道题boolean

2014-12-16 13:17:46 416

原创 leetcode做题总结,回溯法(N-Queens, N-QueensII,Combination SumI&II,wordbreak II, SubsetsI&II)

最近打算对回溯法做一总结,回溯法的思路简单来说就是去试,把问题的可能解变成一棵决策树,然后用递归向下探路,如果走不通就向上回溯,中间可以用条件判断进行剪枝,避免不必要的历遍。首先是回溯法最经典的N皇后问题,思路并不麻烦,从第一行开始依次设一个点为Q,然后向第二行前进,历遍每一个点,如果某个点可行就继续前进。public class Solution { //checking

2014-12-14 02:56:23 729

原创 leetcode做题总结,题目Find Peak Element 2014/12/04

就是普通的历遍,没什么说的public class Solution { public int findPeakElement(int[] num) { if(num.length==0) return 0; int max = num[0]; int dex=0; for(int i=0;i<nu

2014-12-12 10:22:00 334

空空如也

空空如也

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

TA关注的人

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