数据结构与算法
CleMints
Attachment to Code
展开
-
十大经典排序算法-分析与C++代码实现
十大经典排序算法-分析与C++代码实现一、前言二、排序(Sorting)算法概念2.1排序算法定义2.2相关概念与对比三、十大经典排序算法原理、图解与代码实现3.1冒泡排序3.2选择排序3.3插入排序3.4希尔排序3.5归并排序3.6快速排序3.7堆排序3.8桶排序3.9计数排序3.10基数排序一、前言二、排序(Sorting)算法概念2.1排序算法定义排序在百度百科中的解释为:排序是...原创 2020-04-25 11:53:09 · 601 阅读 · 0 评论 -
由前序遍历、中序遍历重构二叉树
由前序遍历和中序遍历可以重构二叉树,通过给定的前序遍历(preOrder)和中序遍历数组(inOrder)。思路是:首先,在中序遍历中找到与前序遍历首元素相同的元素,然后,可以把前序遍历和中序遍历分割为四个数组,前序遍历的两个分割数组表示根结点左右子树的前序遍历;中序遍历的两个分个数组表示根结点左右子树的中序遍历,最后,通过递归的方式不断向下寻找根结点,直到所有结点分割完成。C++代码实现:#include<vector>using namespace std;struct Tre原创 2020-09-10 11:23:06 · 425 阅读 · 1 评论 -
Leetcode刷题Task03:双指针(C++)
双指针一、双指针的概念二、两类双指针方法三、对撞指针3.1 思想3.2 对撞指针的C++实现模板3.3 LeetCode相关例题3.3.1 两数之和四、快慢指针4.1 思想4.2 快慢指针的C++实现模板4.3 LeetCode相关例题4.3.1 环形链表4.3.1 环形链表 II一、双指针的概念在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(对撞指针)的指针进行扫描,从而达到相应的目的。双指针法可以充分使用了数组有序的特征,从而在某些情况下能够简原创 2020-08-28 16:25:16 · 224 阅读 · 0 评论 -
Leetcode刷题Task03:查找(C++)
查找(Search)一、查找的概念:二、C++ STL中实现查找常用的容器三、五种常用查找算法与C++实现:3.1 顺序查找(SequentialSearch)3.2. 二分查找(BinarySearch)3.3 树表查找(STSearch)3.4 斐波那契查找(FibonacciSearch)3.5 插值查找(InsertionSearch)四、C++实现LeetCode查找相关例题4.1 LeetCode290-单词规律一、查找的概念:查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查原创 2020-08-26 14:00:30 · 203 阅读 · 0 评论 -
Leetcode刷题Task02:动态规划算法(C++)
动态规划(Dynamic Programming,DP)一、概念二、思想或策略三、步骤四、DP适用的情况五、C++实现DP的一般模板六、C++实现LeetCode动态规划相关例题6.1 Leetcode5–最长回文子串6.2 Leetcode72–编辑距离七、总结一、概念百度百科中DP算法的概念为:动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程最优化的过程。20世纪50年代初,美国数学家贝尔曼(R.Bellman)等人在研究多阶段决策过程的优化问题时,提出原创 2020-08-21 18:45:39 · 437 阅读 · 0 评论 -
Leetcode刷题Task01:分治算法(C++)
分治(divide-and-conquer)算法一、概念二、思想或策略三、步骤四、分治适用的情况五、C++实现分治算法的一般模板六、C++实现LeetCode分治相关例题6.1 Leetcode50--Pow(x,n)6.2 Leetcode169--多数元素6.3 Leetcode53--最大子序和七、总结一、概念百度百科中分治算法的概念为:分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。即一种分目标完成原创 2020-08-19 15:24:14 · 851 阅读 · 0 评论