自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 算法学习:递归分治

递归 定义:程序调用自身的编程技巧称为递归( recursion) 条件: 1、递归需要有边界条件(一般写在最前面) 2、递归前进段。当边界条件不满足时,递归前进 3、递归返回段,当边界条件满足时,递归返回。 递归代码的一般代码流程: 伪代码示例: 递归的缺点: 递归算法解题相对常用的算法如普通循环等,运行效率较低。因此,应该尽量避免使用递归,除非没有更好的算法或者某...

2019-10-13 23:28:40 350

原创 算法学习:树二叉树二叉搜索树

1、树的含义: 树状图是一种数据结构,它是由n(n>=1)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点: 每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树。 1)每个元素称为结点(node); (2)有一个特定...

2019-10-11 23:45:02 153

原创 算法学习:广度优先搜索&深度优先搜索

广度优先搜索(BFS ): 宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。 特点:从算法的...

2019-10-10 23:06:08 402

原创 算法学习:字典树

字典树 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。 性质 根节点不包含字符,除根节点外每一个节点都只包含一个字符; 从根节点到某一节点,路径上经过的字符连接起来,为该...

2019-09-28 18:30:55 119

原创 算法学习:位运算

位运算 程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。 位运算符号的解析 异或的常用操作 重要的位运算符 优点: 1、直接对整数在内存中的二进制位进行操作 2、处理速度快 案例: 编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’的个数编写一个函数,输入是一个无符号整数,返回其二进...

2019-09-28 16:58:14 144

原创 算法学习:排序

排序 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面。一个优秀的算法可以节省大量的资源。在各个领域中考虑到数据的各种限制和规范,要得到一个符合实际的优秀算法,得经过大量的推理和分析。 常见的排序算法及复杂度的比较 排序算法的评价标准 ...

2019-09-28 16:40:47 131

原创 算法学习:查找

顺序查找 最基本的查找技术,它的查找过程是:从一个表中的第一个或者最后一个记录开始,逐个进行记录的关键字和给定的值是否相等,若相等,则查找成功。 时间复杂度(o(n)),缺点:当数组数据量很大的时候,查找的效率很低下 public static int findIndex(int[] arr,int target) { if (arr==null || arr.length=...

2019-09-28 16:33:50 96

原创 算法学习:哈希表

散列表:(Hash table,也叫哈希表),是根据键(Key)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表。 散列函数: (HashFunction):若关键字为k,则其值存放在f(k)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系...

2019-09-28 16:24:21 142

原创 算法学习:栈与队列

1、数据结构:栈 栈是仅在仅在表尾进行插入和删除的线性表,也成为先进后出的线性表,把允许插入和删除的一端成为栈顶,另一端为栈底。 栈的应用: 1、递归:递归过程退回的顺序是它执行顺序的逆序,在退回过程中,可能需要执行某些动作,包括恢复在前行过程中保存的数据,这样的结构很适合用栈来实现; 2、四则表达式运算,中缀表达式转换为后缀,函数嵌套使用,已访问页面的历史记录。 实现:java中的St...

2019-09-28 11:07:29 130

原创 算法学习:链表

1、数据结构:链表 是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度。 单向链表 链表中最简单的一种是单向链表,它包含两个域,一个信息域和一个指针域。这个链接指向列表中的下一个节点,而最后一个节点则指向一个空值。 一个单向链表的节点被分成两个部...

2019-09-18 13:22:06 173

原创 算法学习:数组

一、数组概念: 所谓数组,是有序的元素序列,在内存中是顺序存储结构,若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按无序的形式组织起来的一种形式。[1]这些无序排列的同类数据元素的集合称为数组。 相关操...

2019-09-12 23:49:15 168

原创 算法学习:动态规划之实战篇

动态规划的基础篇:https://blog.csdn.net/weixin_44625138/article/details/100188659 实战分析 一、leetcode题目: 爬楼梯 假设你正在爬楼梯。需要n阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定n是一个正整数。 在此处给出两种解法: 1、解法一:将子问题...

2019-09-03 22:59:10 237

原创 算法学习:动态规划基础篇

动态规划是什么? 动态规划(英語:Dynamic programming,简称DP)是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题[1]和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。 动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即子...

2019-09-02 19:47:28 180

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除