![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构
文章平均质量分 86
treemanfm_2010
这个作者很懒,什么都没留下…
展开
-
求解斐波拉契数列的几种算法
斐波纳契数列(Fibonacci Sequence),在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)。 求解Fibonacci第N项的值有几种方法,本文详细写出几种算法的实现,并验证算法的执行时间。1、递归法 这是一种最直接的方法,从他的定义中可以直接得出,代码也很简单,如下...2014-04-12 20:09:28 · 420 阅读 · 0 评论 -
判断链表是否相交的几种算法
这个是《编程之美》里面的一个题目,给出两个单项链表的头指针,h1、h2判断这2个链表是否相交? 【解法一】直观的想法 循环遍历h1的每一个节点,判断是否存在一个节点在h2中,由于链表无法随机访问,每次查找需要对链表h2遍历最多length(h1)次,因此算法的时间复杂度是O(length(h1)*length(h2)),显然这个方法很耗时间。 【解法二】利...原创 2014-04-12 22:57:14 · 379 阅读 · 0 评论 -
如何检查一个单向链表上是否有环
1, 最简单的方法, 用一个指针遍历链表, 每遇到一个节点就把他的内存地址(java中可以用object.hashcode())做为key放在一个HashMap中. 这样当HashMap中出现重复key的时候说明此链表上有环. 这个方法的时间复杂度为O(n), 空间同样为O(n)。2, 使用反转指针的方法, 每过一个节点就把该节点的指针反向,如果单链表存在环,那么遍历指针会回到头节点,可以...2014-04-13 16:27:50 · 137 阅读 · 0 评论 -
数据结构应用回顾之Stack(一) 数制转换
栈就是一种可以实现“先进后出(或者叫后进先出)”的线性数据结构,是普通线性结构的一个子集。他的特殊性在于他的操作受限,他只能够在表尾进行插入和删除操作的线性表,是数据“后进先出LIFO”,last in first out。 本文简单的实现了stack的基本操作,并写了一个数制转换的代码。 stack 代码 package com.xx.data...2014-04-14 12:50:53 · 248 阅读 · 0 评论 -
数据结构应用回顾之Stack(二) 迷宫问题
迷宫问题,一般采用回溯法,利用stack节点探测,算法复杂度O(n^2),好像采用队列也可以实现,下片日志再使用队列试试。 package com.xx.dataStructure.stack;enum Direction { east, south, west, north, nothing}class Position { int x; int...2014-04-14 16:30:31 · 153 阅读 · 0 评论 -
数据结构应用回顾之递归(一) N皇后问题
问题: 求解N皇后问题的所有可能的解 package com.xx.dataStructure.stack;//求解N皇后问题的所有解public class Queen { private int solution = 0; private int n; public Queen(int n){ assert(n > 0)...2014-04-15 12:23:24 · 121 阅读 · 0 评论 -
数据结构应用回顾之Stack(三) N皇后问题 非递归实现
N皇后问题使用stack的非递归实现 package com.xx.dataStructure.stack;class Point { int x; int y; int value; Point(int x ,int y){ this(x,y,0); } Point(int x ,int y,int value){ this.x...2014-04-15 22:56:09 · 163 阅读 · 0 评论 -
数据结构应用回顾之串(一) 常见的字符串运算
常见的字符串运算的各种算法:1、字符串的逆转2、给定字符串s1,s2判断s2是否是s1的子串3、给定字符串s1,s2求解s1和s2的最长公共子序列4、给定字符串s1,s2,删除s1中所有s2的子串5、字符串的通配符匹配6、求解字符串s中符合指定规则的子串数量 ...2014-04-17 09:51:54 · 189 阅读 · 0 评论 -
数据结构应用回顾之杨氏矩阵
Young氏矩阵 一个m*n的Young氏矩阵是一个m*n的矩阵,其中每一行的数据都从左到右排序,每一列的数据都从上到下排序。Young氏矩阵中会有一些∞数据项,表示不存在的元素。Young氏矩阵可以存放m*n个有限的数。常见Young氏矩阵的相关操作包括:1、向一个不满的Young氏矩阵中插入一个元素x,并保持Young氏矩阵的性质2、根据一个数组,构建一个m*n的Young氏...2014-04-23 14:15:29 · 152 阅读 · 0 评论