
算法题
分类记录:递归,动态规划,贪心算法
猕员桃
给你的生活舔砖java
展开
-
二叉树的直径+镜像交换
#include<iostream> #include<string> using namespace std; struct TreeNode { int val; struct TreeNode*left; struct TreeNode*right; TreeNode(int x):val(x),left(nullptr),right(nullptr){} }; //二叉树的镜像 TreeNode* mirrorTree(TreeNode* root) {原创 2021-08-20 10:28:50 · 140 阅读 · 0 评论 -
有序数组 去除重复元素
//有序数组 去除重复元素 1 2 2 3 3 5 ------------------》 1 5 vector<int> fun(vector<int> &res) //有序数组 去除重复元素 { int count =0; int nflag=INT_MIN; vector<int> finsh; for(int i=0;i<res.size()-1;i++){ if(res[i]==res[i+1]) { count++原创 2021-08-15 20:56:59 · 188 阅读 · 0 评论 -
二分法求平方根+循环输入以回车结束
double sqrt1(double x) { double eps=0.00001; double low=0.0; double high=x; double mid=(low+high)/2; while((high-low)>eps) { if(mid*mid>x) { high=mid; } else { low=mid; } mid=(high+low)/2; return mid; }原创 2021-07-30 10:14:16 · 96 阅读 · 0 评论 -
2.动态规划
2.动态规划 动态规划算法的两种形式 ①自顶向下的备忘录法 , 递归 +备忘录 ②自底向上,迭代+备忘录 迭代 动态规划原理 1.最优子结构 用动态规划求解最优化问题的第一步就是刻画最优解的结构,如果一个问题的解结构包含其子问题的最优解,就称此问题具有最优子结构性质。因此,某个问题是否适合应用动态规划算法,它是否具有最优子结构性质是一个很好的线索。使用动态规划算法时,用子问题的最优解来构造原问题的最优解。因此必须考查最优解中用到的所有子问题。 2.重叠子问题 子问题重叠性质。子问题重叠性质是指在用递原创 2021-05-02 21:35:24 · 116 阅读 · 0 评论 -
14算法 .栈和队列+堆
14算法 .栈和队列 1.通过队列实现栈 LeetCode 225 a.两个队列实现栈 class MyStack { public: queue<int> q1, q2; MyStack() { } void push(int x) { if(q1.empty()){ q2.push(x); return; } if(q2.empty()){原创 2021-03-07 20:28:16 · 95 阅读 · 0 评论 -
O算法
O算法 注意:尽可能利用条件, 暴力解实际没有很好的利用条件, 时间复杂度一般较高,做完之后, 可以思考, 如果没有这个条件, 暴力解能否解出来, 如果能, 就说明条件没用好。 算法 尽量继承前面的计算结果, 得出或者退出后面的结果 利用前面的结果要怎么做? 保存前面的结果–> 辅助空间 : 数组(便于查找不便于插入删除 ) 链表( 插入删除) 栈(后进先出 倒序) 队列(正序 先进先出)栈和队列, 没法遍历, 所以可以用数组vector或者链表list代替 :来实现空间换时间. 数组 -->原创 2021-02-28 23:20:26 · 252 阅读 · 0 评论