![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法练习
赵燕玲是我对象
这个作者很懒,什么都没留下…
展开
-
最大二叉树
最大二叉树原创 2023-02-24 16:41:26 · 54 阅读 · 0 评论 -
二叉搜索树最近公共祖先
二叉搜索树的最近公共祖先原创 2023-02-22 16:06:26 · 145 阅读 · 0 评论 -
修剪搜索二叉树
修剪搜索二叉树原创 2023-02-22 15:30:20 · 59 阅读 · 0 评论 -
树的左下角的值
树的左下角的值原创 2023-02-20 17:44:09 · 43 阅读 · 0 评论 -
左叶子节点之和
左叶子节点之和原创 2023-02-20 17:24:56 · 67 阅读 · 0 评论 -
平衡二叉树
判断是否是平衡二叉树原创 2023-02-20 16:35:58 · 50 阅读 · 0 评论 -
二叉树所有路劲
二叉树所有路径原创 2023-02-20 14:42:38 · 64 阅读 · 0 评论 -
二叉树最小深度
二叉树最小深度原创 2023-02-17 17:52:48 · 53 阅读 · 0 评论 -
二叉树的最大深度
递归(二叉树最大深度)原创 2023-02-17 17:12:25 · 57 阅读 · 0 评论 -
完全二叉树节点数目
完全二叉树节点数目原创 2023-02-16 19:42:48 · 61 阅读 · 0 评论 -
二叉树右视图
二叉树右视图原创 2023-02-15 19:45:34 · 68 阅读 · 0 评论 -
二叉树公共祖先
二叉树公共祖先原创 2023-02-15 16:15:45 · 50 阅读 · 0 评论 -
二叉树路径和找目标值
路径之和原创 2022-09-29 17:50:16 · 201 阅读 · 0 评论 -
根据前序和中序确定一棵二叉树
根据前序和中序确定二叉树原创 2022-09-28 11:58:28 · 622 阅读 · 0 评论 -
锯齿状遍历二叉树
锯齿状遍历二叉树(层次遍历的变形)原创 2022-09-28 09:18:27 · 50 阅读 · 0 评论 -
二叉树锯齿状遍历
二叉树层次遍历的变形原创 2022-09-27 10:38:57 · 93 阅读 · 0 评论 -
二叉树层次遍历
二叉树层次遍历原创 2022-09-26 17:55:44 · 325 阅读 · 0 评论 -
二叉树遍历(非递归遍历)
c++ 二叉树 非递归遍历原创 2022-09-26 10:11:20 · 213 阅读 · 0 评论 -
逆序对数目
#include<iostream>#include<vector>using namespace std;void meargeSort(vector<int>& testVec, int left, int right, int& count){ //递归出口,Left和Right相遇时就不能切割了,此时就要停止递归的拆分 if (left >= right) { return; } //递,缩小排序区间 int.原创 2022-05-07 12:50:39 · 86 阅读 · 0 评论 -
在排序数组中查找数字I
#include<iostream>#include<vector>#include<algorithm>using namespace std;int searchBegin(vector<int> testVec, int target){ int left = 0; int right = testVec.size() - 1; while (left <= right) { int mid = left + (rig.原创 2022-05-06 14:55:19 · 105 阅读 · 0 评论 -
0~n-1中缺失的数字
#include<iostream>#include<vector>#include<algorithm>using namespace std;int findLossNumber(vector<int> testVec){ //二分法查找丢失的数字,先定义查找区间 int left = 0; int right = testVec.size() - 1; while (left <= right) { int mid .原创 2022-05-05 12:41:24 · 252 阅读 · 0 评论 -
三角形个数
#include <vector>#include <iostream>#include <algorithm>using namespace std;int triangleNums(vector<int> triangleVecs){ int ans = 0; //思路分析 //1.先将原来的vector从小到大排序 sort(triangleVecs.begin(), triangleVecs.end()); //2.三条边,.原创 2022-05-04 19:54:31 · 586 阅读 · 0 评论 -
两个有序区间寻找中位数(遇到了问题)
#include <vector>#include <iostream>#include <algorithm>using namespace std;double findMedianSortedArras(vector<int> vec1, vector<int> vec2){ //寻找比较短的数组用于寻找切分点,用长的去寻找,即以长的为切分依据的时候,短的很有可能越界, //得到vec1.size() <= vec2.原创 2022-05-03 19:15:08 · 322 阅读 · 0 评论 -
二维数组查找
#include<iostream>#include<vector>using namespace std;bool searchTarget(vector<vector<int>>& testVec, int target){ if (testVec.size() < 0) return false; //定位左下角的坐标 int row = testVec.size() - 1; int column = 0; w.原创 2022-05-02 15:25:00 · 133 阅读 · 0 评论 -
搜索旋转排序数组
#include <vector>#include <iostream>using namespace std;int searchTarget(vector<int> testVec, int target){ //思路分析 //因为源数据是有序数据部分翻转一次得到的数据 //数据不管从哪个点一分为二,至少可以保证一侧是有序数据 //我们可以很方便的判断出这部分有序数据中有没有目标值, //如果没有目标值,去另外一侧无序数据中继续一切为二之.原创 2022-04-27 21:06:18 · 125 阅读 · 0 评论 -
在排序数组中查找元素的第一个和最后—个位置
#include <iostream>#include <vector>using namespace std;int searchBeginPos(vector<int> srcVec, int target){ //思路分析 //先通过二分查找的方法找目标值,如果找不到目标值,直接返回-1, //如果能找到目标值,则要分析目标值是不是srcVec的左边界,即mid是不是0, //如果是边界,则mid就是目标值区间的最左边的位置 //如果.原创 2022-04-25 21:13:31 · 379 阅读 · 0 评论 -
寻找插入位置
#include <vector>#include <iostream>using namespace std;int SearchInsertIndex(vector<int> searchVec, int target){ int left = 0; int right = searchVec.size() - 1; while (left <= right) { int mid = left + (right - left) / 2;.原创 2022-04-24 21:10:23 · 480 阅读 · 0 评论 -
二分查找简单练习(非递归)
#include <vector>#include <iostream>using namespace std;int binarySearchTarget(vector<int> searchVec, int target){ int left = 0; int right = searchVec.size() - 1; while (left <= right) { int mid = left + (right - left) / 2.原创 2022-04-24 20:48:23 · 332 阅读 · 0 评论 -
二分法简单示例
#include <vector>#include <iostream>using namespace std;int binarySearchTarget(vector<int> searchVec, int target, int left, int right){ //递归出口 if (left > right) { return -1; } //之所以不直接int mid = (left + right) / 2是为了防止left.原创 2022-04-24 20:35:23 · 300 阅读 · 0 评论 -
加油站问题
#include <iostream>#include <vector>using namespace std;int canCompeleteCircuit(vector<int> gas, vector<int> cost){ //思路分析 //题目是环形道路 //首先先确认一个结论:如果总的gas量大于cost,则一定有解。 //证明: //1.当n=2时,一定可以找到一个点A,它的gas >= cost;假设另一个点为B,.原创 2022-04-24 00:24:20 · 271 阅读 · 0 评论 -
leecode三数之和更接近某个值
#include <iostream>#include <vector>#include <algorithm>using namespace std;int threeNumsClosest(vector<int> testVec, int target){ //对数据进行从小到大排序 sort(testVec.begin(), testVec.end()); int result = testVec[0] + testVec[1] .原创 2022-04-22 21:33:01 · 295 阅读 · 0 评论 -
leecode三数之和
#include <iostream>#include <vector>#include <algorithm>using namespace std;vector<vector<int>> getThreeNumsSumEquelZero(vector<int> testVec){ vector<vector<int>> result; if (testVec.size() < 3).原创 2022-04-21 21:20:24 · 241 阅读 · 0 评论 -
摆动 序列
#include <vector>#include <iostream>using namespace std;int wiggleMaxLength(vector<int> nums){ //题目其实就是为了找一串数据如果画成折线图,记录拐点元素的元素个数 if (nums.size() <= 1) return nums.size(); //0表示初始状态,摆动序列长度为1的时候; 1表示正在上坡,即摆动序列正在向上摆; -1表示正在下坡,.原创 2022-04-15 18:42:20 · 200 阅读 · 0 评论 -
跳跃的游戏
#include <iostream>#include <vector>using namespace std;bool canJumpToEnd(vector<int> jumpVec){ //1.先初始化一个等长数组,用于存放每个位置最远能到达的距离 vector<int> jumpToMaxDesVec; for (int i = 0; i < (int)jumpVec.size(); i++) { jumpToMaxD.原创 2022-04-13 21:15:38 · 2534 阅读 · 0 评论 -
移掉K位数字
#include<iostream>#include<string>#include<stack>#include<stdio.h>using namespace std;string getMinData(string srcData, int delateNums){ //思路分析 //题目:一个数字,移除K位,所剩数字最小, //分析:当一个数高位越小时,该数字的值越小,所以一个数字移除K位数字使值最小时, //就要尽可能移除高.原创 2022-04-05 13:00:45 · 194 阅读 · 0 评论 -
柠檬水找零问题
#include <vector>#include <iostream>using namespace std;bool lemonadeChange(vector<int> bills){ //用来记录10元钞票的数量 int tenNums = 0; //用来记录5元钞票的数量 int fiveNums = 0; //顾客开始按顺序购买,并找零 for (int i = 0; i < bills.size(); i++) { i.原创 2022-04-05 11:29:14 · 135 阅读 · 0 评论 -
分发 饼干
#include <vector>#include <iostream>#include <algorithm>using namespace std;int getMeetChildsMaxNum(vector<int> childNeedCookiesVec, vector<int> cookiesVec){ sort(childNeedCookiesVec.begin(), childNeedCookiesVec.end().原创 2022-04-05 10:59:38 · 415 阅读 · 0 评论 -
两个数之和
#include<iostream>#include<vector>#include<map>using namespace std;vector<int> getTheTwoNumsIndex(vector<int> testVec, int target){ map<int, int> helperMap;//建立一个辅助map,key是数组元素的值,value是下标的值 vector<int> r.原创 2022-04-04 21:48:26 · 178 阅读 · 0 评论 -
盛水最多的容器
#include<iostream>#include<vector>#include<algorithm>using namespace std;//思路分析://—开始,我们先去考虑相距最远的两个柱子所能容纳水的面积。//接下来去思考,我们去移动哪根柱子会更加合适?//这里我们需要注意一点:无论移动哪根柱子,柱子之间的宽度都是变小的。//移动有边那根更高的柱子?//由于水面高度是由最短的柱子决定的,所以移动更高的柱子的时候,水面高度一定是不会增加.原创 2022-04-04 19:18:26 · 187 阅读 · 0 评论 -
有序数的平方
#include<iostream>#include<vector>using namespace std;//数组本身是有序的,对于一堆正数来说,平方之后顺序不会发生改变;而对于一堆负数来说,平方之后顺序发生了反转。//对于夹杂着正数和负数的数组来说,里面的负数平方之后有可能变成最大数。//所以,数组平方的最大值在数组的两端,不是最左边(负数)就是最右边(正数),不可能是中间的数字。这样,//我们设置两个索引,分别指向数组的两端,比如left 指向起始位置,rig.原创 2022-04-04 17:07:44 · 246 阅读 · 0 评论