数据结构与算法
文章平均质量分 65
csdn_chai
这个作者很懒,什么都没留下…
展开
-
常用算法:分治算法、动态规划算法、贪心算法、回溯法、分支限界法
常用算法:分治算法、动态规划算法、贪心算法、回溯法、分支限界法分治算法一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变转载 2017-08-30 12:13:58 · 557 阅读 · 0 评论 -
【算法】动态规划
最近看了一下动态规划,发现其实还是很容易的,不知道为什么当时上课的时候觉得很难。原创 2017-08-30 06:39:22 · 544 阅读 · 0 评论 -
排序算法
1. 直接选择排序任何情况下的时间复杂度都是 O(n^2), 最差的一种排序,每次都必须遍历玩整个子数组,选出最小的那个,空间复杂度为O(1),无需额外空间。直接选择排序的关键在于,每次从右侧子数组中,选出最小的,放到子数组第一个,然后缩小子数组范围,再次选择、交换。#include using namespace std;void selectionSort(int* a, int原创 2017-08-29 06:30:57 · 393 阅读 · 0 评论 -
topk
https://www.nowcoder.com/profile/601412/codeBookDetail?submissionId=85140101、全排序 时间复杂度O(nlogn) *通过牛客*12345678910111213转载 2017-09-10 07:01:33 · 429 阅读 · 0 评论 -
二叉树计算题总结
二叉树计算题总结原创 2017-09-01 14:49:53 · 3089 阅读 · 0 评论 -
【剑指offer】剑指offer 练习笔记
剑指offer练习1. 赋值运算符class CMyString{char* m_pData; int size; }写一个CMyString类的赋值运算符。CMyString& operator = (const CMyString& s){if( this == &s) return * this; if(m_pData) delete[]原创 2017-08-30 16:41:25 · 468 阅读 · 0 评论 -
线索二叉树
一、线索二叉树 如果二叉树的节点包含数据域和两个指针域( lchild 和 rchild ),当节点没有下一个节点时,将指针域赋值为空(NULL),但有时会造成很大的浪费,所以可以将空指针域利用起来,存放其他节点的地址,这样就便于索引,像二叉树遍历,查找之类就会变得相对容易。像上面的二叉树就会造成很大的浪费。当该二叉树以中序遍历输出时,为FDGBACE,红色转载 2017-09-14 19:54:40 · 398 阅读 · 0 评论 -
【练习】数据结构和算法复习题
复习数据结构,写一些简单的题目复习一下。1. 找出一个字符串中的括号匹配数。stack#include #include using namespace std; int countMatch(string s) { if(s.size() == 0) return 0; stack count; int n = 0 ; // 记录匹配次数原创 2017-08-27 20:54:25 · 4054 阅读 · 0 评论 -
红黑树
1.stl中的set底层用的什么数据结构? 2.红黑树的数据结构怎么定义的? 3.红黑树有哪些性质? 4.红黑树的各种操作的时间复杂度是多少? 5.红黑树相比于BST和AVL树有什么优点? 6.红黑树相对于哈希表,在选择使用的时候有什么依据? 7.如何扩展红黑树来获得比某个结点小的元素有多少个? 8.扩展数据结构有什么步骤?stl中的set底层用的什么数据结构? 红黑树红黑树的原创 2017-08-27 09:05:18 · 249 阅读 · 0 评论 -
排序算法的稳定性
这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前已经记住了数据结构书上哪些是稳定的,哪些不是稳定的,做起来应该可以轻松搞定。本文是针对老是记不住这个或者想真正明白到底为什么是稳定或者不稳定的人准备的。 首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相转载 2017-08-28 09:48:59 · 320 阅读 · 0 评论 -
hash table 哈希表(散列表)
hash table ,也叫散列表。涉及到哈希函数、哈希冲突处理的问题。哈希函数是哈希表的关键,是用来从值到哈希表索引(存放位置)的映射。比如:要存放一个学校学生的姓名,他们是Amanda, Jack, Andy, Tom, Bob, Black等等500个人。我们可以设计一个哈希表,容量为500,来存放这些学生的信息。哈希表的目的是快速访问,利用数组的随机访问性,快速的通过下表访问元素。需要原创 2017-08-28 06:15:22 · 659 阅读 · 1 评论 -
链表
1. 带头结点的列表相比没有头结点的标准实现,好处在于?这种伪首节点叫头结点。简化了删除和插入操作,原先的标准实现必须考虑头结点的特殊性(没有前驱),在链表开头插入和删除头结点都要独立考虑,在代码中需要判断节点是不是头结点,增加了复杂度。而增加了头结点的链表,真正的头结点插入和删除和其余节点无区别,代码是一套。2. 带头结点的链表判空条件是head->next == null; 3原创 2017-08-28 23:16:00 · 329 阅读 · 0 评论 -
轻松搞定面试中的链表题目
版权所有,转载请注明出处,谢谢!http://blog.csdn.net/walkinginthewind/article/details/7393134链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,也适合考察写代码的能力。链表的操作也离不开指针,指针又很容易导致出错。综合多方面的原因,链表题目在面试中占据着很重要的地位。本文对链原创 2017-08-29 13:06:58 · 351 阅读 · 0 评论 -
二叉树的各种操作(面试必备)
https://www.61mon.com/index.php/archives/191/本篇针对面试中常见的二叉树操作作个总结:(1):前序遍历,中序遍历,后序遍历;(2):层次遍历;(3):求树的节点数;(4):求树的叶子数;(5):求树的深度;(6):求二叉树第 k 层的节点个数;(7):判断两棵二叉树是否结构相同;(8):求二叉树的镜像;(9):转载 2017-08-29 17:14:43 · 542 阅读 · 0 评论 -
轻松搞定面试中的二叉树题目
版权所有,转载请注明出处,谢谢!http://blog.csdn.net/walkinginthewind/article/details/7518888树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二叉树有关转载 2017-08-29 14:41:41 · 465 阅读 · 0 评论 -
二叉树的各种计算题和性质
1. 普通二叉树比如表达式树2. 二叉查找树 BST (满足左子树所有节点小于根小于右子树所有节点的二叉树) 涉及到了BST的插入、删除、查找问题。插入(建树)和查找(前序、中序、后序遍历)比较简单。删除操作需要考虑三个问题:(1) 被删节点是叶子节点。此时将父节点中的相应指针置空就可以(2) 被删的节点只有一个子女。此时将父节点中的相应指针设置为自己的子节点(3) 被删原创 2017-08-29 13:41:57 · 958 阅读 · 0 评论 -
轻松搞定面试中的红黑树问题
版权所有,转载请注明出处,谢谢!http://blog.csdn.net/silangquan/article/details/18655795 连续两次面试都问到了红黑树,关键两次都没有答好,这次就完整地来学习整理一下。没有学习过红黑树的同学请参考:> Chapter 13 Red-Black Trees Chapter 14 Augmenting转载 2017-09-19 16:31:32 · 1015 阅读 · 0 评论