算法
diu_brother
阿里巴巴集团 javacoder
展开
-
波特词干算法
波特词干算法转载 2015-09-28 19:24:05 · 1007 阅读 · 0 评论 -
golang 实现bitmap
一、概述本文将讲述Bit-Map算法的相关原理,Bit-Map算法的一些利用场景,例如BitMap解决海量数据寻找重复、判断个别元素是否在海量数据当中等问题.最后说说BitMap的特点已经在各个场景的使用性。二、Bit-Map算法先看看这样的一个场景(来自《编程珠玑》):给一台普通PC,2G内存,要求处理一个包含40亿个不重复并且没有排过序的无符号的int整数,给出一个整数,问如果快速...转载 2018-10-12 20:10:19 · 2445 阅读 · 0 评论 -
和为S的连续正数序列
题目:小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck! 输出描述:输出所有和为S的连续正数序列。序列内原创 2016-09-23 01:03:32 · 495 阅读 · 0 评论 -
用两个栈实现队列
题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 经典题,不多说,直接上代码import java.util.Stack;public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer原创 2016-09-16 22:04:11 · 327 阅读 · 0 评论 -
重建二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 解题思路:其实就是一个递归的思想,先找到根节点,然后递归构建出左子节点和右子节点即可 解法如下:/** * Definition for binary t原创 2016-09-16 21:14:44 · 322 阅读 · 0 评论 -
从尾到头打印链表
题目:输入一个链表,从尾到头打印链表每个节点的值。这是一道很基础的经典题,一看到这题就能立马想到三种方法:(1)使用栈(2)递归(3)反转链表后输出,介绍前两种,解法如下://使用栈/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val原创 2016-09-16 21:22:13 · 344 阅读 · 0 评论 -
替换空格
题目:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 解题思路:依题意肯定不能用replace()函数,如果用String类其他函数,主要是注意不要遗漏各种情况解法:public String replaceSpace(StringBuffer str) { if(str==n原创 2016-09-10 00:04:25 · 337 阅读 · 0 评论 -
二维数组中的查找
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解法:选择从右下角往上检索public class Solution { public boolean Find(int [][] array,int target) { if(array==null||a原创 2016-09-09 23:28:12 · 348 阅读 · 0 评论 -
java 复杂链表的复制
阿里终面在线编程题,写出来与大家分享一下有一个单向链表,每个节点都包含一个random指针,指向本链表中的某个节点或者为空, 写一个深度拷贝函数,拷贝整个链表,包括random指针。尽可能考虑可能的异常情况。算法如下:/*public class RandomListNode { int label; RandomListNode next = null; RandomL原创 2016-03-26 21:22:19 · 1883 阅读 · 0 评论 -
java 实现PageRank算法
java实现PageRank算法,直接上源码package pagerank; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.u转载 2016-03-13 15:40:37 · 1094 阅读 · 0 评论 -
java实现二叉树的构建和遍历
手写一个java实现二叉树的算法以及用先序、中序、后序以及层序遍历二叉树的方法package Tree;import java.util.LinkedList;import java.util.Queue;class Node { public int data; public Node left; public Node right; public Node(int原创 2016-03-06 12:26:46 · 404 阅读 · 0 评论 -
几种基本排序的java实现
用java实现一下选择、插入、冒泡、归并、快排、希尔等基本排序算法,用来练练手并加深记忆package sort;public class SelectSort { /** * 选择排序 * @param a */ public static void selectSort(int[] a){ if(a!=null){原创 2016-03-05 22:08:40 · 272 阅读 · 0 评论 -
快速排序的时间复杂性分析
快速排序的基本思想是:每次从无序的序列中找出一个数作为中间点(可以把第一个数作为中间点),然后把小于中间点的数放在中间点的左边,把大于中间点的数放在中间点的右边;对以上过程重复log(n)次得到有序的序列。快速排序的时间复杂性分析:排序的大体如下图所示,假设有1到8代表要排序的数,快速排序会递归log(8)=3次,每次对n个数进行一次处理,所以他的时间复杂度为n*log(n)。所以排序问题的时间复杂转载 2016-03-03 12:53:57 · 870 阅读 · 0 评论 -
golang 实现 等价查找二叉树
刚接触go语言半年,日常工作都是用小组内自研的going框架开发,对golang底层的并发机制并不是非常熟悉,近期特地研究了一下,简单实现个小算法不同二叉树的叶节点上可以保存相同的值序列。例如,以下两个二叉树都保存了序列 `1,1,2,3,5,8,13`。在大多数语言中,检查两个二叉树是否保存了相同序列的函数都相当复杂。 我们将使用 Go 的并发和信道来编写一个简单的解法。本例使用...原创 2019-02-12 15:25:23 · 826 阅读 · 0 评论