摘要:题目:对应之前那道将罗马数字转换整型数字的题目。反过来。思路:刚开始做的时候,想着用程序进行判断,复杂的要死。网络了别人代码,非常清晰。代码: 1 public String intToRoman(int num) { 2 String[] alpha = {"M" ,"CM"...
阅读全文
摘要:题目:在二维坐标系下,有很多个挡板,有两个挡板之间能够积蓄的水的最大面积。如下图所示:思路:我只想到暴力解法,用O(n2)的时间复杂度算出任意两个挡板形成的面积,这必须的过不了。优化解法:O(n).用两个指针 i 和 j 指向整个height[]数组的头尾。if i 指向的高度 决定,因此不会比现在...
阅读全文
摘要:问题:求一个字符串中最长不重复子串的长度。直接思路:以每个字符为出发计算最长不重复子串。TLE。O(n2),HashMap存储字符出现的位置。代码: 1 public int lengthOfLongestSubstring(String s) { 2 Map temp = n...
阅读全文
摘要:题目:两个链表存储数字,然后求和,和值存储在一个链表中。代码: 1 public ListNode addTwoNumbers(ListNode l1, ListNode l2) { 2 ListNode head = new ListNode(0); 3 ListN...
阅读全文
摘要:题目:计算一棵二叉树所有路径组成的数的总和。思考:也是DFS的基础应用。虽然还是套着别人的DFS框架写的,但是学习通常会经历先模拟,再创新的过程。代码: 1 private int sum = 0; 2 public int sumNumbers(TreeNode root) { 3...
阅读全文
摘要:问题来源于leetcode上的两道题 Path Sum I && II,分别写了两个dfs。1 void dfs(TreeNode node , int sum , ArrayList curPath)2 void dfs(TreeNode node , int sum , boolean ifEx...
阅读全文
摘要:都是考查DFS。经典回溯算法,问题在于我对该类型的代码不熟悉,目前以参考别人的代码,然后加上自己的实现为主,通过类似的题目加强理解。一、给定一棵二叉树,判断是否存在从root到leaf的路径和等于给定值sum,存在返回true,否则返回false。思路:DFS。代码: 1 private b...
阅读全文
摘要:一个系列三道题,我都不会做,google之答案。过了两道,第三道看不懂,放置,稍后继续。一、Best Time to Buy and Sell Stock I题目:一个数组表示一支股票的价格变换。要求只买卖一次,获得最大收益。思路:一开始我认为是寻找最大、最小值,但由于最大值不一定总是出现在最小值的...
阅读全文
摘要:题目:判断一个数字字符串是否是回文串。空串认为是回文串。思路:双指针问题,重点在于此题的很多陷进:例如,s = " " ,return true。 s = ".," , return true。代码:修改了很多遍,终于AC , 要点在于只有当头尾两个指针都指向数字或者字母时,此时才有比较操作,否则都...
阅读全文
摘要:题目:Pascal三角的变形,要求只用O(K)的额外空间。思路:由于Pascal三角中,tri[n][i] = tri[n - 1][i] + tri[n-1][i-1],(通常情况下)如果已经获得K = 2时的数组:1211、 普通思路,从前部开始,想要生成下一行,在不能申请其它辅助空间时,131...
阅读全文
摘要:题目:题目本身不存在问题,生成Pascal三角。注意: ArrayList的使用: 1、ArrayList申请二维数组。1 ArrayList> result = new ArrayList>(); 2、操作:1 ArrayList one = new ArrayList();2 ...
阅读全文
摘要:题目:合并两个有序数组A , B,将合并后的数组存到A中。假设A的空间足够装下A和B所有的元素。思路:这道题考虑如果正向扫描两个数组,则每插入一个元素,则需移动A后的所有元素。换个角度想,既然元素个数一定,则从尾部扫描两个数组,依次放入到A的尾部,这样既不会产生大量元素的移动,也不会造成A中元素被覆...
阅读全文
摘要:题目:一个有序数组,要求保证数组中的每个元素不能超过2个。 输入:A =[1,1,1,2,2,3] 输出:length =5, and A is now[1,1,2,2,3]思路:双指针 。有些绕,不过理清了后,思路还是很直接明朗的。1、两个指针:p和help。初始化时同时指向数组头。变量cur...
阅读全文
摘要:我敢保证这道题是在今早蹲厕所的时候突然冒出的解法。第一次接触DP题,我好伟大啊啊啊~题目:一个N阶的梯子,一次能够走1步或者2步,问有多少种走法。解法:原始DP问题。思路:1、if N == 1 , then ans = 1;2、if N == 2 , then ans = 2;3、if 我们现在在...
阅读全文
摘要:题目:有一个m * n 的方格,如下图,一个小robot希望从左上角走到右下角,共有多少种不同的路线走法。思路:我的错误思路:全排列,从(0,0)走到(m - 1,n - 1)共需要往下走m-1步,往右走n-1步。那么计算公式就是(全排列(m-1+n-1)/(全排列(m-1)*全排列(n-1)))。...
阅读全文
摘要:题目:一开始没看懂,后头经过WA发现 输出 的意义 是 出现的次数+值。1 => 一个1 => 1111 => 两个1 => 21111=> 三个1 => 31。。。依次类推思路:用两个变量current和next,存储相邻元素的值,如果相同,往下移一位,此时计数器count++ , 直到curre...
阅读全文
摘要:中间被启程日本的面试弄的没有静下心来复习算法。这样不好,基本功是硬道理。逐步恢复刷题。题目:给一个数独(九宫格)中的一些数字,判断该数独是否有效。 即按照数独的规则,判断其行、列、小九格中是否有重复的数字。如有,即判断无效。直接给代码吧,长期没刷题,代码质量有所下降。 1 public bo...
阅读全文
摘要:昨天上午刚群面完,晚上7点左右就接到了电话。面试官就两位菇凉,看来她们也是很辛苦。今天下午3点 1 vs 1,在一家咖啡店里,主要是询问下去日本的意愿是否足够强烈。太老实,这里实话实说,也没有表现出非去日企的态度,只是表现出日企是找工作的一个选择而已,看来会沦为备胎。此次面试缺点: 1、太过...
阅读全文
摘要:四月份大家在风风火火地找实习的时候,小胖这个半吊子上学期学校英语考试58分,(衰衰地研究生阶段也圆满了),故这学期没敢大意。寒假一结束,为了督促自己学习英语,还报了一个4.20的托业考试,开始寂寞地啃英语的路。从2.26~4.20,不说风雨无阻吧,至少一周保证5天晚上3个小时的Toeic复习,...
阅读全文
摘要:题目:查找元素target插入一个数组中的位置。代码:public int searchInsert(int[] A, int target) { int len = A.length; int i; for(i = 0 ; i < len ; i++){ ...
阅读全文
摘要:题目:合并两个有序单链表思路:一开始想复杂了,以为必须在原链表上修改(绕来绕去还AC了,但是思路相当绕),其实没有,按照正常地合并两个数组同样的方法也对。代码:public ListNode mergeTwoLists(ListNode l1, ListNode l2) { if(l1 ...
阅读全文
摘要:题目:判断给定字符串中的括号是否合法。题目中涉及三种符号'(' + ')' , '[' + ']' , '{' + '}'。思路:利用stack来存储符号。 注意申请char型stack是: Stack op = new Stack(); stack.peek() 查看栈顶元素,但是不弹出...
阅读全文
摘要:周四还是周五去参加了一场学长学姐就业经验交流会。很惊讶,前来交流的以学姐为主。两位学长一位去CMU念博,一位进了工行,四位学姐倒是牛逼到暴,一个google , 两位 microsoft。还有一位去过10来个国家,这种孩纸大家还是别比了,很累的,扛不住。 记录:推荐的资料。 书籍:《cra...
阅读全文
摘要:问题:寻找最长公共前缀思路:就是逐一检查每个string中的每一位,碰到不相等的时候,结束;每个string中这一位都相等,加入到common prefix中~public String longestCommonPrefix(String[] strs) { int ...
阅读全文
摘要:题目:移除linked-list从尾到头的第N个元素自我思路:因为题目给出的N是从链表尾开始计算的,单链表不存在从子指向父亲的反向指针,因此我先计算链表的整个长度len,然后用len - N来表示正向被删除元素所在的位置。代码:public ListNode removeNthFromEnd(Lis...
阅读全文
摘要:题目:给定一个罗马数字串,转换为一个整数。一开始没理解,以为是string to int。后来理解:罗马数字与阿拉伯数字的映射关系,见下图:至此,题目的意思才掌握明白,用程序模拟这张表。无可置否,需要将这张表的映射关系存进一个map中,对输入的string查找map中的映射关系。先贴上代码:(注:s...
阅读全文
摘要:判断integer是否为回文串(负数全部不为回文串)思路很直接,提取出integer中的每一位,一头一尾进行比较是否相同。一次AC , 直接上代码:public boolean isPalindrome(int x) { if(x = 0 && x 0){ ...
阅读全文
摘要:非常考虑思维全面性的一道题,考验是否能够考虑本问题的方方面面。题目:将一个string转换为int。实现函数atoi()的功能。先应该明确atoi()有哪些特殊功能:(正常的正负数情况我就不列了)inputoutput”+1“1” + 1“0(error了)” 1“1(前头只有空格是合法的...
阅读全文
摘要:第五道树题,10分钟之内一遍AC。做树题越来越有feel~题目:求一棵树从root结点到叶子结点的最短路径。思路:仍然是递归。如果一个结点的左右子树任意一边为Null,该子树的minDepth应为非null子树的高度+1;如果一个结点的左右子树两边都非Null,则该子树的minDepth应为两个子树...
阅读全文
摘要:第四道树题,逐渐能写递归了。虽然最后AC的代码还是看了网络,但是距离成功攻克此类问题仅一步之遥。题目:一棵树,判断是否为AVL。(AVL条件:树上任意一点的左右子树的高度差_ 1 ) return false; else return isBalanced(root.lef...
阅读全文
摘要:经历了三道树的题后,完全崩溃中,急需一道非树图的题来挽救信心。题目:反转数字。input : 123 , output : 321.思路:直接,没什么好说的。自己代码:很龊,有大量的冗余信息,还申请了一个List,虽然AC了,但有很大改进空间。public int reverse(int x) { ...
阅读全文
摘要:第三道树的题目,我还是不会,我擦,怎么递归算法还是不能很好理解。看来还得好好研究下递归算法。题目:求一棵树的最大深度。思路:递归地求取左子树最大深度 和 右子树最大深度,返回较大值即为 整棵树的 最大深度。代码:public int maxDepth(TreeNode root) { ...
阅读全文
摘要:第二道树的题目,依旧不会做,谷歌经验。题目解释: give you a tree , judge if it is a symmetric tree.思路:我以为要写个中序遍历(进阶学习非递归算法)什么的,Wrong Answer。解题思路:如果 左子树的值 等于 右子树的值,并且该左子树的左子树 ...
阅读全文
摘要:第一次遇见Tree的题,拿到心慌,网上查了解题思路。写完就三行。。最近努力学习一句话,学会喜欢自己。题目:give two tree , you must judge if they are the same tree. ensure they are the same tree structure...
阅读全文