上一页 1 ··· 31 32 33 34 35 36 37 38 39 ··· 43 下一页
摘要: 水题。http://community.topcoder.com/stat?c=problem_statement&pm=2923&rd=5854一开始错了是因为理解错题意。还有就是初始化min应该设为Integer.MAX_VALUE,而不是相反。public class TallPeople { public int[] getPeople(String[] people) { int min = Integer.MAX_VALUE; int max = Integer.MIN_VALUE; int len1 = people.length; if (len1 == 0) 阅读全文
posted @ 2013-08-16 13:55 阿牧遥 阅读(191) 评论(0) 推荐(0)
摘要: 水题,不值一提。http://community.topcoder.com/stat?c=problem_statement&pm=1585&rd=6535import java.util.*;public class BusinessTasks { public String getTask(String[] list, int n) { ArrayList al = new ArrayList(); for (int i = 0; i < list.length; i++) { al.add(list[i]); } int len = al.size(); if (l 阅读全文
posted @ 2013-08-16 13:19 阿牧遥 阅读(202) 评论(0) 推荐(0)
摘要: 二叉树的中序遍历非递归版本,采用的是wiki百科上的办法。果然简洁,而且和先序有异曲同工之妙,先序只用push右节点,中序只用push中节点。除此之外还有个更改TreeNode加一个visited的bool值的办法就不表了。http://discuss.leetcode.com/questions/23/binary-tree-inorder-traversal这个链接里面有个长长的讨论。后序遍历据说比较难,就先不学了,哪个面试官会这么变态出后序遍历么!!无堆栈版本的遍历也先不学了,有空多写先序和中序,要记熟了。写的时候仍然要看图,不要光背,思路是:1.当前节点一直是要处理的节点;2.不停向左 阅读全文
posted @ 2013-08-15 23:31 阿牧遥 阅读(252) 评论(0) 推荐(0)
摘要: 关于二叉树的遍历讲得最好的还是wiki:http://en.wikipedia.org/wiki/Pre-order_traversal关于非递归版本,主要是在二叉树超级不平衡的情况下,有可能栈溢出。以下是我写得先序遍历非递归版本,应该是对的吧,没实际运行过,其实也不好写... 基本思路是用TreeNode * n去遍历,先左子树往下,完了pop出一个父节点,把自己变成右子树继续。所以Stack里存的其实是父节点的信息。以下是参考wiki百科的版本,栈用的很少,只推右子树。 public class Solution { public ArrayList preorderTraver... 阅读全文
posted @ 2013-08-15 20:46 阿牧遥 阅读(313) 评论(0) 推荐(0)
摘要: 一个单链表,其中除了next指针外,还有一个random指针,指向链表中的任意某个元素。如何复制这样一个链表呢?通过next来复制一条链是很容易的,问题的难点在于如何恰当地设置新链表中的random指针。很容易想到使用Hash表的做法,先依次遍历原链表,每经过一个节点X,开辟一个新节点Y,然后(key=X的地址,value=Y的地址)存入哈希表。第二次再遍历原链表,根据拓扑结构设置新的链表。需要O(n)的空间,时间也是O(n)。如果不使用额外的空间,那么要想在旧链表和新链表的对应节点之间建立联系。就要利用链表中多余的指针。O(n)复杂度,O(1)空间。如图所示,扫描两边即可。需要复制的链表:如 阅读全文
posted @ 2013-08-15 14:57 阿牧遥 阅读(1274) 评论(0) 推荐(0)
摘要: 一、编码规则Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节数组。以3个字节为一组。按顺序排列24 位数据,再把这24位数据分成4组,即每组6位。再在每组的的最高位前补两个0凑足一个字节。这样就把一个3字节为一组的数据重新编码成了4个字节。当所要编码的数据的字节数不是3的整倍数,也就是说在分组时最后一组不够3个字节。这时在最后一组填充1到2个0字节。并在最后编码完成后在结尾添加1到2个 “=”。例:将对ABC进行BASE64编码:1、首先取ABC对应的ASCII码值。A(65)B(66)C(67);2、再取二进制值A(01000001) 阅读全文
posted @ 2013-08-15 14:09 阿牧遥 阅读(241) 评论(0) 推荐(0)
摘要: 二维动态规划。和某一道leetcode的题目差不多。就是多了blocks的数组或集合。本次解题的心得有:1.根据题意使用集合表示阻碍;2.使用字符串的形式表示整数的pair,简洁明了;3.p1到p2的阻碍其实是双向的;4.可以不用首行首列的全0;5.mx[i][j]和mx[i-1][j]和mx[i-1][j]可以分别加的。import java.util.*;public class AvoidRoads{ public long numWays(int width, int height, String[] bad) { HashMap> blocks = new HashMap> 阅读全文
posted @ 2013-08-14 23:53 阿牧遥 阅读(527) 评论(0) 推荐(0)
摘要: 来自http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=math_for_topcoders质数优化后的朴素算法public boolean isPrime (int n){ if (nmin(x2,x4)或者max(y1, y3) > min(y2, y4)则不相交。可以拓展到多维Pick 定理,1899年设P为平面上以格子点为顶点之单纯多边形,则其面积为 Area = B/2 + I - 1其中 b 为边界上的格子点数,i 为內部的格子点数。(8)式叫做 Pick 公式。(http://baik 阅读全文
posted @ 2013-08-14 13:05 阿牧遥 阅读(227) 评论(0) 推荐(0)
摘要: 1.此题很勉强算DP。找了半天网上思路,是个三层的循环,n^3。2.基本思路就是先找到在第一个位置的花。这样就双层遍历,找到所有和其他不冲突的花中最高的一个,然后放到结果的首位。然后去掉此花,继续使用此方法对余下花朵。3.要注意的是首先不能直接排序,比如a和b,b和c有冲突,但a和c不一定有冲突。4.判断两段是否重叠的最简单式子是!(a.start > b.end || b.start > a.end)思路来自:http://apps.topcoder.com/forums/?module=Thread&threadID=655393&start=0&mc= 阅读全文
posted @ 2013-08-13 23:32 阿牧遥 阅读(657) 评论(0) 推荐(0)
摘要: 此题是道神题。一开始我也像参考链接http://www.cnblogs.com/lichen782/p/Leetcode_Trapping_Rain_Water.html里面一样想了许久想到“俄罗斯方块”想法。但复杂度不够好。 后来看了方法二,确实巧妙。“其实,本质上来说,第一步保障了左右两边的水总 阅读全文
posted @ 2013-08-13 22:09 阿牧遥 阅读(325) 评论(0) 推荐(0)
上一页 1 ··· 31 32 33 34 35 36 37 38 39 ··· 43 下一页