自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (1)
  • 收藏
  • 关注

原创 网易面试总结

杭州站第二站:网易今天是阿里宝宝专场,见到了好多熟悉的面孔,不少学院的同学。经过了此次波折,大家有过低落,有过迷茫,面试现场看到的更多是低落之后对于职业,对于平台的思考以及挫折之后不懈的努力。一面:1.java基础,所有集合的实现以及思想2.多线程我再次拿出我写rpc和mom的经历,面试官却告诉我之前已经有4个同学讲过rpc了,看来阿里的同学们都参加了中间件大赛。。其中应该还有

2015-09-19 21:35:22 584

原创 搜狐面试总结

一周前,被告知成为阿里宝宝,心情跌落谷底。一周后,怀揣着刚打的两份简历,收拾好心情,开始了杭州站的面试之旅。第一站:搜狐媒体客户端算法工程师1.介绍我在intel做的Trumpet项目,并由此展开让我在纸上写spark的处理流程。熟悉spark的逻辑流程,物理流程还是有用的。。2.java基础,泛型在集合中的作用是什么,如果集合中要放入泛型的父类和子类应该怎么表示3.java网络,

2015-09-19 21:04:05 841

原创 leetcode--LinkedListCycleII

思路:1.从head开始利快慢指针分别向后遍历,快指针每次比慢指针多走一步,直到快指针和慢指针相遇。2.创建一个新的慢指slow2针指向head,和之前的慢指针同时向后遍历,直到两个慢指针相遇,返回当前相遇的节点。证明:设head到达环入口start需要m步,遍历一遍环需要n步。当慢指针slow到达环入口走了m步,快指针fast比slow多走m步,赶上slow需要n-m%n步。当f

2015-08-27 16:30:55 274

原创 leetcode--PalindromeLinkedList

思路:为了达到O(N)的时间复杂度和O(1)的空间复杂度,分成三步完成。1.利用快慢指针找到中间节点2.从中间节点到尾部反转链表3.从头和尾向中间遍历,判断是否相等public boolean isPalindrome(ListNode head) { if(head==null)return true; ListNode mid = findM

2015-08-27 10:31:45 250

原创 leetcode--LongestValidParentheses

思路:遍历s,遇到‘(’入栈,遇到‘)’且栈顶为‘(’将栈顶出栈并计算长度。length=i-stack.peek()这样可以将所有规范的长度计算出来。而遇到‘)’且栈顶不是‘(’说明0-i已经不能再形成规范的字符串,将i入栈,与之后的计算隔离。public int longestValidParentheses(String s) { Stackstack=new Sta

2015-08-18 13:36:31 248

原创 阿里巴巴面试总结

从学长内推到前两天收到短信,看到最后一句话:青春正好,一路阳光。顿时感到之前的努力没有白费,更多的挑战,更大的梦想在等着我去实现。作为一个普通的应届生,少不了前期漫长的准备。leetcode真的是个好网站,从五月中旬开始在leetcode上面刷题,通过练习对于动态规划,bfs,dfs,贪心算法有了更深的认识。通过mysql的习题,复习了基本的查询语句。而对于java源码的学习使我能够从实现的角

2015-08-17 18:19:11 393

原创 leetcode--LargestRectangleinHistogram

思路:首先考虑这样一种情况,之前所有的柱都是递增的,最后一个柱子小于之前所有的柱子。此时求每个柱子对应的最大面积只需要计算与左边相邻柱子的距离以及与最后柱子的距离乘以当前柱子高度,时间复杂度为O(n)。如何把一般的情况转化成这种特殊的情况呢?可以遍历柱子,用栈存放递增的柱子下标,一旦遇到小于栈顶的柱子把栈内大于当前柱高的下标全部出栈并计算面积。然后将当前下标入栈。

2015-08-17 16:09:50 314

原创 leetcode--WildcardMatching

思路一:利用递归,当遇到*,进行深搜的递归。/*boolean isMatch=false; public boolean isMatch(String s, String p) { dfs(s,p); return isMatch; } public void dfs(String s,String p){ if(s

2015-08-08 17:17:06 234

原创 leetcode--Palindrome Partitioning

思路:首先想到用深度优先,每次递归传入之前的路径链表,以及剩下的字符串。对剩下的字符串再次划分成两部分part1、part2,先判断part1是否回文然后将part1放入路径链表,和part2一起传入再次递归。/*List> lists = new ArrayList>(); public List> partition(String s) { if (s ==

2015-08-06 16:07:59 221

原创 intel实习第二个月总结

度过了浮躁的第一个月,第二个月开始接手Trumpet的测试任务,要求在月底之前完成Trumpet中Bicluster,SVD,LinearRegression的性能优化并发布第一个release。第一周follow up,在学弟离职前学习如何修改scala代码,编译并在集群上运行。在集群上部署spark的分析系统dew并生成分析图表,用于分析spark运行阶段的各个stage的情况,内存使

2015-08-02 15:43:40 1028 1

原创 leetcode--LRU Cache

思路:LRU Cache:当缓存填满的时候,删除最久没使用过的数据。通过双向链表记录数据的使用情况,当get或者put一个时,将链表中该node移到链表头部。这样链表尾部就是最久没使用过的node。通过hash map保存key,value使查询时间为O(1),当缓存慢的时候找到链表尾部的node并取出key值,删除map中对应的键值对。Tips:map使用的泛型可以通过key直接

2015-07-21 16:23:06 376

原创 IO--ReaderAndWriter

Reader and Writer:Reader按照自定义的编码从输入流中进行读取Writer按照自定义的编码写入输出流InputStreamReader:在初始化的时候传入自定义的编码以及输入流,并生成解码器进行读操作。public InputStreamReader(InputStream in, String charsetName) throws Uns

2015-07-10 11:11:33 273

原创 IO--PipedInputSteamAndPipedOutputStream

PipedInputStream和PipedOutputStream在两个线程之间建立通信的管道比如线程A持有PipedOutputStream os,线程B持有PipedInputStream is,可以用os绑定is也可以用is绑定os。然后os写入数据,is读取数据。import java.io.IOException;import java.io.PipedInputStream

2015-07-09 20:32:25 355

原创 Map--HashMap实现分析

HashMap:利用数组和链表的数据结构存储链表:static class Node implements Map.Entry数组:transient Node[] table;储存过程:1对key进行哈希2根据哈希值找到数组中对应位置3如果该位置没有链表则作为头部放入,如果该位置存在链表则遍历链表,如果没找到则在尾部加入final V putVal(int has

2015-07-08 23:34:30 276

原创 Set--TreeSet实现分析

TreeSet对于实现了Comparable接口的对象或者comparator中的对象可以自动排序。最基本的构造函数:所有面向外部的构造函数都会调用这个构造函数,初始化NavigableMapTreeSet(NavigableMap m) { this.m = m; }利用对象Comparable接口进行排序的构造函数:利用TreeMap中的keys保存对象

2015-07-08 14:20:50 375

原创 线程同步--生产者消费者

当同时有很多生产者和消费者往仓库里面增加产品减少产品,会产生以下两个问题:1当生产者和消费者同时改变仓库对象的属性,最后打印出的结果不能反映仓库的情况2当生产者过多或者消费者过多会使仓库满或者空,如果不把线程从运行态变成就阻塞态的话,会出现异常解决方式:问题1:在改变对象的方法加入同步锁,该方法运行时将对象或者对象的属性锁定,当方法运行完才可以访问该对象或者对象的属性问题2:在

2015-07-07 20:53:30 300

原创 配置spark+hadoop(hdfs)集群

这两天接到的任务是在全新的服务器上搭建spark+hdfs集群,用于测试刚刚release的工程。master:sr288(10.1.0.188)slaves:sr494(10.1.2.94)sr495(10.1.2.95)sr496(10.1.2.96)sr497(10.1.2.97)由于hdfs需要ssh进行通信,而且文件传输scp也需要ssh。我第一步是建立起所有

2015-07-02 15:41:43 647

原创 leetcode--JumpGame

思路:贪心算法,利用局部最优解达到全局最优解。在每个节点拓展能达到的最远距离,如果当前节点能达到的最远距离等于当前节点那么就无法继续前进,返回false。如果当前节点能达到的最远距离大于等于末尾节点那么返回true。/** * Created by marsares on 15/7/1. */public class JumpGame { public boolean can

2015-07-01 13:10:06 211

原创 leetcode--JumpGame

思路:贪心算法,利用局部最优解达到全局最优解。在每个节点拓展当前能到达的最远距离,如果当前能到达的最远距离为节点本身说明已经没办法前进了返回false。当前能到达的最远距离大于等于末尾节点则可以到达返回true。/** * Created by marsares on 15/7/1. */public class JumpGame { public boolean canJump

2015-07-01 12:08:39 271

原创 leetcode--WordLadderII

思路一:先用bfs遍历最短路径并记录每个节点的前序节点,后用dfs从end开始回溯到start生成所有的路径。HashMap hm=new HashMap(); int[]len; List[]list; List>lists=new ArrayList>(); LinkedListpath=new LinkedList(); String star

2015-06-29 23:31:53 217

原创 leetcode--ImplementstrStr

思路:利用kmp算法/** * Created by marsares on 15/6/29. */public class ImplementstrStr { public int strStr(String haystack, String needle) { int[]next=getNext(needle); int i=0;

2015-06-29 23:29:26 246

原创 leetcode--SurroundedRegions

思路:利用bfs先把所有和最外层O连通的O标记,然后遍历所有点,没被标记的O就是被X包围的内层点import java.util.LinkedList;import java.util.Queue;/** * Created by marsares on 15/6/28. */public class SurroundedRegions { boolean[][]marke

2015-06-28 10:50:12 249

原创 leetcode--CourseScheduleII

思路:先判断有没有环,再进行拓扑排序。import java.util.ArrayList;import java.util.List;import java.util.Stack;/** * Created by marsares on 15/6/24. */public class CourseScheduleII { List[]adj; boolean

2015-06-27 21:18:08 353

原创 leetcode--ConvertSortedListtoBinarySearchTree

思路:如果用数组可以直接取到中间值,因此可以用前序遍历的顺序来构建BST。但是链表如果要取中间值需要n/2的时间,因此采用中序遍历的顺序来构建BST。 这样root生成的顺序就和中序遍历的顺序一样,也就是list从前往后的顺序。import java.util.List;/** * Created by marsares on 15/6/23. */public class Conv

2015-06-23 10:14:01 237

原创 leetcode--NumberofIslands

思路:从第一行往下对每个'1'分别对右和下相邻为'1'的元素做union操作,最后每个'1'都和上下左右四个相邻的元素做了union,union and find count数即为island数。union and find:有几种实现,时间复杂度取决于find()以及union()函数,find()返回该节点属于哪个集合,union把两个节点对应的两个集合进行归并。这里采用最优的

2015-06-21 21:13:23 197

原创 leetcode--RecoverBinarySearchTree

思路:BST中序遍历生成从小到大的排序数组,如果交换两个节点,相当于交换了数组中的两个数字。我们只要找出中序遍历中不符合排序顺序的两个数字即可。可以利用指针pre记录前一个节点,当后节点小于前节点时有问题。注意当交换的是相邻的两个数字时只能找到一个节点是大于前节点的。/** * Created by marsares on 15/6/19. */public class RecoverB

2015-06-19 18:23:10 238

原创 leetcode--UniqueBinarySearchTreesII

思路:利用递归的思想,要返回(1,n)之间的所有BST可以遍历1->n,root作为根节点,然后将(1->root-1)返回的所有节点作为左子节点以及(root+1,n)返回的所有节点作为右子节点拼接在root下,所有这些root放入数组返回。import java.util.ArrayList;import java.util.LinkedList;import java.util.Li

2015-06-18 18:49:48 251

原创 leetcode--ValidateBinarySearchTree

思路:在递归参数中加入左区间和右区间,当递归左子节点时更新右区间,当递归右子节点时更新左区间。可以简单地证明一下,如果左子节点要符合BST要求,首先得符合当前节点的区间范围,然后要小于当前节点。因此更新右区间。/** * Created by marsares on 15/6/17. */public class ValidateBinarySearchTree { bool

2015-06-17 20:26:54 283

原创 leetcode--FlattenBinaryTreetoLinkedList

思路:顺序为前序遍历的顺序需要注意的地方是需要对初始的root做修改而不是返回新的root。public void flatten(TreeNode root)这里传入的root只是指向root的指针,如果root=new TreeNode(val),root就不再指向root了。因此修改初始的root的话,需要修改root的值以及root的子节点,而不是将root指向一个新的节点。

2015-06-16 20:03:32 203

原创 leetcode--CountCompleteTreeNodes

complete binary tree:最后一层以上的节点全部排满,最后一层叶子节点都在左边。(可能满也可能不满)如果用前序中序或者后序递归的话,内存过大,时间也不够。因此根据complete binary tree的性质,分别求最左子节点和最右子节点的深度,如果相等就根据公式返回,不等再向下递归。这样可以减少递归的次数。/** * Created by marsares on 15/

2015-06-16 19:50:04 265

原创 leetcode--ConstructBinaryTreefromInorderandPostorderTraversal

思路:后序遍历子节点一定在根节点的左边,通过从右往左的遍历可以从根节点到子节点生成二叉树。中序遍历左子节点在根节点的左边,右子节点在根节点的右边。在生成二叉树的时候可以通过中序遍历判断当前节点在二叉树中的位置。import java.util.HashMap;/** * Created by marsares on 15/6/15. */public class ConstructB

2015-06-15 20:19:55 181

原创 leetcode--ConvertSortedArraytoBinarySearchTree

思路:取中位数作为当前的根节点,中位数左边的数组递归的计算左子节点,中位数右边的数组递归计算右子节点。/** * Created by marsares on 15/6/15. */public class ConvertSortedArraytoBinarySearchTree { public TreeNode sortedArrayToBST(int[] nums) {

2015-06-15 20:17:13 225

原创 leetcode--ConstructBinaryTreefromInorderandPostorderTraversal

思路:后序遍历前面的节点一定是后面的节点的子节点,因此从后往前遍历可以从根节点向下构造出二叉树。中序遍历左子节点一定在根节点的左边,而右子节点一定在根节点的右边。因此可以通过中序遍历来判断当前节点在树中的位置。import java.util.HashMap;/** * Created by marsares on 15/6/15. */public class ConstructB

2015-06-15 20:08:48 286

原创 leetcode--BinaryTreePostorderTraversal

思路:如果按照后序遍历将节点放入list,什么时候当前节点可以放入list?当左右子节点都为空或者左右子节点都已经放入list的时候,左右子节点都已经放入list又可以分情况讨论进行简化1右节点为空,左节点放入list2左节点为空,右节点放入list3左右节点都放入list情况三,因为是后序遍历,当右节点放入list时左节点已经放入了list,所以简化成右节点放入list最后判

2015-06-14 17:16:03 267

原创 leetcode--BinaryTreePreorderTraversal

思路:同InorderTraversal,利用两层while循环,外层代表总的递归,里层while代表不断寻找左子节点的过程,因为是前序遍历,将add操作放在内层while就好了。import java.util.LinkedList;import java.util.List;import java.util.Stack;/** * Created by marsares on 1

2015-06-14 12:29:26 186

原创 leetcode--BinaryTreeMaximumPathSum

思路:在能够遍历所有节点的递归中嵌套对于该节点延伸出的最长路径的计算,然后利用类变量记录下最长路径。由于要计算每个根节点延伸出的最长路径,可以先计算该根节点的左、右节点为起点的最长路径,然后取最长的组合。递归就可以写成计算根节点为起点最长路径的函数,然后递归成左节点为起点,右节点为起点,正好可以遍历所有节点。/** * Created by marsares on 15/6/14. */

2015-06-14 11:20:47 264

原创 leetcode--BinaryTreeLevelOrderTraversal II (二叉树层遍历递归实现)

思路:先层遍历在逆序层遍历递归实现:利用List每次递归根据层号加入List中对应的List,递归的顺序左节点在右节点之前就可以保证每一层左边的节点比右边的节点先加入List。import java.util.LinkedList;import java.util.List;/** * Created by marsares on 15/6/13. */public class

2015-06-13 18:16:07 284

原创 leetcode--BinaryTreeInorderTraversal

二叉树中序遍历非递归实现:利用两层循环以及stack,第一层循环代替总的递归过程,第二个循环代替先序遍历时逐层向下访问左节点。第一层循环用stack为空作为控制条件,第二层循环当前节点没有左节点就结束了。public List inorderTraversal(TreeNode root) { if (root == null) return new ArrayList()

2015-06-13 15:17:05 197

原创 leetcode--树的序列化与反序列化

序列化:利用队列,先将根节点放在队列中,然后从队列中poll节点出来在把左子节点和右子节点放入队列中。循环至队列为空。反序列化:也是使用队列public TreeNode Unserialize(String s){ if(s==null)return null; if(s.length()==0)return null; Queuequeu

2015-06-13 15:10:56 652

原创 leetcode--BalancedBinaryTree

平衡二叉树:左右子树深度差的绝对值不大于一,且左右子树为平衡二叉树。/** * Created by marsares on 15/6/12. */public class BalancedBinaryTree { boolean isBalanced=true; public boolean isBalanced(TreeNode root) { i

2015-06-12 09:36:50 232

apache-maven-3.2.3-bin.tar.gz

网络编程中maven可以在导入项目时从仓库中直接下载相关包,使用户不用手动下载。apache-maven-3.2.3-bin.tar.gz可支持用户创建maven项目以及更新maven。

2014-09-29

空空如也

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

TA关注的人

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