算法
算法C++
dd_cs_ccc
这个作者很懒,什么都没留下…
展开
-
Leetcode-99-恢复二叉搜索树-Recover Binary Search Tree
Leetcode-99-重建BST树题目描述You are given the root of a binary search tree (BST), where exactly two nodes of the tree were swapped by mistake. Recover the tree without changing its structure.Follow up: A solution using O(n) space is pretty straight forward.原创 2021-05-03 17:09:05 · 169 阅读 · 0 评论 -
使用CPP刷算法题几个需要注意的点
使用CPP刷算法题几个需要注意的点 靠发博客的成就感督促自己学习……STL中的pop函数只能删除元素,没有返回值 举个例子,获取vector中的最后一个元素,并删除它。 int res = nums.back(); nums.pop_back();cpp在string的末尾添加字母 我所知道的是两种 string s; s = "abc"; s.push_back('s'); //method1 只能插入单个字符 void push_back(char c);原创 2021-05-03 15:18:28 · 199 阅读 · 0 评论 -
python实现二叉排序树的创建
二叉排序树的创建很简单,即选定根节点后,将所有小于根节点的放到他的左边,大于的放到右边,再迭代处理一手class BTNode: def __init__(self, data, left, right): self.data = data self.left = left self.right = rightclass BTree: def __init__(self, root): self.root = ro.原创 2020-09-01 17:00:10 · 712 阅读 · 0 评论 -
5行代码实现矩阵连乘方案选择
5行代码实现矩阵连成方案选择 # rd: the round of execution 5个矩阵只需要四个轮次的循环 # 测试用例 3*5 5*10 10*8 8*2 2*4 for rd in range(1, len(p) - 1): for i in range(1, len(p)-1): j = i + rd if j <= len(p)-1: table[i][j原创 2020-08-25 14:16:24 · 418 阅读 · 0 评论 -
排序算法性能分析及优化方案
排序算法性能分析及优化方案快排def getData(): """ :return: data整形数组 """ with open("number.txt", "r") as f: string = f.read() sdata = string.split(",") data = [int(i) for i in sdata] return datadef quickSort(left, righ原创 2020-08-24 23:48:14 · 605 阅读 · 0 评论 -
贪心&动态规划&回溯&分支限界,四种算法解决01背包问题,有流程图和总结
01背包问题直接copy就能当实验报告…问题说明 01背包是在M件物品取出若干件放在空间为W的背包里,每件物品的体积为W1,W2至Wn,与之相对应的价值为P1,P2至Pn。采取怎样的策略能使装入背包的价值最大。贪心算法算法思路 计算商品的单位质量价值,并对其进行排序,在不超过背包容量的情况下,选取单位质量价值从高往低装载流程图算法实现class Pack: def __init__(self, value, weight): self.value =原创 2020-08-24 23:14:01 · 10609 阅读 · 0 评论 -
DP最长子序列
DP最长子序列题意给出两个字符串,问最长公共子序列为多长(这里的公共子序列是只要求字符在字符串中出现的顺序,而不一定相邻)建立最优值的递推式不妨设两个子序列为str1和str2 ,table[i][j]表示公共子序列的长度, z[k]为公共序列如果str1[i] == str2[j],则table[i][j] = table[i-1][j-1] + 1根据最优子结构原理,...原创 2020-04-08 20:06:38 · 284 阅读 · 1 评论 -
图解DP数字三角形
数字三角形问题描述给定一个具有N层的数字三角形,从顶至底有多条路径,每一步可沿左斜线向下或沿右斜线向下,路径所经过的数字之和为路径得分,请求出最小路径得分。DP思路递推关系如下 trace = triangle[n]; for(int i = n-1; i >= 1; i--) for(int j = 1;j <= i; ...原创 2020-04-03 17:58:01 · 539 阅读 · 0 评论 -
快速排序原理与实现
快速排序1.算法原理快排的原理很简单,简而言之就是每次快排都是寻找一个基准数,然后将左右两边元素与基准元素对比,最后将基准数归位。这样一来,每次排序都会减小问题规模,进而提高排序的效率,算法复杂度O(n*log2 n)如下动图是以最右侧为基准值的演示效果:(动图演示)2.算法实现void quickSort(int left, int right, vector<int&...原创 2020-03-24 21:58:50 · 192 阅读 · 0 评论 -
欧几里得和拓展欧几里得算法
欧几里得和拓展欧几里得算法1.欧几里得算法⑴算法内容欧几里得算法又称辗转相除法,用于计算两个整数的最大公约数。gcd(a,b)=gcd(b,a(modb))gcd(a, b) = gcd(b, a (mod b))gcd(a,b)=gcd(b,a(modb))⑵下面给出证明:(首先规定:gcd为求解最大公约数, mod 是取余,符号" | "为整除)对于欧几里得算法的证明,...原创 2020-03-16 12:39:14 · 217 阅读 · 0 评论