随笔分类 -  算法

摘要:1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode(int x) { val = x; } 7 * } 8 */ 9 public class Solutio... 阅读全文
posted @ 2016-05-30 16:31 32ddd 阅读(189) 评论(0) 推荐(0)
摘要:问题描述:给定一个字符串,其中只包含字符‘{’, '}', '[', ']', '(', ')'确定如果输入字符串是有效的。括号必须以正确的顺序排列,“()”和“()[]{ }”都是有效的, "{", " {]"等都是无效的。 解题思路:利用栈,如果不是右括号就压入栈中,如果是右括号,就看前一个字符 阅读全文
posted @ 2016-05-30 15:56 32ddd 阅读(180) 评论(0) 推荐(0)
摘要:1 class ListNode 2 { 3 int val; 4 ListNode next; 5 ListNode(int x) 6 { 7 val = x; 8 } 9 } 10 public class NthNodeFromEnd { 11 public ListNode removeNthFromEn... 阅读全文
posted @ 2016-05-29 21:58 32ddd 阅读(366) 评论(0) 推荐(0)
摘要:Given a digit string, return all possible letter combinations that the number could represent. A mapping of digit to letters (just like on the telepho 阅读全文
posted @ 2016-05-27 19:31 32ddd 阅读(439) 评论(0) 推荐(0)
摘要:四数和问题,感觉并不是最优解。 阅读全文
posted @ 2016-05-27 17:39 32ddd 阅读(265) 评论(0) 推荐(0)
摘要:public class LongestCommonPrefix { public String longestCommonPrefix(String[] strs) { if(strs == null) return null; if(strs.length == 0) return ""; ... 阅读全文
posted @ 2016-05-26 17:33 32ddd 阅读(271) 评论(0) 推荐(0)
摘要:整数转换成罗马数字: 罗马数字的基本型为:I=1,V=5,X=10,L=50,C=100,D=500,M=1000,相同的罗马数字最多不能超过三个。所以对于4只能表示为5-1即IV,左减右加。 同理,9=IX,40=XL,90=XC,400=CD,900=CM。根据这些基本型,可以通过贪心算法,每次 阅读全文
posted @ 2016-05-26 15:46 32ddd 阅读(8831) 评论(0) 推荐(2)
摘要:Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpo 阅读全文
posted @ 2016-05-25 22:04 32ddd 阅读(145) 评论(0) 推荐(0)
摘要:问题描述:Implement regular expression matching with support for '.' and '*'. 算法分析:.*可以匹配任意字符串,例如ab匹配.*,不是说让.匹配完a然后再去匹配*,而是*匹配的是.,也就是说(.*)==(..........),所以 阅读全文
posted @ 2016-05-24 19:49 32ddd 阅读(404) 评论(0) 推荐(0)
摘要:public class StringToInt { public int atoi(String s) { long num = 0; int minus = 0; if(s==null) { return (int)num; } //过滤所有空格 ... 阅读全文
posted @ 2016-05-24 14:57 32ddd 阅读(489) 评论(0) 推荐(0)
摘要:此题很简单,要考虑整数溢出的情况。 阅读全文
posted @ 2016-05-24 12:02 32ddd 阅读(492) 评论(0) 推荐(0)
摘要:public class ZigzagConvert { public static String convert(String s, int nRows) { int len = s.length(); if (len == 0 || nRows 0 && i < nRows-1) { ... 阅读全文
posted @ 2016-05-24 10:24 32ddd 阅读(313) 评论(0) 推荐(0)
摘要:public class LongestPalindrome { // 暴力算法 public String longestPalindrome(String s) { if (s == null) return null; if (s.length() len) { ... 阅读全文
posted @ 2016-05-22 22:34 32ddd 阅读(240) 评论(0) 推荐(0)
摘要:此算法涉及一个重要数学结论:如果A[k/2-1]<B[k/2-1],那么A[0]~A[k/2-1]一定在第k小的数的序列当中,可以用反证法证明。 算法思想如下: 1,假设A长度为m,B长度为n,m>n,反之亦然。 2,拆分k=pa+pb。 3,如果A[pa-1]<b[pb-1],那证明第A[0]~A 阅读全文
posted @ 2016-05-21 14:38 32ddd 阅读(534) 评论(0) 推荐(0)
摘要:基本思想:设所排序序列的记录个数为n。i取1,2,…,n-1,从所有n-i+1个记录(Ri,Ri+1,…,Rn)中找出排序码最小的记录,与第i个记录交换。执行n-1趟 后就完成了记录序列的排序。交换排序都不稳定。不稳定。 阅读全文
posted @ 2016-05-09 14:02 32ddd 阅读(119) 评论(0) 推荐(0)
摘要:基本思想:第一趟取一个基点,然后把序列分成两部分,小于基点和大于基点,每一部分再递归调用快速排序。不稳定。 阅读全文
posted @ 2016-05-09 13:19 32ddd 阅读(202) 评论(0) 推荐(0)
摘要:将一个元素插入已经有序的序列,和要插入的元素作比较找到插入位置是关键,插入位置后面的元素后移。 阅读全文
posted @ 2016-05-04 21:49 32ddd 阅读(124) 评论(0) 推荐(0)
摘要:冒泡排序会进行len-1趟,每一趟两两比较,确定一个位置。 阅读全文
posted @ 2016-05-04 21:11 32ddd 阅读(144) 评论(0) 推荐(0)
摘要:二分插入排序的基本思想是:利用二分搜索算法,在已有序序列中查找元素插入位置,将元素插入这个位置,这个位置后面的元素依次后移。 阅读全文
posted @ 2016-04-28 22:34 32ddd 阅读(236) 评论(0) 推荐(0)
摘要:// // BinarySearch.c // libin // // Created by 李宾 on 16/4/28. // Copyright © 2016年 李宾. All rights reserved. // #include //非递归 int Binary_Search(int a[], int low, int high, int key) { while ... 阅读全文
posted @ 2016-04-28 20:39 32ddd 阅读(159) 评论(0) 推荐(0)