Algorithms
Algorithms playground for common questions solved in Java syntax.
This repository contains my solution for some common algorithms. I've created this repository to learn about algorithms and improve solving different common computer science problems. I'll try to add more solutions if I have time :)
Each solved problem has a program written in Java. Every solution is tested and some problems contains more than one solution with different implementations.
You can check the solution executing tests inside tests directory. Some of this problems have been resolved using TDD.
Problems
Arrays
Commons
- Hex conversion utility - 进制转换工具
- Majority number - 大多数,超过一半的数
- Maximum product - 最大乘积
- TOPK algorithm - TOPK算法
Graph
- Dijkstra algorithm - 迪杰斯特拉算法
- Directed graph depth first and breadth-first by adjacency table - 邻接表实现有向图深度优先和广度优先
- Directed graph depth first and breadth-first by adjacency matrix - 邻接矩阵实现有向图深度优先和广度优先
- Floyd warshall - 弗洛伊德算法
- Kruskal - 克鲁斯卡尔算法
- Prim - 普里姆算法
- Undirected graph depth first and breadth-first by adjacency table - 邻接表实现无向图深度优先和广度优先
- Undirected graph depth first and breadth-first by adjacency matrix - 邻接矩阵实现无向图深度优先和广度优先
Matrix
Multithread
Queue
Similarity
Sorting Algorithm
Chinese to Spelling
Stack
- Analyzing brackets match - 判断括号是否匹配
- Check stack sequence - 检查栈的弹出序列
- Infix expression turn to postfix expression - 中缀表达式转后缀表达式
- Maintain a minimum number of stacks - 保持最小数的栈
- Postfix expression evaluation - 后缀表达式求值
Strings
- Binary search - 二分查找
- Combination - 组合
- Jaccard similarity coefficient - 杰卡德相似度系数
- Longest common subsequence - 最长公共子序列
- Longest common substring 1 - 最长公共子串1
- Longest common substring 2 - 最长公共子串2
- Levenshtein distance - 编辑距离
- Longest decreasing subsequence - 最长递减子序列
- Pattern string match - 模式串查找
- Permutation - 全排列
- Reverse string - 反转字符串
- Lexicographical - 字典序排序
- Manacher algorithms - 最长回文字符串
Trees
- Depth-first traversal of a binary tree - 二叉树的深度优先遍历
- Get all path by given a number - 二叉树中结点值的和为输入整数的所有路径
- Level binary tree traversal - 二叉树的层次遍历
- Binary tree traversal - 二叉树的遍历
- Verify sequence Of binary search tree - 验证二叉搜索树序列
Design Patterns
- Deep clone - 深拷贝
- Singleton - 单例
- Static proxy - 静态代理
- JDK dynamic proxy - JDK实现动态代理
- CGLib dynamic proxy - CGLib实现动态代理
Author
- Developed By Xu Wang
License
Copyright 2015 Xu Wang
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.