![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法分析
anti_007
电子信息工程专业
展开
-
剑指offer_21_栈的压入弹出序列
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)#include <iostream>#include<stack>#...原创 2018-03-06 21:38:24 · 116 阅读 · 0 评论 -
经典八大排序算法C++实现
#include <iostream>#include<vector>#include <algorithm>#include <typeinfo>using namespace std;//01冒泡排序void bubble_sort(int*input, int st, int ed){ int lenth = ed - st + 1; for ...原创 2018-06-13 22:44:33 · 289 阅读 · 0 评论 -
堆排序
图解堆排序:https://www.cnblogs.com/chengxiao/p/6129630.html//06堆排序//https://www.cnblogs.com/chengxiao/p/6129630.html//堆排序不开辟额外的内存,将数组的索引与堆对应起来,将数组看成一个逻辑结构上的堆,由于是完全二叉树,所以有几个特性,索引为s的节点的左子节点为2*s+1,//叶节点的数量和与非...原创 2018-06-13 16:27:59 · 159 阅读 · 0 评论 -
剑指offer_20_包含min函数的栈
题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。#include <iostream>using namespace std;class Solution {public: struct ListNode{ struct ListNode*next; int val; ListNode(int x, ListNode*p) :next(p), val...原创 2018-03-06 11:46:37 · 138 阅读 · 0 评论 -
剑指offer_19_顺时针打印矩阵
#include <iostream>#include <vector>using namespace std;class Solution {public:vector<int> printMatrix(vector<vector<int> > matrix) { vector<int> va; int tlx = 0, t...原创 2018-03-05 22:10:11 · 250 阅读 · 0 评论 -
剑指offer_17_树的子结构
题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)#include <iostream>#include <vector>#include<queue>using namespace std;struct TreeNode { int val; TreeNode *left; TreeNode *right; Tr...原创 2018-03-05 20:22:28 · 153 阅读 · 0 评论 -
剑指offer_16_合并两个排序的链表
题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。#include <iostream>using namespace std;struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};void append(...原创 2018-03-05 14:45:51 · 127 阅读 · 0 评论 -
剑指offer_15_反转链表
题目描述输入一个链表,反转链表后,输出链表的所有元素。#include <iostream>using namespace std;struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};class Solution {//递归实现public: ListN...原创 2018-03-05 10:44:24 · 154 阅读 · 0 评论 -
剑指offer_11_二进制中1的个数
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。#include <iostream>using namespace std;class Solution1 {//递归实现public: int NumberOf1(int n) { unsigned int us_n = n; if (n == 0)return 0; return(us_n &...原创 2018-03-04 14:49:33 · 180 阅读 · 0 评论 -
剑指offer_06_旋转数组的最小数字(递归实现)
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。#include <iostream>#include<vector>using name...原创 2018-03-02 17:22:07 · 253 阅读 · 0 评论 -
递归实现二分查找
题目:对于定一个升序的数组a,需要查找数n在数组a中的位置,若不存在n则返回-1。#include <iostream>using namespace std;int find(int n,int *a,int start,int end){ if (end == start)return a[end] == n ? end : -1; int mid = (end - start) ...原创 2018-03-02 15:00:22 · 1043 阅读 · 0 评论 -
剑指offer_04_重建二叉树
剑指offer第四题:重建二叉树题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。二叉树节点数据结构如下:struct TreeNode { int val; TreeNode *left; TreeNod...原创 2018-03-01 23:00:26 · 176 阅读 · 0 评论 -
剑指offer_26_二叉搜索树与双向链表
题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。/*思路:将二叉搜索树convert为双向链表,尝试递归解决。递归关系:当访问到节点root时,root->left与转换后的左子树链表完成互指,root->right与转换后的右子树链表完成互指。根据题意,令返回值为最左节点,若root存在左子树,也就是左子树链表...原创 2018-03-09 14:04:09 · 142 阅读 · 0 评论 -
剑指offer_25_复杂链表的复制
题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)#include <iostream>#include <vector>#include<queue>using namespace std;...原创 2018-03-08 15:37:02 · 161 阅读 · 0 评论 -
剑指offer_24_二叉树中和为某一值的路径
题目描述输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径class Solution {public: vector<vector<int> > FindPath(TreeNode* root, int expectNumber) { vector<vector<int&...原创 2018-03-07 21:53:46 · 147 阅读 · 0 评论 -
剑指offer_23_二叉搜索树的后序遍历序列
#include <iostream>#include <vector>#include<queue>using namespace std;struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {...原创 2018-03-07 16:23:46 · 125 阅读 · 0 评论 -
剑指offer_22_从上到下打印二叉树
#include <iostream>#include <vector>#include<queue>using namespace std;struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {...原创 2018-03-06 22:16:39 · 119 阅读 · 0 评论 -
剑指offer_27_去重全排列
class Solution {public: void rPermutation(int k, string cststr, vector<string> &rtvec) { if (k == cststr.size() - 1) rtvec.push_back(cststr); for (int i = k; i < cststr.size(); i++) ...原创 2018-06-14 09:26:21 · 195 阅读 · 0 评论