![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构和算法
练习算法,扎实编程基本功
mariner_zp
不信命的人本事很大
展开
-
动态规划——最长上升子序列问题
问题描述:一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, ..., aN),我们可以得到一些上升的子序列(ai1, ai2, ..., aiK),这里1 <= i1 < i2 < ... < iK <= N。比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。这些子序列中最长的长度是4,比如子序列(1, 3,原创 2020-06-01 10:59:16 · 2764 阅读 · 0 评论 -
动态规划——数字三角形问题
题目: 在数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或 右下走。只需要求出这个最大和即可,不必给出具体路径。三角形的行数大于1小于等于100,数字为 0 - 99。 输入格式:5 //表示三角形的行数 接下来输入三角形 7 3 8 8 1 0 2 7 4 44 5 2 6 5要求输出最大和。思路:MaxSum(i,j):从第i行j列到底边的最大数字之和从最后一行开始递推,MaxSum(n,j)=D(原创 2020-05-28 19:09:26 · 758 阅读 · 0 评论 -
分治思想——归并排序
分治的基本思想:将原任务分成几个小任务(通常是两个)来分别完成,然后再将完成的几个任务经过处理后实现最终任务的完成。归并排序的原理:1.将待排序的数组分成两半2.将数组的前一半和后一半分别排序。3.将两半归并到新的有序数组,然后再拷贝回原来的数组。排序完成。代码:#include<iostream>using namespace std;void merge(int a[], int s, int m, int e, int tmp[]) { //将a[]中排好序原创 2020-05-27 18:24:25 · 162 阅读 · 0 评论 -
STL 排序容器multiset和set用法详解
前言:希望在大量数据中进行的元素增加、删除、查找都在log(n)复杂度内完成,排序+二分查找显然不可以,因为新加入数据就要进行重新排序。而使用“平衡二叉树”数据结构存放数据就可以实现元素的增加、删除、查找都在log(n)复杂度完成,在STL中体现为以下四种排序容器:multiset、set、multimap、map。multiset:头文件:#include<set>用法:multiset<T>st;定义了一个multiset类型变量st,st里面可以存放T..原创 2020-05-09 12:06:03 · 1213 阅读 · 0 评论 -
C++ accmulate的用法
accumulate定义在#include中,作用有两个,一个是累加求和,另一个是自定义类型数据的处理1.累加求和int sum = accumulate(vec.begin() , vec.end() , 42); accumulate带有三个形参:头两个形参指定要累加的元素范围,第三个形参则是累加的初值。accumulate函数将它的一个内部变量设置为指定的初始值,然后在此初值上累加...转载 2020-05-08 13:51:50 · 1119 阅读 · 0 评论 -
数据类型 及大小
为什么不直接在本地编译器上直接跑一下呢?原创 2019-09-15 11:47:30 · 135 阅读 · 0 评论 -
STL 排序容器multimap和map用法详解
multimap容器可以对里面的元素按照关键字排序,使用起来非常方便,其基本结构如下:multimap<T1,T2> mpmultimap里面的元素都是都是以pair形式出现的,并且只能是两个成员变量,mp里的元素类型如下:struct { T1 first; //关键字 T2 second; //值 };multimap中的元素按照fi...原创 2020-05-09 18:07:18 · 998 阅读 · 0 评论 -
LeetCode刷题第二天:从根到叶的二进制之和+平衡二叉树
1022.从根到叶的二进制之和题目描述:给出一棵二叉树,其上每个结点的值都是0或1。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。例如,如果路径为0 -> 1 -> 1 -> 0 -> 1,那么它表示二进制数01101,也就是13。对树上的每一片叶子,我们都要找出从根到该叶子的路径所表示的数字。以10^9 + 7为模,返回这些...原创 2020-04-16 01:53:20 · 165 阅读 · 0 评论 -
二叉树的存储和遍历
前导知识:结点的层次:规定根结点在1层, 其它任一结点的层数是其父结点的层数加1。树的深度:树中最大的结点层次。(从根节点往下)二叉树定义:一个有穷的结点集合,这个集合可以为空;若不为空,则它是由根结点和称为其左子树和有子树的两个不相交的二叉树组成。二叉树具有5种基本形态:二叉树的几个重要性质:(1)一个二叉树第i层的最大结点数为:(2)深度为k的二叉树有的最大结点...原创 2020-04-15 20:47:52 · 226 阅读 · 0 评论 -
LeetCode刷题第一天:爬楼梯+N皇后
70.爬楼梯一开始写的反向递归超时了:class Solution {public: int climbStairs(int n) { if (n<=2) { return n; } else { return climbStairs(n-1)+...原创 2020-04-13 20:41:48 · 125 阅读 · 0 评论