算法
主要包括数据结构与算法及相关题目
Lebronmini
这个作者很懒,什么都没留下…
展开
-
二叉树及相关题目
二叉树及相关题目一、树树是一种在实际编程中经常遇到的数据结构。它的逻辑很简单:除了根结点之外每个结点只有一个父结点;除了叶结点之外所有结点都有一个或多个子结点,叶结点没有子结点。父结点和子结点之间用指针链接。由于树的操作一般涉及大量的指针,因此一般与树有关的题目都稍显复杂。二、二叉树二叉树是树中最常见的一种。所谓二叉树也就是树的一种特殊结构,在二叉树中每个结点最多只能有两个子结点。一棵二叉树具有以下特点:每个结点最多有两棵子树,所以二叉树中不存在度大于2的结点;左子树和右子树是有顺序的,次序不原创 2020-09-27 17:25:52 · 673 阅读 · 0 评论 -
栈相关例题
栈相关例题解析一、栈的定义及常用操作栈:先进后出的数据结构,先进去的在底部,最后取出,后进去的在栈的顶部,最后被取出。栈的常用操作:s=Stack() 创建栈s.push(item) 将数据item放在栈的顶部s.pop() 返回栈顶部数据,并从栈中移除该数据s.peek() 返回栈顶部数据,但不移除s.size() 返回栈的大小s.isEmpty() 返回栈是否为空二、栈的相关例题解析问题1:包含m原创 2020-09-27 11:11:05 · 888 阅读 · 0 评论 -
链表介绍及题目练习
链表介绍及题目练习一、链表介绍链表实际上是线性表的链式存储结构,与数组不同的是,它是一组任意的存储单元来存储线性表中的数据,存储单元不一定是连续的,且链表的长度不是固定的,链表数据的这一特点使其可以非常方便地实现节点的插入和删除操作。链表的每个元素称为一个节点,每个节点都可以存储在内存中的不同位置,为了表示每个元素与后继元素的逻辑关系,以便构成“一个节点链着一个节点”的链式存储结构,除了存储元素本身的信息外,还要存储其直接后继信息,因此,每个节点都包含两部分,第一部分称为链表的数据域,用于存储元素本身原创 2020-09-18 15:52:20 · 194 阅读 · 0 评论 -
使用迭代实现全排列(Java实现)
之前遇到实现全排列这个问题,也是思考了好久,现在将学习的过程做一简单小结:一、无重复元素全排列无重复元素全排列即需要全排列的元素中没有重复的,这种情况使用递归算是比较简单一点,在这里主要以整数数组{1,2,3,4}为例,做一简单分析,如果需要对其他元素进行全排列,只需将里面的元素进行替换即可。使用递归进行实现全排列,主要的思想就是逐个固定,让后面的元素依次交换位置,最后实现全排列:1、一个数的全排列:只有本身这一种情况。2、两个数的全排列:如排列{1,2};第一步:将元素1放在位置0并固定,剩下原创 2020-09-07 17:28:45 · 568 阅读 · 0 评论 -
动态规划及相关例题
动态规划及相关例题一、定义动态规划算法是通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推(或者说分治)的方式去解决。动态规划与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留哪些有可能达到最优的局部解,丢弃其他的局部解。一次解决各子问题,最后一个子问题就是初始问题的解。二、动态规划适用情况如果要求一个问题的最优解(通常是最大值或者最小值),而且该问题能够转载 2020-09-01 19:05:39 · 178 阅读 · 0 评论 -
贪心算法及相关例题
贪心算法及相关例题一、基本概念所谓贪心算法是指,在对问题求解时,总是做出“在当前看来是最好的选择”。也就是说,不从整体最优上加以考虑,它所做出的仅仅是在某种意义上的局部最优解。不是对所有的问题都能得到整体最优解,选择贪心策略必须具备无后效性(即某个状态以后的过程不会影响以前的状态,只与当前状态有关)。所以,对所采用的贪心策略一定要仔细分析其是否满足无后效性。二、贪心算法的基本思路建立数学模型来描述问题;把求解问题分成若干个子问题;对每个子问题求解,得到子问题的局部最优解;把子问题的解局部原创 2020-08-20 19:21:50 · 747 阅读 · 0 评论