Algorithm
奋起直追CDS
这个作者很懒,什么都没留下…
展开
-
数字字符串转数值
数字字符串转数值,适用于2、8、10、16进制的字符串转到十进制。原创 2016-01-08 16:47:02 · 494 阅读 · 0 评论 -
Merge Two Sorted Lists
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.其实就是在考察归并排序。/** * Definition for singly-linked list. * pub原创 2016-03-08 12:57:38 · 272 阅读 · 0 评论 -
Implement Queue using Stacks
Implement the following operations of a queue using stacks.push(x) – Push element x to the back of queue.pop() – Removes the element from in front of queue.peek() – Get the front element.empty() –原创 2016-03-08 14:48:10 · 253 阅读 · 0 评论 -
*Balanced Binary Tree
Given a binary tree, determine if it is height-balanced.For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by原创 2016-03-08 15:33:34 · 317 阅读 · 0 评论 -
Java clone()
Object 中有一个projected clone() 方法,所以很多类都支持这个“自我克隆”的方法。自定义类想实现clone() 方法只需要实现Cloneable接口即可。它跟Serializable一样,里面没有任何方法,只是一个标志性的接口。一般来讲,利用clone() 可以复制出一个一模一样的实例,而且两者完全隔离。因为它是直接在内存中,将所有数据拷贝一份到另外的区域,效率很高。根据这个原原创 2016-03-08 22:52:08 · 328 阅读 · 0 评论 -
House Robber
You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of them is that adjacent house原创 2016-03-09 16:25:32 · 355 阅读 · 0 评论 -
Symmetric Tree
recursively/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class So原创 2016-03-09 17:58:35 · 394 阅读 · 0 评论 -
常用树
二叉查找树 平衡树 2-3-4树 B树 B+树一、二叉查找树每个节点都大于其左子女的值,小于其右子女的值。(1)Node类 value 左子女的引用 右子女的引用(2)BST类 root节点(3)contains(value) 判空 与根节点进行比较,如果value更小则在左子树递归比较,如果value更大则在右子树递归比较;(4)findMin和f...原创 2018-02-10 01:50:07 · 241 阅读 · 0 评论 -
仅用递归和栈操作逆序一个栈
1 根据结果推测代码 | 3 | | 1 | ----- -----(A) | 2 | => (B) | 2 | ----- ----- | 1 | | 3 | ----- -----根据【递归栈】返...原创 2018-02-27 00:00:55 · 206 阅读 · 0 评论 -
倒排索引
见其名知其意,有倒排索引,对应肯定,有正向索引。正向索引(forward index),反向索引(inverted index)更熟悉的名字是倒排索引。在搜索引擎中每个文件都对应一个文件ID,文件内容被表示为一系列关键词的集合(实际上在搜索引擎索引库中,关键词也已经转换为关键词ID)。例如“文档1”经过分词,提取了20个关键词,每个关键词都会记录它在文档中的出现次数和出现位置。1. 正...转载 2018-02-13 00:51:39 · 334 阅读 · 0 评论 -
带权重的随机Java实现
题目淘宝里如果按照1-5星的店面,从五家店里一共推送出10个同一类产品,都是随机推送,但是最后大量的随机测试后,要保证五颗星的店家推送的商品数量大概是一颗星店家推送的商品数量的五倍,且不能破坏其他概率输出。分析这就是一个带权重的随机题。 1星店铺的权重是1,2星店铺的权重是2,……,5星店铺的权重是5。使用java.util.Random.nextInt(int ...原创 2018-03-24 01:15:08 · 2888 阅读 · 0 评论 -
海量数据处理
1、 海量日志数据,提取出访问次数最多的IP 2^10 = 1024 = 1k 千 2^20 = 1M 百万 2^30 = 1G 十亿 2^32 = 4G传统方法:分治 + Hash(1)一行一行处理日志,提取出IP,并对IP进行Hash取1024的模,也就是将 2^32 = 4G 个IP 分散到 1024 个小文件中,每个文件中包...原创 2018-03-27 14:23:01 · 363 阅读 · 0 评论 -
简单排序算法
插入排序、希尔排序、选择排序、归并排序。插入排序等时间复杂度为O(N^2),任何通用的排序算法的时间复杂度都是O(N Log N)。一、插入排序import java.util.Arrays;public class App { public static void main(String[] args) { int[] testArray = {...原创 2018-03-27 19:40:54 · 522 阅读 · 0 评论 -
快排和堆排序
一、堆排序5.1 堆的定义用数组保存效率高,第 i 个节点保存在下标为 i 的位置,也就是 arry[0]空着。第 i 个元素的左节点在 2 * i,右节点在 2 * i + 1。一个节点的父节点在 i / 2 位置。以一个size变量记录堆的大小。5.2 堆的基本操作5.2.1 提取最大元素return array[1]5.2.2...原创 2018-03-27 23:31:32 · 678 阅读 · 0 评论 -
字典树-Trie树
一、概念字典树,又称为单词查找树,Tire数,是一种树形结构,它是一种哈希树的变种。利用字符串的公共前缀来减少查询时间,最大限度的减少无谓的字符串比较。1.1 基本性质根节点不包含字符,除根节点外的每一个子节点都包含一个字符从根节点到某一节点。路径上经过的字符连接起来,就是该节点对应的字符串每个节点的所有子节点包含的字符都不相同1.2 特性1)根节点不包...原创 2018-03-28 14:17:24 · 594 阅读 · 0 评论 -
Power of Three
Given an integer, write a function to determine if it is a power of three.Follow up: Could you do it without using any loop / recursion?public class Solution { public boolean isPowerOfThree(int n)原创 2016-03-08 11:12:36 · 250 阅读 · 0 评论 -
Ugly Number
Write a program to check whether a given number is an ugly number.Ugly numbers are positive numbers whose prime factors only include 2, 3, 5. For example, 6, 8 are ugly while 14 is not ugly since it in原创 2016-03-07 18:29:59 · 282 阅读 · 0 评论 -
Climbing Stairs
You are climbing a stair case. It takes n steps to reach to the top.Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?利用递归的思想:逆向思想。如果你想上到第n个台阶,有几种可能?答案是,2种原创 2016-03-07 18:02:42 · 324 阅读 · 0 评论 -
计算后缀表达式
通过控制台输入后缀表达式,可以进行浮点数的加减乘除四则运算数字与符号之间用空格隔开一行代表一次运算默认输入的后缀表达式一定是正确的代码:package stack;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.math.BigDe原创 2016-03-05 01:11:50 · 515 阅读 · 0 评论 -
List (迭代器)
1 List的迭代遍历是List中最常用的操作。说到遍历,就不得不提Java里的迭代器了。由于Java中数据容器众多,而对数据容器的操作在很多时候都具有极大的共性,于是Java采用了迭代器为各种容器提供公共的操作接口。使用Java的迭代器iterator可以使得对容器的遍历操作完全与其底层相隔离,可以到达极好的解耦效果。所以,我们不光要学会怎么使用迭代器,更重要的是,它是一个很好的例子,可以去体会J原创 2016-03-04 15:05:15 · 1526 阅读 · 0 评论 -
中缀转后缀
当读到一个操作数时,立即将它放到输出中。操作符则不立即输出,放入栈中。遇到左圆括号也推入栈中。如果遇到一个右括号,那么就将栈元素弹出,将符号写出直到遇到一个对应的左括号。但是这个左括号只被弹出,并不输出。在读到操作符时,如果此时栈顶操作符优先性大于或等于此操作符,弹出栈顶操作符直到发现优先级更低的元素位置。除了处理)的时候,否则决不从栈中移走”(”。操作符中,+-优先级最低,()优先级最高。如原创 2016-03-05 02:45:12 · 620 阅读 · 0 评论 -
异或运算的神奇运用
转自:http://www.physixfan.com/archives/563/Xor运算是位运算的一种,和And、Or运算类似,假如a、b都是布尔变量,则a Xor b被定义为:a、b相异则为真(所以中文名字叫做异或),a、b相同则为假。其真值表为:1 Xor 0 = 10 Xor 1 = 11 Xor 1 = 00 Xor 0 = 0众所周知,位运算也可以用于两个数之间,其定义就是把这两转载 2016-03-05 13:05:37 · 5059 阅读 · 0 评论 -
Nim Game
You are playing the following Nim Game with your friend: There is a heap of stones on the table, each time one of you take turns to remove 1 to 3 stones. The one who removes the last stone will be the原创 2016-03-05 13:38:39 · 451 阅读 · 0 评论 -
数组实现stack
package stack;import java.util.EmptyStackException;public class MyStack<E> { //Stack 的数组实现 private int CAPACITY; private Object[] theArray; private int topOfStack; public MyStack()原创 2016-03-05 15:14:14 · 501 阅读 · 0 评论 -
优化幂运算
转自:http://blog.csdn.net/zhutulang/article/details/7515772计算一个整数的幂 X^N 的常见算法是使用 N-1 次乘法自乘。然而我们可以找到更好的算法。可以应用这样一种递归算法:如果 N 是偶数,有X^N=X^(N/2) * X^(N/2), 如果 N 是奇数,则有 X^N =X^[(N-1)/2] * X^[(N-1)/2] * X 。为了说转载 2016-03-05 16:03:51 · 1081 阅读 · 0 评论 -
Maximum Depth of Binary Tree
Given a binary tree, find its maximum depth.The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node./** * Definition for a binary tree node.原创 2016-03-06 00:28:26 · 313 阅读 · 0 评论 -
Valid Anagram
Given two strings s and t, write a function to determine if t is an anagram of s.For example, s = “anagram”, t = “nagaram”, return true. s = “rat”, t = “car”, return false.Note: You may assume the s原创 2016-03-06 17:02:44 · 333 阅读 · 0 评论 -
Excel Sheet Column Number/Excel Sheet Column Title
Excel Sheet Column NumberRelated to question Excel Sheet Column TitleGiven a column title as appear in an Excel sheet, return its corresponding column number.For example: A -> 1 B -> 2 C ->原创 2016-03-06 18:40:45 · 399 阅读 · 0 评论 -
Contains Duplicate
Given an array of integers, find if the array contains any duplicates. Your function should return true if any value appears at least twice in the array, and it should return false if every element is原创 2016-03-06 18:48:39 · 264 阅读 · 0 评论 -
Reverse Linked List
Reverse a singly linked list.Hint: A linked list can be reversed either iteratively or recursively. Could you implement both?1 iteratively原本的链表如果是这样的话:1 --> 2 --> 3 --> 4 --> 5我们要做的就是:1 <-- 2 <-- 3 <-原创 2016-03-06 21:21:05 · 317 阅读 · 0 评论 -
Roman to Integer/Integer to Roman
1 Roman to IntegerGiven a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999.首先,想做出这道题得了解一下罗马数字。罗马数字有如下符号:I(1)V(5)X(10)L(50) C(100)D(500)M(100原创 2016-03-07 14:22:05 · 445 阅读 · 0 评论 -
Number of 1 Bits
1 Java位运算public class Test { public static void main(String[] args) { // 1、左移( << ) // 0000 0000 0000 0000 0000 0000 0000 0101 然后左移2位后,低位补0:// // 0000 0000 0000 0000 0000 00原创 2016-03-07 16:20:28 · 389 阅读 · 0 评论 -
后缀树
后缀树,就是把一串字符的所有后缀保存并且压缩的字典树。相对于字典树来说,后缀树并不是针对大量字符串的,而是针对一个或几个字符串来解决问题。比如字符串的回文子串,两个字符串的最长公共子串等等,后面应用会说。一、建立后缀树比如单词banana,它的所有后缀显示到下面的。1代表从第一个字符为起点,终点不用说都是字符串的末尾。 以上面的后缀,我们建立一颗后缀树。如下图,为了方便看到后缀...原创 2018-03-28 15:59:16 · 1812 阅读 · 0 评论