
数据结构
文章平均质量分 74
夏末的初雪
知乎id: 迷路森林
展开
-
在链表上实现单词统计
结点为WordNode,有两个域,分别是结点上存储的单词,结点出现的频度以及这个单词下一个出现的单词public class WordNode{ private int freq; private String word; private WordNode next; public WordNode(String word){ this.word = word; this.fr原创 2016-08-21 14:37:16 · 1387 阅读 · 0 评论 -
贪心算法举例分析
贪心算法和动态规划的不同之处在动态规划方法中每个步骤都要进行一次选择,但选择通常依赖于子问题的解。因此,我们通常以一种自底向上的方式求解动态规划问题,先求解较小的子问题,然后是较大的子问题。我们也可以自顶向下的求解,但需要备忘机制,当然,即使算法是自顶向下进行计算,我们仍然需要的先求解子问题在进行选择。在贪心算法中,我们总是做出当时看来最佳的选择然后求解生下的唯一的子问题。贪心算法进行选择原创 2016-10-30 16:08:56 · 1263 阅读 · 1 评论 -
DTW的java实现
在日常的生活中我们最经常使用的距离毫无疑问应该是欧式距离,但是对于一些特殊情况,欧氏距离存在着其很明显的缺陷,比如说时间序列,举个比较简单的例子,序列A:1,1,1,10,2,3,序列B:1,1,1,2,10,3,如果用欧氏距离,也就是distance[i][j]=(b[j]-a[i])*(b[j]-a[i])来计算的话,总的距离和应该是128,应该说这个距离是非常大的,而实际上这个序列的图像是十原创 2016-08-24 18:58:32 · 2500 阅读 · 0 评论 -
基于邻接矩阵的无向图的深度广度遍历实现
图的创建及深度广度遍历的代码实现,基于的是邻接矩阵,图这里是无向图,并且两个顶点之间有连接则邻接矩阵非零,如果没有连接则为零public class Graph { //图的邻接矩阵形式 private int[][] edges; private int num;//图的结点数量 private boolean[] visited ;//结点是否被访问过 private Verte原创 2016-08-29 18:47:35 · 1463 阅读 · 0 评论 -
基于邻接表的无向图的深度广度遍历实现
邻接表,无向图,深度、广度遍历,测试通过基本构建图的邻接表结构以及深度广度遍历public class ALGraph { AdjList[] vertices; int vexNum; int arcNum; boolean[] visited; public ALGraph(int vexNum,int arcNum){ this.vexNum = vexNum;原创 2016-08-30 11:48:00 · 2076 阅读 · 0 评论 -
常用的递归算法
public class Recurison1 { /** * @param args */ public static void main(String[] args) { String str1 = "abba"; /*System.out.print(judge(str1));*/ String str2 = "abbae"; /*System.out.prin原创 2016-08-30 17:50:17 · 863 阅读 · 0 评论 -
KMP、BM、Sunday等字符串匹配算法及实现
发现字符串的匹配完全要考虑全面,如果考虑的情况不足够全面,就很可能出现这个例子可以运行,下一个例子的就行不通,毕竟匹配可能遇到各种各样的情况。本着可以实现效果就可以的原则,编的代码也实在是不优美,BM参考了别人的代码,因为写的精炼,按照自己的思路来写,然后发现有的可以运行,有的就达不到相应的效果。主要实现了暴力字符串匹配、KMP、BM、Sunday四种原创 2016-08-28 18:25:20 · 1013 阅读 · 0 评论 -
面试中常用到机试题
题目一:连续重复的字符串进行字符串的压缩操作如wwweerqqqq输出则为3w2e1r4qpublic class Text3 { private static String str; public static void readIn(){ Scanner in = new Scanner(System.in); str = in.next(); System.ou原创 2016-10-22 22:15:42 · 510 阅读 · 0 评论 -
未解决的编程题,我会一直想的,直到想到
题目一:输入为01的二进制序列,对二进制序列进行切割,使得切割后转为10进制的各段加和的最大值最小如101101111001其实我就是想知道不同切割方案后各段的和的分布情况究竟是什么样子的题目二:2的i次幂+3的j次幂+5的k次幂的最小top15题目三:求一集合{1,2,3,4}的所有子集划分情况,总共有15种,分别有单元素{{1,2,3,4}}、双元素{{1}{2,3原创 2016-10-24 15:41:50 · 423 阅读 · 0 评论 -
动态规划算法举例解析(最大收益和最小损失选择)
在说动态规划的例子之前,先说明一下动态规划和分治算法的区别虽然两者都是通过组合子问题的解来求解原问题但是分治方法将问题划分为互不相交的子问题,递归的求解子问题再将它们的解组合起来求出原问题的解。而动态规划算法应用于子问题重叠的情况,即不同的子问题具有公共的子子问题,在这种情况下,分治算法会做许多不必要的工作,它会重复的求解这些子问题,尽管这些子问题都曾经计算过。而动态规划算法就聪明了很多,原创 2016-10-28 21:14:49 · 6822 阅读 · 0 评论 -
顺序表常用使用方法
复习了一些数据结构的东西,打算把常用的数据结构都实现一下,慢慢来,慢慢来顺序表是用一组地址连续的存储单元依次存储线性表的数据元素。这里一般考虑的是有序的顺序表。因为如果C语言实现这种数据结构可以使用指针,在JAVA中没有指针,用 对象,并且是用一种动态的数组ArrayList可以实现,但是没有用,增加内存方面不知道有什么比较好的解决方案。编码比较水,勤加练习~~public class原创 2016-08-20 14:06:29 · 763 阅读 · 0 评论 -
数据结构链表实现
主要实现了链表的增加、删除、查找结点,逆置链表,求两个链表的交集、并集和差集,以及对链表排序package SqList_Operator;import java.text.MessageFormat;public class LinkListTool { public LinkListTool(){ } public int getListLength(LinkLis原创 2016-08-21 13:55:59 · 299 阅读 · 0 评论 -
二分查找--查找重复有序数组中最左边的target
二分查找是在面试中经常会遇到的面试题,根据普通的二分查找还衍生出了二分查找的其他情况,比如有序数组中的目标出现多次,利用二分查找返回在最左边出现的目标值或者是最右边出现的目标值。 查找最左边出现的目标值public static int binarySearchLeft(int[] arr,int target){ if(arr==null||arr.length==0){原创 2017-10-06 16:08:10 · 3954 阅读 · 3 评论