狂奔的蜗牛

不积跬步无以至千里

leetcode_99_Recover Binary Search Tree

思路: 首先中序遍历二叉查找树并将遍历的节点存储到一个list中,然后对list中的值进行比较,查找出位置出现变化的两个结点,将两个结点的值进行互换,完成本题的要求。 但是呢,对于如何发现位置出现变化的两个结点是本题的重点和难点,具体判断条件可以参见下面的程序,最后对查到的结点进行取舍也是一大问...

2015-03-29 11:06:17

阅读数:755

评论数:0

leetcode_117_Populating Next Right Pointers in Each Node II

思路: 就是用两个list存储相邻两层的结点,把第i+1层结点存储到list中的同时,分别将第i层的各个节点指向下一个,跟Populating Next Right Pointers in Each Node I一个思路。

2015-03-29 10:53:43

阅读数:731

评论数:0

使用Java中Comparator接口实现自定义排序

一般情况下,自己动手写一个简单排序程序还是没有问题的,但是你能保证写出来的排序程序的时间复杂度吗?你能保证程序的正确性吗,鲁棒性呢,还有程序结构的清晰性,可维护性.......综上所述,学习一下排序接口来实现对复杂对象的排序还是很有必要的。Java中有两个用来实现排序的接口Comparator和C...

2015-03-29 10:41:07

阅读数:898

评论数:0

java中split方法的用法

想搞清楚这个问题的原因就是我无法把一个文本里的单词全部给找出来,因为接触C++的时候记得好像regex可以有好多个字符组成,这样就可以通过,。!和空格等标点来分割文本了,但是split的方法所接受的参数只有String类型的regex和int类型的limit,limit用来表示最多可以将字符串分成...

2015-03-29 10:09:39

阅读数:787

评论数:0

leetcode_98_Validate Binary Search Tree

思路: 由于二叉排序树和对二叉树的中序遍历所形成的值是有序的是充分必要条件,所以仅需对二叉树进行中序遍历即可,并将遍历的结点的值存储到一个list中,然后依次比较list中的值,是有序的则二叉树为二叉排序树,否则则不是。 当然,一个更好的方法是用一个temp暂存上一个结点的值,然后依次进行比较即...

2015-03-26 20:48:01

阅读数:620

评论数:0

leetcode_129_Sum Root to Leaf Numbers

思路: 和pathsum系列是一个思路,后序遍历至某个节点,将root-to-leaf的所有结点的值表示成一个数和sum相加,直至遍历完所有的leaf结点,返回sum。

2015-03-26 20:37:07

阅读数:710

评论数:0

leetcode_108_Convert Sorted Array to Binary Search Tree

思路: 思路就是按二分查找的思路进行中序建树,递归建树。

2015-03-26 20:30:33

阅读数:579

评论数:0

leetcode_113_Path Sum II

思路: 大致思路就是将pathsum 1中的存储节点的栈stack换成具有栈功能的LinkedList,这样每匹配依次将各个节点的值存储到一个list中,遍历完整棵树后返回一个满足条件的结点列表的列表。

2015-03-26 20:24:43

阅读数:586

评论数:0

leetcode_112_Path Sum

思路: 由于是root-to-leaf,马上就想到了后序遍历,直接遍历到叶子节点,把从根节点到叶子节点的值统计一下看其和是否等于sum,相等的话则返回true,不等的话继续遍历直到下一个叶子节点。。。循环直至遍历结束。 只是感觉,这么简单的一个题目,用后序遍历来解,杀鸡用牛刀?这感觉还挺不错!大...

2015-03-26 20:16:51

阅读数:585

评论数:0

leetcode_145_Binary Tree Postorder Traversal

思路: 刚开始的时候由于刚做出前序和中序的遍历,落入这两种遍历的窠臼,总以为在中序遍历的基础上改改就可以了,但是,改了好久,费了了好大的劲,走了好多弯路,in vain!最后联想到后序遍历不就是在中序遍历的基础上,经由子树根节点访问右子树,然后再访问根节点,不是么?所以,想到再多用一个栈来标记是...

2015-03-25 08:39:58

阅读数:606

评论数:0

leetcode_114_Flatten Binary Tree to Linked List

思路: 按照中序遍历的方式将结点存储到一个list列表中,然后分别将各个节点的left赋值为空,将right指向下一个节点,最后将最后一个结点的right赋值为空即可生成题目要求的树结构。结果对了是对了,好像不太符合题目要求,题目要求 do it in-place,不知道我的算不算in plac...

2015-03-24 14:59:19

阅读数:638

评论数:0

leetcode_111_Minimum Depth of Binary Tree

思路: 和求最大深度思路是类似的,只是题目要求的最小深度是到最近的叶子节点的最小深度,所以当一个节点的深度为0时,很显然是没有叶子节点的,应该取另外一个num并加1

2015-03-24 14:42:09

阅读数:619

评论数:0

leetcode_104_Maximum Depth of Binary Tree

思路: 用递归,很简单,树为空时返回0,左子树为空且右子树为空时返回1,否则就返回左子树或右子树的最大深度再加1

2015-03-24 14:36:45

阅读数:642

评论数:0

leetcode_101_Symmetric Tree

思路: 判断一棵树是否是左右对称的,用这样几种可能,左右子树都为空时对称,左右子树有一个不为空时不对称,子树结点值相等&&左子树的左孩子的结点值等于右子树的右孩子的结点值&&左子树右孩子的结点值等于右子树左孩子的结点值,OK!

2015-03-24 14:27:32

阅读数:725

评论数:0

leetcode_100_Same Tree

思路: 由于这题标识为easy,判断两棵树是否相等,想到了用递归。有这几种可能,两棵树相等的充要条件为root的值相等&&左子树相等&&右子树相等,两棵树都为空时也相等,其中一棵为空时就不相等

2015-03-24 14:18:40

阅读数:607

评论数:0

leetcode_23_Merge k Sorted Lists

思路: 本来想模仿合并两个链表的方法,查找所有的lists链表一遍找出一个最小值,并将最小值链接到结果链表中,并将最小结点删除,将最小结点的next结点替代之,直至为null,将链表删去。 但是当lists.size()比较大时,时间复杂度就上来了,而且每次只能选一个最小结点,O(N*N)的节奏...

2015-03-23 20:59:32

阅读数:854

评论数:0

去哪儿网校园招聘笔试题(成都)--之一

描述: 已知字母序列【d, g, e, c, f, b, o, a】,请实现一个函数针对输入的一组字符串 input[] = {"bed", "dog", "dear", "eye"},按照字母顺序排序并打印。 本例的...

2015-03-22 22:02:36

阅读数:1262

评论数:0

腾讯2015实习生招聘模拟考--其中一题

腾讯2015实习生招聘模拟考--其中一题 描述: DNA中有A、C、G、T等基因单元吧,ACGT算是在单词表中的正常顺序,而CA,GA,GC,TA,TC,TG算是逆序对,给你一个基因序列,即包含A、C、G、T的字符串数组,请在线性时间复杂度内求出逆序对的个数。 思路: 先用四个变量第i个字符前的...

2015-03-22 21:36:46

阅读数:1821

评论数:0

去哪儿网2015春季校招笔试--回忆版

去哪儿网2015春季校招笔试--回忆版 第一次做笔试题,好激动。今年研发类的有三道题目,干净利落,比较喜欢去哪儿的题目类型,晚上回去做腾讯的在线笔试就比较坑了,各种多选与程序天空,各种C++语法。。。无力吐槽,C++学的太菜了。奋斗了一个半小时做出了两题,感觉也还行,谁知今天在电脑...

2015-03-22 21:24:31

阅读数:1634

评论数:5

leetcode_103_Binary Tree Zigzag Level Order Traversal

思路: 具体的思路和层序遍历一致,只是需要将偶数层的结点值颠倒一下即可,时间略长,可见本方法并非好的方法。思路详见层序遍历:http://blog.csdn.net/mnmlist/article/details/44490975

2015-03-20 15:10:34

阅读数:664

评论数:0

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