算法与数据结构
多少个明天_指上流年
这个作者很懒,什么都没留下…
展开
-
归并排序算法
归并排序原创 2022-03-22 19:29:37 · 314 阅读 · 0 评论 -
将字符串句子按单词逆序
问题描述:实现一个链表class MyLinkedList {public: // 定义链表节点结构体 struct LinkedNode { int val; LinkedNode* next; LinkedNode(int val) :val(val), next(nullptr) {} }; // 初始化链表 MyLinkedList() { _dummyHead = new LinkedNode(0); // 这里定义的头结点 是一个虚拟头结点,而不是真正的链表头结点翻译 2020-09-18 14:33:48 · 219 阅读 · 0 评论 -
前缀树(字典树、单词查找树、trie树)的实现
问题描述:有序链表转二叉搜索树 //有序链表转二叉搜索树 TreeNode* createBST(ListNode*head, ListNode* tail) { if (head == tail) { return nullptr; } ListNode* slow = head; ListNode* fast = head; while (fast != tail && fast->next != tail) { slow = s翻译 2020-09-17 16:55:29 · 125 阅读 · 0 评论 -
判断一个二叉树是否是镜像二叉树
问题描述:判断一个二叉树是否是镜像二叉树 bool Symmetric(TreeNode* leftchild, TreeNode* rightchild) { if (leftchild == nullptr && rightchild==nullptr) { return true; } if ((leftchild == nullptr&& rightchild != nullptr) ||(leftchild!=nullptr&&翻译 2020-09-17 16:49:55 · 468 阅读 · 0 评论 -
两个栈实现队列
问题描述:使用两个栈实现队列class CQueue {private: stack<int> stack_1; stack<int> stack_2;public: CQueue() { } void appendTail(int value) { stack_1.push(value); } int deleteHead() { if (!stack_2.empty()){ int val = stack_2.top(); stac原创 2020-09-17 16:41:09 · 64 阅读 · 0 评论 -
算法:整数拆分问题(面试题)
问题描述:给定一个整数n和一个整数k, 对该整数进行拆分,拆分成两个数,使得两数之和等于n,两数之查等于k,对拆分后的两个数再进行拆分,直到不能再拆分为止,求所有拆分后的数的个数。分析:假设一次拆分后的数为x,y,则满足下面的公式x+y=n;x-y=k;也可以理解为一个二叉树结构//递归实现的代码int leafcout(int n, int k){ if (n <= k + 1 || (n + k) % 2 != 0) { return 1; } int x = (n +原创 2020-09-17 15:53:09 · 297 阅读 · 0 评论 -
经典算法:快速排序算法
快速排序的c++代码实现:void QuickSort(int left, int right, vector<int>& datas){ if (left >= right) {//递归出口 return; } int i, j, base; i = left; j = right; base = datas[left]; while (i < j) { while(i < j&&datas[j] >= base)原创 2020-07-28 10:15:20 · 163 阅读 · 0 评论 -
数据结构和算法-按关键字记忆和学习
关键字:1、hash和索引常规hash算法simhash(局部敏感hash,海明距离)计算文本串相似度:余弦夹角,欧式距离。。 。2、树二叉树相关:二叉搜索树,平衡二叉树、哈夫曼树、红黑树 、2-3树、2-3-4树、B-树、B+树 、B*树搜索相关:trie树(前缀树) 、后缀树、双数组trie树删除线代表已经经过学习记忆,持续更新中。。。...原创 2020-07-01 20:44:07 · 186 阅读 · 0 评论 -
算法复杂度中的O(logN)底数是什么?
算法中log级别的时间复杂度都是由于使用了分治思想,这个底数直接由分治的复杂度决定。如果采用二分法,那么就会以2为底数,三分法就会以3为底数,其他亦然。不过无论底数是什么,log级别的渐进意义是一样的。也就是说该算法的时间复杂度的增长与处理数据多少的增长的关系是一样的。我们先考虑O(logx(n))和O(logy(n)),x!=y,我们是在考虑n趋于无穷的情况。求当n趋于无穷大时log...转载 2020-03-31 17:46:06 · 1774 阅读 · 1 评论