- 博客(76)
- 资源 (2)
- 收藏
- 关注
原创 leetcode: LRU Cache
import java.util.Map;import java.util.HashMap;public class LRUCache { Map cacheMap;ListNode head;ListNode tail;public int cap;public int last; public LRUCache(int capac
2014-10-10 20:04:21 547
原创 leetcode: Unique Paths
public class Solution { public int uniquePaths(int m, int n) { int i; double result=1.0; n=n-1; m=m+n-1; if(m-n<n) n=m-n; for(i=1;i<=n;i++)
2014-07-01 22:06:20 450
原创 leetcode: Rotate List
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public
2014-06-19 15:13:24 481
原创 leetcode: Insert Interval
因为原来的intervals是不想交且的,所以对原来的每一个区间,和要插入的区间对比,考虑如下情况:绿色表示当前的intervals[i],黑色表示新的interval。/** * Definition for an interval. * public class Interval { * int start; * int end; * In
2014-05-15 17:23:12 399
原创 leetcode:Reverse Words in a String
public class Solution { public static String reverseWords(String s) { String rst=""; int n=s.length(); int i,j; for(i=n-1;i>=0;i--) { if(s.charAt(i)!=' ') { j=i; while(j>=0 &&
2014-05-10 23:27:17 533
原创 leetcode: Merge Intervals
/** * Definition for an interval. * public class Interval { * int start; * int end; * Interval() { start = 0; end = 0; } * Interval(int s, int e) { start = s; end = e; } * } */
2014-05-10 22:08:59 438
原创 leetcode: Jump Game
public class Solution { public boolean canJump(int[] A) { int i,j; int prev0=-1; int n=A.length; int max=0; for(i=0;i { if(A[i]==0)
2014-05-10 21:25:41 364
原创 leetcode: Maximum Subarray
public class Solution { public int maxSubArray(int[] A) { int n=A.length; int[] F=new int[n]; int max,i; F[0]=A[0]; max=A[0]; for(i=1;i<n;i++) { if(A[i]>A[i]+F[i-1]) F[i
2014-05-08 21:45:48 388
原创 leetcode: Spiral Matrix
考虑四种情况:设m为有几横行,n为有几竖列,第一种情况是m>n && n%2==1;第二种情况是m>n && n%2==0;第三种情况是m第四种情况是m分别算出每一中情况的终点[endx,endy]每次找一下一个点,只需要记录当前的方向(右,下,左,上),还有当前属于第几层,抵拢倒拐,碰到终点返回。public class Solution {
2014-05-08 21:31:57 480
原创 leetcode: N-Queens
public class Solution { public static ArrayList solveNQueens(int n) { int[] trace=new int[n]; int i,j,x; ArrayList rst=new ArrayList(); String[] B=null; char[] Bline=new char[n]; for
2014-05-08 19:00:56 388
原创 leetcode:Pow(x, n)
public class Solution { public static double pow(double x, int n) { if(x!=0 && n==0) return 1; if(x==0 && n>0) return 0; if(n==1 || x==1) return
2014-05-08 01:13:35 419
原创 leetcode:Anagrams
public class Solution { public static ArrayList anagrams(String[] strs) { int m=strs.length; int i,j,n; int[][] map=new int[m][26]; int[] Bhash=new int[m]; Arr
2014-05-07 19:05:41 418
原创 leetcode: Permutations/Permutations II
按照字典序依次写,求一个序列的下一字典序序列:A[0] A[0] A[0] A[0]
2014-05-06 12:23:18 423
原创 leetcode:Jump Game II
public class Solution { public int jump(int[] A) { int n=A.length; int[] maxstep=new int[n]; int i,j,max,tmp;; if(n<2) return 0; maxstep[0]=0; //0 for(i
2014-05-05 23:16:16 410
原创 leetcode:Wildcard Matching
public class Solution { public static boolean isMatch(String s, String p) { if(s.equals("")) return p.equals("")?true:false; if(p.equals("")) return false; //System.out.prin
2014-05-05 11:15:33 556
原创 wireshark抓包提示There are no interfaces on which a capture can be done
windows下运行wireshark抓包,提示There are no interfaces on which a capture can be done,是因为权限不够,选择“以管理员身份”
2014-05-05 11:00:31 1128
原创 leetcode:Multiply Strings
大整数chengfapublic class Solution { public static String multiply(String num1, String num2) { String rst="0"; String adder2="0"; int len1=num1.length(); int len2=n
2014-05-04 16:10:30 409
原创 leetcode: Trapping Rain Water
好久没有做leetcode了,因为最近心情不好。这道题还是左右指针,public class Solution { public int trap(int[] A) { int sum=0; int begin=0; int i,l,r,min; int n=A.length; if(n==0)
2014-05-04 14:53:52 426
原创 leetcode: First Missing Positive
public class Solution { public int firstMissingPositive(int[] A) { int i,j; int n=A.length; int e1,e2,tmp; for(i=0;i { while(i
2014-04-05 15:17:11 400
原创 Combination Sum II
不是two sum,所以还是深搜每个数的搜索深度是它重复的次数,例如有两个1,搜索就是0,1,2三次其他和combination sum相同public class Solution { public ArrayList> combinationSum2(int[] num, int target) { Arrays.sort(num);return DFS
2014-03-27 22:12:52 389
原创 leetcode: Combination Sum
写得比较复杂,深搜吧 也没有什么很好地办法。public class Solution { public ArrayList> combinationSum(int[] candidates, int target) {Arrays.sort(candidates);return DFS(candidates,target,0,candidates.length);
2014-03-22 21:55:27 430
原创 leetcode: Count and Say
这个技术主要用在文件压缩吧,比如111112,有5个1和1个2,于是变为5112.理解题意比较重要。递归实现。public class Solution { public String countAndSay(int n) { String rst=""; if(n==1) { rst+="1";
2014-03-19 20:29:03 422
原创 leetcode:Sudoku Solver
算法打死没想出来,看了看别人的代码,才发现是暴力枚举(递归)首先找一个没有填的空,然后填入1-9,判断填入之后的数是否有冲突,没有就继续递归。public class Solution { public void solveSudoku(char[][] board) {msolveSudoku(board); }public boolean msolveS
2014-03-18 21:45:08 388
原创 leetcode: Valid Sudoku
根据坐标找到对应的行,列,块即可。设置三个标志矩阵。public class Solution { public boolean isValidSudoku(char[][] board) { int[][] rowflag=new int[9][9]; int[][] colflag=new int[9][9]; int[]
2014-03-18 20:14:48 384
原创 leetcode: Search Insert Position
也是二分法做的public class Solution { public int searchInsert(int[] A, int target) { return msearch(A,target,0,A.length-1); } public static int msearch(int[] A, int target, in
2014-03-18 19:57:01 450
原创 leetcode:Search for a Range
二分法:public class Solution { public int[] searchRange(int[] A, int target) { return msearch(A,target,0,A.length-1); } public static int[] msearch(int[] A, int target, int begi
2014-03-17 21:57:13 421
原创 leetcode: Search in Rotated Sorted Array
二分法递归:有两种情况:(1)A[mid](2)A[mid]>=A[end]如3456789012根据target和mid,begin,end的大小关系,去二分原数组public class Solution { public static int search(int[] A, int target) { return msearch(
2014-03-17 21:00:53 365
原创 leetcode: Longest Valid Parentheses
动态规划:F[i]表示末尾到第i个括号的最大匹配括号数。last=i-1-F[i-1],表示上一个不匹配的地方,要么是这样:****(*****)就匹配了,那么F[i]=f[last-1]+2+F[i-1]要么就是不匹配,F[i]=0public class Solution { public int longestValidParentheses(String
2014-03-17 20:29:39 357
原创 leetcode: Next Permutation
理解9587643这个串的下一个是什么就行。首先,从后往前找到num[i]然后从后往前找到第一个比5大的数,是6.然后5和6换位置,得到9687543,然后把6后面的数颠倒,9634578即可。public class Solution { public void nextPermutation(int[] num) { int i,
2014-03-15 00:45:43 431
原创 leetcode:Substring with Concatenation of All Words
这个题目的意思理解了很久,而且开始的时候还是理解错了。比如给一个串“absdaaaasd”,再给一些列小串"aa","aa",“sd”.首先这些小串可以自由“串联”,要求是:1.小串长度相同;2必须包含所有小串所有的可能有:“aaaasd”;"aasdaa";“sdaaaa”;注意,相同的小串并不是排除,而是一样的加进去。设大串长为m,小串个数为n,小串长为eachlen;最简
2014-03-14 21:19:46 479
原创 leetcode: Divide Two Integers
只能说这个题目很贱。主要是-2^32变成绝对值之后会超出int的界,所以用long 来存dd=Math.abs((long)dividend);dr=Math.abs((long)divisor);解题想法原来是:divide(dividend, divisor)=divide(dividend/2, divisor)+divide(dividend/2, divisor)用二
2014-03-12 22:12:19 444
原创 leetcode: Implement strStr()
KMP算法,参照资料写的。先算next数组,再利用next数组来计算。next[i]表示包含当前元素的前next[i]个字符与needle的前i个字符相同(但是不重合。)复杂度是O(m+n)public class Solution { public String strStr(String haystack, String needle) { int n=
2014-03-12 21:17:42 390
转载 poj里java的一些常用的语法(转自博客http://www.blogjava.net/DreamAngel/archive/2009/10/18/298731.html)
这里指的java速成,只限于java语法,包括输入输出,运算处理,字符串和高精度的处理,进制之间的转换等,能解决OJ上的一些高精度题目。1. 输入:格式为:Scanner cin = new Scanner (new BufferedInputStream(System.in));例程:import java.io.*;import java.math.*;import j
2014-03-12 20:37:24 875
原创 leetcode: Remove Element
设置一个末尾指针,如果有遇到相同元素,那么就把相同元素和末尾指针的数对换。注意因为换过来的数又要重新比较,所以要i--。public class Solution { public int removeElement(int[] A, int elem) { int n=A.length; if(n==0) retur
2014-03-10 21:25:08 406
原创 leetcode:Remove Duplicates from Sorted Array
不太明白这道题有什么玄机。。反正一次就通过了。public class Solution { public int removeDuplicates(int[] A) { int n=A.length; int i=1,p=1; if(n==0 || n==1) return n;
2014-03-10 21:19:13 373
原创 leetcode:Reverse Nodes in k-Group
递归,每次取k个元素。然后对这k个元素处理,返回{k个元素}+reverseKGroup(tail,k)比如1-2-3-4-5-6,k=4,那就先处理1-2-3-4,tail=5,5-6后续再处理。处理过程是1(head,p1)-2(p2)-3-4,p1是当前最左边的元素,head是原来的头,p2是原来头下面的元素。然后把p2移到p1左边:2(p1)-1(head)-3(p2)-4
2014-03-10 16:39:53 439
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人