
数据结构和算法
文章平均质量分 80
Zenhobby
这个作者很懒,什么都没留下…
展开
-
算法概念:大O表示法/小o表示法/Ω/Θ
如果算法A需要的时间与f(n)成正比,则算法A称为f(n)阶,表示为O(f(n))。函数f(n)称为算法的增率函数(growth-rate function)。该表示法使用大写字母O来表示(order),故称大O表示法。若规模为n的问题需要的时间与n成正比,则问题表示为O(n),即n阶。若需要的时间与n^2成正比,则问题表示为O(n^2),以此类推。下面是算法的阶的定义。转载 2015-04-24 16:34:40 · 29633 阅读 · 3 评论 -
数据结构习题记录-牛客网
1 下列哪两个数据结构,同时具有较高的查找和删除性能?() AVL树 Hash表2 以下操作中,数组比线性表速度更快的是____ 返回中间节点 选择随机节点3 当很频繁地对序列中部进行插入和删除操作时,应该选择使用的容器是() liststl提供了三个最基本的容器:vector,list,deque。vector和built-in数组类似,它拥有一段连续的内存空间,转载 2015-08-25 10:35:22 · 7604 阅读 · 0 评论 -
最长公共子串、最长公共子序列、最长回文子串、模式匹配、最大子序列--字符串问题整理
一.最长公共子串问题集(Longest Common Substring/LCS) 最长公共子串问题的基本表述为: 给定两个字符串,求出它们之间最长的相同子字符串的长度。 最直接的解法自然是找出两个字符串的所有子字符串进行比较看他们是否相同,然后取得相同最长的那个。对于一个长度为n的字符串,它有n(n+1)/2 个非空子串。所 以假如两个字符串的长度同为n,通转载 2015-08-25 10:39:49 · 5641 阅读 · 1 评论 -
final/finally/finalize区别,中兴2014卷末题
final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。 finally—再异常转载 2015-09-04 15:21:56 · 696 阅读 · 0 评论 -
剑指offer整理归纳(2/2)
二十一. 从上往下打印二叉树(面试题23)题目描述:从上往下打印出二叉树的每个节点,同层节点从左至右打印。题目解析:其实就是层序遍历,先遍历完第一层,再遍历完第二层……这时,就要用到数据结构队列:先将根节点入队列,然后出队列,访问节点,将左右子节点入队列,依次循环即可层序访问所有节点。完整代码如下:#include#include#include转载 2015-09-04 16:27:14 · 1117 阅读 · 0 评论 -
最大堆解Top K问题
转载自:http://blog.youkuaiyun.com/v_JULY_v/article/details/6370650查找最小的k个元素(数组)题目:输入n个整数,输出其中最小的k个。例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4。采用最大堆问题虽然并不能达到时间的最优化(O(n*logk)),但是采用堆的方式存储对于海量#inclu转载 2017-07-04 00:08:05 · 1523 阅读 · 0 评论 -
二叉树的各种操作(遍历/深度/距离/转换)
(1):前序遍历,中序遍历,后序遍历;(2):层次遍历;(3):求树的节点数;(4):求树的叶子数;(5):求树的深度;(6):求二叉树第 k 层的节点个数;(7):判断两棵二叉树是否结构相同;(8):求二叉树的镜像;(9):求两个节点的最低公共祖先节点;(10):求任意两节点距离;(11):找出二叉树中某个节点的所有祖先节点;(12):不使用递归和转载 2017-07-08 15:08:56 · 1455 阅读 · 0 评论 -
五大算法思想:分治、动态规划、贪心、回溯和分支界定
转载自:http://blog.youkuaiyun.com/yapian8/article/details/28240973分治算法一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很转载 2017-06-22 20:57:48 · 3525 阅读 · 1 评论 -
剑指offer整理归纳(1/2)
一.Singleton模式(面试题1)1. 最简单的singleton,没有考虑到多线程、拷贝赋值、重用。class Singleton{public: static Singleton& Instance() { static Singleton singleton; return singleton; }privat转载 2015-09-04 16:14:54 · 1875 阅读 · 0 评论 -
华为上机-字符串相关题目
华为校园招聘机考试题总结(软件) 1、删除子串,只要是原串中有相同的子串就删掉,不管有多少个,返回子串个数。#include#include#include#includeint delete_sub_str(constchar*str,constchar*sub_str,char*result){ assert(str != NULL && sub_str != NULL转载 2015-09-04 15:29:43 · 1623 阅读 · 0 评论 -
栈和二叉树--中缀/后缀表达式的相互转换
中缀表达式与后缀表达式中缀表达式(或中缀记法)是一个通用的算术或逻辑公式表示方法, 操作符是以中缀形式处于操作数的中间(例:3 + 4),中缀表达式是人们常用的算术表示方法。与前缀表达式(例:+ 3 4)或后缀表达式(例:3 4 +)相比,中缀表达式不容易被计算机解析,但仍被许多程序语言使用,因为它符合人们的普遍用法。与前缀或后缀记法不同的是,中缀记法中括号是必转载 2015-04-20 22:20:53 · 4087 阅读 · 0 评论 -
二叉查找树(BST),平衡二叉查找树(AVL),红黑树(RBT),B~/B+树(B-tree)的比较
我们这个专题介绍的动态查找树主要有: 二叉查找树(BST),平衡二叉查找树(AVL),红黑树(RBT),B~/B+树(B-tree)。这四种树都具备下面几个优势:(1) 都是动态结构。在删除,插入操作的时候,都不需要彻底重建原始的索引树。最多就是执行一定量的旋转,变色操作来有限的改变树的形态。而这些操作所付出的代价都远远小于重建一棵树。这一优势在《查找结构专题(1):静态查找结构概论 》中转载 2015-04-24 16:48:07 · 1811 阅读 · 0 评论 -
冒泡排序、插入排序、选择排序、希尔排序、堆排序、归并排序等常用排序算法的比较
掌握好常用的排序算法,在实际的项目开发中可以节省很多的时间。每一种排序算法在执行的效率上是存在差别的,这些微小的时间差,也许在平常的联系当中感觉不到,但是涉及到数据量比较大或者是在资源比较紧张的系统中就显得尤其的重要,比如嵌入式系统。下面简要介绍三种常用的排序算法以及他们的执行效率的比较。 冒泡排序:最优为O(n),最坏为O(n^2),平均O(n^2) 思路:将相邻转载 2015-04-24 16:49:21 · 9794 阅读 · 0 评论