算法
时间不会说谎shane
这个作者很懒,什么都没留下…
展开
-
简单易理解的BFS及DFS的Java实现
前言原文链接:https://blog.csdn.net/Gene1994/article/details/85097507BFS(广度优先遍历,Breadth First Search)及DFS(深度优先遍历,Depth First Search)是遍历树或图的两种最常用的方法。本文简单的讲解在面对树或者图的问题时,使用BFS及DFS解答题目时的思路及实现。BFS根据上图就可以很清晰的理解出BFS的概念,即一层一层的遍历。在使用BFS解决问题的时候最先想到的方式应该是队列(Queue,FIFO)转载 2020-05-17 17:44:49 · 204 阅读 · 0 评论 -
算法基础知识结构
这里面有10个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树;10个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。掌握了这些基础的数据结构和算法,再学更加复杂的数据结构和算法,就会非常容易、非常快作者:程序员吴师兄呀链接:https://www.zhihu.com/question/23148377/answer/907915556来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。.原创 2020-05-10 17:29:17 · 337 阅读 · 0 评论 -
自己实现一个栈(Java)
栈的特点:先进后出 LIFO思路:1、使用链表实现一个栈,便于扩容(不用考虑数组扩容场景),维护根节点和最后入栈的节点2、节点中维护pre指针,便于pop()时快速找到上一个节点package com.datastructure.stackqueue; /** * 实现一个栈,自定义栈,用链表实现,方便扩容 */public class DefineStack<T> { private Node<T> root; private Node<T原创 2020-05-09 23:02:05 · 221 阅读 · 0 评论 -
10个常用算法
0x01 二分法原理:二分法查找,也称为折半法,是一种在有序数组中查找特定元素的搜索算法。一般步驟:(1)确定该区间的中间位置K;(2)将查找的值T与array[k]比较。若相等,查找成功返回此位置;否则确定新的查找区域,继续二分查找。每一次查找与中间值比较,可以确定是否查找成功,不成功当前查找区间将缩小一半,递归查找即可。0x02 递归原理:一种通过重复将问题分解为同类的子问题而解决问题的方法典型例子:斐波那契数列描述:斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5,原创 2020-05-09 22:10:23 · 236 阅读 · 0 评论 -
算法知识结构简图
原创 2020-04-28 16:39:19 · 430 阅读 · 0 评论 -
java 简单算法练习
参考链接java 基础算法50提只选取了一部分来练手 /** * 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子, * 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? * 1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... * @param month * @...原创 2020-04-14 23:21:42 · 299 阅读 · 0 评论 -
通过位运算求一个集合的所有子集
Java没有自带的求一个集合的所有子集的方法,我们可以通过集合的子集规律来求。一个集合的所有子集等于2^该集合的长度。比如{c,b,a}的长度为3,这个集合的子集就有8个。这句话看起来很简单,但同时也隐含着高深的哲理。其实一个集合的所有集合,和2^该集合的长度这个数字有关。比如上面的例子,{c,b,a}的长度为3,则可以用0-7表示其所有子集。如下所示,改数字所对应的位置为1,则说明我需要这个...转载 2020-04-14 14:35:07 · 222 阅读 · 0 评论 -
正整数数组, 返回拼凑最大值
public static void macNum(int[] arry){ for(int i = 0; i < arry.length - 1; i++){ for(int j = 0; j < arry.length - 1 - i; j++){ int maxJ = Integer.valueOf...原创 2020-04-14 12:40:37 · 324 阅读 · 0 评论