- 博客(18)
- 资源 (2)
- 收藏
- 关注
原创 leetcode:Longest Common Prefix
还以为理解题意理解错了。。太简单了吧。。。就是对每个字符串的当前位比较。public class Solution { public String longestCommonPrefix(String[] strs) { int n=strs.length; if(n==0) return ""; Str
2014-02-28 15:20:05 405
原创 leetcode:Roman to Integer
注意优先看9**和4**public class Solution { public int romanToInt(String s) { int rst=0; int i,n; char[] ca=s.toCharArray(); n=s.length(); for(i=0;i
2014-02-28 10:33:48 524
原创 leetcode:Generate Parentheses
动归, s[n]=( s[j] )+s[n-j-1];这里注意一下ArrayList的用法,动态数组 ArrayList[] s=new ArrayList[n+1]; int i,j,k,m; for(i=0;i { s[i]=new ArrayList(); }
2014-02-28 10:14:49 379
原创 leetcode:Integer to Roman
代码略冗长。算法就是模拟,每次减一个5x,x是当前的位数,减到0为止。public class Solution { public String intToRoman(int num) { String rst=""; while(num>=1000) { rst+="M";
2014-02-24 17:01:16 382
原创 leetcode:Container With Most Water
这道题首先的思路是:设当前第i个直线为矮边界,找离i最远的比i高的边界,就构成以i为矮边界的容器。这是O(n^2)的算法,然后超时了。O(n^2)超时的话,要么分治,要么贪心。果然有贪心算法:从两边开始,将矮的一边往里推,直到i==i,记录每次的容器大小,是O(n)的算法。 int n=height.length; int h;
2014-02-24 16:36:20 434
原创 nachos3.4编译可能会遇到的问题
1.没有gmake进行Nachos整体编译安装时运行如下指令:~/nachos-3.4/code$ make这个时候会出现cd threads; gmake depend/bin/sh: 1: gmake: not foundmake: *** [all] Error 127【这个是g++的问题,重新装g++】
2014-02-24 09:51:30 3867 1
原创 leetcode:Regular Expression Matching
这道题做了N久,主要是边界条件太麻烦了,老是有小问题,最后看了下别人的代码才改对。用递归:例如 aaaa和ab*a*a,不知道中间那个a*要吃掉多少个a,所以只能把所有的可能都尝试一遍。要判断正则表达式p=0;p=1; p>1&&p[1]=='*';p>1&&p[1]!='*'这四种情况。public class Solution { public boolean isMat
2014-02-24 09:47:24 636
原创 leetcode:Palindrome Number
不能用字符串,因为不能用额外空间,那么久一位一位的造出倒过来的数再比较一下。因为有越界问题,所以用long。public class Solution { public boolean isPalindrome(int x) { if(x return false; if(x return t
2014-02-23 15:51:22 366
原创 leetcode:String to Integer (atoi)
这道题做得很烦,一直没明白题意乱七八糟的。要用long来存储最后的结果,不然会越界。public class Solution {public int atoi(String str) { long rst; int n=str.length(); int i,begin,flag; int sn=1; rst=
2014-02-22 22:09:15 388
原创 leetcode: Reverse Integer
主要问题:-100->-10->0这两种边界情况public class Solution { public static int reverse(int x) { if(x==0) return 0; String s=String.valueOf(x); int n=s.length();
2014-02-22 21:07:19 382
原创 leetcode:ZigZag Conversion
这道题麻烦在于理解题意:要把字符串摆成N字型。解法就是把一维的数组映射到一个二维坐标轴中,这个映射是一一映射.算出每个s[i]对应的坐标轴[x,y]然后把y=0,1,2...nRows-1的字幕填入结果即可。直接用rst+=ca[i]会超时,可见String的+还是一个比较费时的操作。public class Solution { public static String
2014-02-21 16:55:42 383
原创 leetcode:Longest Palindromic Substring
回文数用core[i]表示以i为"核"的最长回文序列core1[i]是单核回文,例如bacab,是以c为单核core2[i]是双核回文,例如baccab,是以cc为双核。代码写得比较冗长,思想就是,当前回文序列为s[i,j],那么只需要看s[i-1]==s[j+1]即可。边界考虑:s=“a”时,core2无效。public class Solution {
2014-02-21 15:54:19 362
原创 leetcode:Add Two Numbers
链表形式的大整数加法,这道题主要考察一下关于链表的操作,比较简单。注意,java的“=”传递的是引用;/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { *
2014-02-20 22:06:37 406
原创 leetcode: Longest Substring Without Repeating Characters
动规:f[i]表示以第i个字符结尾的最长无重复子串长度。f[i]=min(len,f[i-1]+1)其中len是上一个与s[i]相同的字符到i的距离,例如abca,i=3,s[i]='a',那么len=3-0=3,。边界条件是n=0的情况。public class Solution { public int lengthOfLongestSubstring(Str
2014-02-20 10:20:09 392
原创 leetcode:Median of Two Sorted Arrays
要求时间是log(m+n)。递归实现。所以用找第K大数的方法实现。需要注意的边界条件是m还有奇偶数的区别。技巧是始终保证A数组比B数组的规模小。public class Solution { public double findMedianSortedArrays(int A[], int B[]) { int m=A.length;
2014-02-19 23:14:13 411
原创 leetcode:Two Sum
这道题不排序,用n方的算法算会超时。首先用Array.sort()排序,因为要返回原来的数组下标,所以原来的数组不能丢。注意相同元素[0,4,2,0] target=0这种情况的处理,结果应该是两个0public class Solution { public int[] twoSum(int[] numbers, int target) { int
2014-02-19 17:26:15 400
原创 leetcode: Evaluate Reverse Polish Notation
这个问题用栈解决:注意的问题是1.题干中给出的是整数除法,所以都用整数 2.栈的指针的加减 3.java的string,==是比较的内存地址是否相同,.equals()才是比较内容;Integer.parseInt(String s)函数也要会写public class Solution {
2014-02-18 21:48:46 375
原创 leetcode:【Max Points on a Line】
Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.这道题考虑用如下表达式表达直线:point:(a0,b0), (a1,b1), line:(a1-a0)y+(b0-b1)x+(a0b1-a1b0)=0麻烦在于:相同点的
2014-02-18 16:26:25 328
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人