
算法
傻的可爱
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
删除已排序数组中的重复数
public class DuplicatedNumberHandler { public static void main(String[] orgs){ int[] arr = {1,1,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,6}; DuplicatedNumberHandler handler = new DuplicatedNumberHandler()原创 2013-04-01 16:23:44 · 624 阅读 · 0 评论 -
JAVA GC
http://www.cubrid.org/blog/dev-platform/understanding-java-garbage-collection/ http://www.cubrid.org/blog/tags/Garbage%20Collection/原创 2014-04-30 14:45:58 · 526 阅读 · 0 评论 -
最近做的简单的编程练习
public void rotate(int[][] matrix) { // Start typing your Java solution below // DO NOT write main() function int n = matrix.length; for(int i = 0; i < n/2; i++){原创 2013-07-02 10:04:22 · 493 阅读 · 0 评论 -
二叉树相关的算法题解答
最近发现一个比较不错的网站. http://www.geeksforgeeks.org 于是开始从Tree入手. 下面是用C++实现了树(主要是二叉树) 相关的算法题,注释中就是要解答的问题. 其中一些代码,比如struct node 等都来自于该网站的用户提供的代码. 这些算法都在本机eclipse c/c++环境下编译通过. 大部分是自己实现,有一些比如求三个节点和为0的这个问题原创 2013-07-09 15:31:07 · 697 阅读 · 0 评论 -
大数除法
public static String bigchars(char[] d , int b){ int length = d.length; char c = d[0]; int reminder = 0; StringBuilder sb = new StringBuilder(); for(int i = 0; i <= length - 1;i++){ c = d原创 2013-05-10 11:05:46 · 802 阅读 · 0 评论 -
回溯法解决八皇后和0,1背包问题和排列问题
回溯法其实就是一种穷举算法 八皇后问题的代码: public class EightQueuen { int count = 0; public boolean place(int[] array,int col){ boolean ret = false; if(col == 8){ for(int i = 0; i < array.length; i++){原创 2013-05-01 11:21:39 · 842 阅读 · 0 评论 -
二进制的一些题
编程之美中,判断一个数是否为2的方幂给出的判断是: n > 0 && ((n&(n-1)) == 0)我的理解:如果n为奇数的话,最低位肯定为1,与比他小一的数与,只会消去最低位的1.如果n为偶数的话,则与它小1的数相与就为0原创 2013-04-28 13:42:30 · 606 阅读 · 0 评论 -
冒泡排序,快速排序,归并排序,选择排序,插入排序,堆排序
冒泡: public class BubbleSort { public static void main(String[] orgs){ int[] a = {2,1,10,2,8,6,7,20}; for(int i = 0 ; i < a.length; i++){ for(int j = 1 ; j <= a.length - 1 - i; j++){ if(原创 2013-04-28 10:12:27 · 577 阅读 · 0 评论 -
拓扑排序步骤
首先获取所有的入度为0的顶点,入队列 从队列中获取一个入度为0的顶点 获取该顶点边,将边的另一端顶点入度减一,如果为0,也入队列 利用一个拓扑排序,可以判断有向图是否带环。 做法就是:遍历一个顶点,记录count++。最后如果发现count数小于图的顶点数,就有环。 还有一个判断有向图是否带环的方法: 利用深度优先,遍历一个图。 图的每一个顶点设置一个颜色属性,初原创 2013-04-18 13:45:31 · 941 阅读 · 0 评论 -
在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
这个题目,有一个陷阱。 就是找到第一个只出现一次的字符。 第一个 和 只出现一次 是两个条件。 网上很多同学的答案,都只是满足了只出现一次,但是没有保证是第一个。 所以如果输入aadbcc 那么应该输出的就是d了。 所以,是不是应该还有一个数组,维护每个字母第一次出现的位置呢?原创 2013-04-04 22:25:03 · 676 阅读 · 0 评论 -
二叉查找树转为双向链表
二叉查找树的特性: 左节点比其父节点要小,右节点比其父节点要大。 原题是: 12 8 15 6 9 13 16 变为链表: 6=8=9=12=13=15=16 所以,首先想到中序遍历 中序遍历代码: void visit(Node node){ visit(node.left()); println("n原创 2013-04-04 21:32:00 · 511 阅读 · 0 评论 -
素数筛法
转载自:http://blog.youkuaiyun.com/liukehua123/article/details/5482854 素数筛法是这样的: 1.开一个大的bool型数组prime[],大小就是n+1就可以了.先把所有的下标为奇数的标为true,下标为偶数的标为false. 2.然后: for( i=3; i { if(prime[i])转载 2013-04-04 16:32:51 · 540 阅读 · 0 评论 -
深度优先遍历和广度优先遍历
一个是先遍历完一个节点的所有子节点再按照同样的方式遍历兄弟节点 一个是先遍历所有的兄弟节点,然后再遍历下一层的兄弟节点。 所以,深度优先遍历通常采用递归的方式解决。 广度优先遍历通常采用一个辅助的队列来解决。 pesudoCode visitDFS(Node d){ System.out.println(d is d); for(Node node : d的所有原创 2013-04-02 20:52:47 · 624 阅读 · 0 评论 -
BF算法
public int contains(String src, String pattern) { if (src == null || pattern == null) { return -1; } int lengthSrc = src.length(); int lengthPattern = pattern.length(); if (lengthPatter原创 2013-04-02 13:58:20 · 775 阅读 · 0 评论 -
查找第N大的数
public class MaxNumberFinder { public int findTheNNumber(int[] arr,int n,int start,int end){ int ret = -1; int p = partition2(arr, start, end); if(n == p){ return arr[p]; }else if(n > p){原创 2013-04-01 11:05:41 · 622 阅读 · 0 评论 -
全局唯一ID的生成策略对比
http://cenalulu.github.io/mysql/guid-generate/转载 2015-03-13 09:32:17 · 1044 阅读 · 0 评论