
Algorithm
wuwh无非
这个作者很懒,什么都没留下…
展开
-
Java递归实现字符串的倒序输出
public class StringUtil { public static StringBuilder reverse(StringBuilder target,StringBuilder result,int index) { if (index<target.length()) { result = reverse(target, result, index+1).appen原创 2016-03-04 17:56:34 · 4254 阅读 · 2 评论 -
扑克牌重排问题
问题描述:手上有13张牌,从上往下依次做如下操作:第1张牌放桌上,第2张挪到手牌的最下面,第3张叠在桌上,第4张挪到手牌的最下面...一直重复上述过程,直至手上所有的牌都叠在桌上。叠在桌上的牌,从下往上的次序依次是1、2、3...13要求-还原操作之前,手牌的次序。算法分析:手上的牌,从上到下的次序,依次编号A1、A2、A3...A13,挪到桌上之后的次序:A8、A12、A4...原创 2018-05-09 12:09:46 · 872 阅读 · 0 评论 -
向右、向下排序过的矩阵,找元素问题
一个m行*n列的矩阵,每行从左至右递增顺序排列,每列从上至下递增顺序排列...设计一个时间复杂度最低的算法,在矩阵中查找某个值是否存在,如果存在,输出该元素在矩阵中的位置示例图:算法分析:根据此矩阵元素的排列特性可知-》从矩阵的右上角开始遍历,取当前遍历到的元素的横坐标为i,纵坐标为j,当前值array[],需要查找的值为targetif array[i][j]=target -...原创 2018-04-17 13:18:08 · 415 阅读 · 0 评论 -
Java递归实现字符串全排列
public class AllStrings { public static void main(String[] args) { AllStrings as = new AllStrings(); char []chs={'a','c','d'}; System.out.println("chs的全排列如下:"); as.getAllStrings(chs, 0); }原创 2016-10-08 15:20:54 · 829 阅读 · 0 评论 -
动态规划算法--切钢条问题
算法导论中阐释动态规划算法的第一节,就是钢条切割问题:java代码简单实现了一下:package cms.open.itPlatform.algorithm;public class DynamicPlan { public static void main(String[] args) { int []p = {-9999,1,5,8,10,13,16,17,22,原创 2016-10-29 15:19:32 · 964 阅读 · 0 评论 -
堆排序
二叉堆:是被完全填满的二叉树,唯一的例外是在最底层。二叉堆的应用范围:最优队列(最小堆)、堆排序(最大堆)内部需要用到的数据结构为数组,并且为了方便处理,一般从数组下标index=1开始填充。需要有以下几个方法:1. insertNode往最大堆插入一个节点2.deleteMax删除最大堆中最大的元素并返回3.build_max_heap根据一个无序数组构造一个最大原创 2016-10-04 20:23:57 · 489 阅读 · 0 评论 -
字符串以单词为单位进行反转,并且必须保留原有分隔符及其个数
一个字符串如:I like China very much !~要求,字符串以单词为单位进行反转,并且必须保留原有分隔符及其个数例如:上述字符串反转后为:!~ much very China like I思路:1. 遍历字符串,将字符串切割成两个ArrayList,一个Integer类型的intList保存splitSymbol的个数原创 2016-09-25 15:16:59 · 1449 阅读 · 0 评论 -
带负数的数列,求解和最大的相邻子序列之三:穷举法
还是分成两步:1. 把所有相邻子序列放在一个ArrayList-->sumArr中2. 遍历sumArr,找最大值此问题之前两种算法的时间复杂度都为O(n),穷举法的时间复杂度为O(n^2)具体代码如下:package base.algorithm;import java.util.ArrayList;import java.util.HashMap;impor原创 2016-09-25 12:05:16 · 647 阅读 · 0 评论 -
带负数的数列,求解和最大的相邻子序列之二:代码清晰
程序分两步来实现:1. getMaxOfAllMinus(arr)----》遍历一遍数组,记录数组的最大值: 1.1 如果全为负数,则返回最大值max,下标pos,allMinus=true 1.2 如果碰到正数,则直接退出循环,返回allMinus=false2. 如果第一步allMinus=false,则走接下来的逻辑 getMaxSumOver0原创 2016-09-25 11:20:44 · 645 阅读 · 0 评论 -
带负数的数列,求解和最大的相邻子序列之一:性能最佳
package base.algorithm;import java.util.HashMap;import java.util.Map;public class MaxSub { public static void main(String[] args) { double []arr={-1,-0.5,1,-100,1000,-800,-201,100,-80,990,-200原创 2016-09-25 10:05:35 · 554 阅读 · 0 评论 -
找出大数组array中第k大的元素(要求时间复杂度O(n))
具体的代码实现:import java.util.Stack;/** * @author yixin.fso.wuwh * @date createTime:2016年3月6日 上午12:23:14 */public class KthBiggest { public static int find(int[]array, int k) { //定义一个比k大1长度的临时数组原创 2016-03-06 14:11:45 · 2391 阅读 · 0 评论 -
字符串的最长回文子串问题
解题的具体思路都有相应注释,所以直接上代码public class Palindrome { public static void main(String[] args) { Palindrome p = new Palindrome(); System.out.println(p.getMost("")); //0 System.out.println(p.getMost("1原创 2016-10-08 23:23:26 · 385 阅读 · 0 评论 -
Java 数组构建二叉树
二叉树ADT(abstract data type):二叉树节点类:class TreeNode{ int value; TreeNode left; TreeNode right; public TreeNode(int paraValue) { this.value = paraValue; } }二叉树类:public cl原创 2016-02-23 19:01:55 · 7151 阅读 · 4 评论 -
Java 二叉树广度优先遍历
广度优先遍历需要用的辅助数据结构为:队列private void levelOrderTraversalNoRecursive() { if (root==null) { System.out.println("empty tree"); } ArrayDeque queue = new ArrayDeque(); queue.add(root); w原创 2016-02-23 19:03:56 · 724 阅读 · 0 评论 -
Java 递归形式深度优先遍历二叉树
public void depthOrderTraversalWithRecursive() { depthTraversal(root); } private void depthTraversal(TreeNode tn) { if (tn!=null&&!tn.equals(null)) { System.out.print(tn.value+" ");原创 2016-02-23 19:05:01 · 1632 阅读 · 1 评论 -
Java 非递归方式深度优先遍历二叉树
非递归深度优先遍历需要用到的辅助数据结构为:栈(stack)public void depthOrderTraversalNoRecursive() { if (root==null) { System.out.println("根节点为空"); } else{ ArrayDeque stack = new ArrayDeque(); stack.push原创 2016-02-23 19:06:55 · 1950 阅读 · 2 评论 -
Java邻接表表示加权有向图,附dijkstra最短路径算法
图这种adt(abstract data type)及相关的算法,之前一直是我未曾涉足过的领域。主要是作为一个小测试,在平常的工作中也用不着,就算面试,至今也未曾碰到过相关考题。但是前几天,原公司的小美女谈到面试过程中就碰到一题:从A到B,有多条路线,要找出最短路线,应该用哪种数据结构来存储这些数据。等等,这不是显然的考查图论的相关知识了么,1.图的两种表示方式原创 2016-07-22 15:41:58 · 7378 阅读 · 5 评论 -
统计java代码文件的代码行数(空行、注释不能计数)
Java文件中会有两种注释方式:// /*...*/所以代码要能去除以上两种注释风格的代码,同时不能包含空行...具体代码实现如下:/** * @author wuwh * @return result=codeLineNumber of javaFile * @Param javaFile is target file need stating. *原创 2016-03-06 00:16:13 · 2254 阅读 · 0 评论 -
算法题积累
1. 输入一个字符串,校验:字符串中的括号是否都是成对闭合状态。2. 输入整数n,求:n+n*10+n+...[n*10^(n-1)+...n](n取值2-9)3. 两个长度分别为m,n从小到大排序过的整型数组,设计一个时间复杂度为O(n)的算法,把两个数组合并成从小到大排序,长度为m+n的数组算法分析:分别从头至尾遍历两个数组a,b,假设两个数组当前下标分别为a_cur_inde...原创 2018-05-31 18:39:46 · 296 阅读 · 0 评论