数据结构
lemonaha
stay hungry,stay foolish
展开
-
从头到尾解析Hash 表算法
从头到尾解析Hash 表算法作者:July、wuliming、pkuoliver 出处:http://blog.csdn.net/v_JULY_v。 说明:本文分为三部分内容,第一部分为一道百度面试题Top K算法的详解;第二部分为关于Hash表算法的详细阐述;第三部分为打造一个最快的Hash表算法。第一部分:Top K 算法详解问题描述 百度面试题: 搜索引擎会通过日志文件把用户每转载 2017-02-17 10:50:09 · 460 阅读 · 0 评论 -
二叉树的层次遍历(BFS),二叉树的所有路径,二叉树的最大路径和(分治)
给一棵二叉树 {3,9,20,#,#,15,7} : 3 / \ 9 20 / \ 15 7返回他的分层遍历结果: [ [3], [9,20], [15,7] ]class Solution { /** * @param root: The root of binary tree.原创 2017-04-11 17:04:30 · 722 阅读 · 0 评论 -
常用排序算法稳定性、时间复杂度分析
1、时间复杂度选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法, 冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。 2、研究排序算法的稳定性有何意义? 首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前两个相等的数据其在序列中的先后位置顺序与排序后它们两个先后位置顺序相同。再简单具体一点,如果A i == A j,Ai 原来在 Aj 位置前,排序后 Ai 仍然是在转载 2017-04-04 13:16:29 · 539 阅读 · 0 评论 -
链表基础之翻转,删除
翻转链表给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->nullclass Solution {public: /** * @param head: The first node of linked list. * @return: The new head of reversed linked list. */ ListN原创 2017-04-12 10:41:59 · 233 阅读 · 0 评论 -
二叉树的最大深度与最小深度
给出一棵如下的二叉树: 1 / \ 2 3 …/ \ …4 5/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { *原创 2017-04-11 17:10:35 · 428 阅读 · 0 评论 -
递归求树的深度,判断是否是平衡树
求树的深度/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public:原创 2017-03-10 22:35:09 · 1054 阅读 · 0 评论 -
数据结构知识库
CSDN的知识库,较为系统地整理了数据结构中的问题 - 数据结构知识库原创 2017-02-16 10:30:54 · 655 阅读 · 0 评论 -
重建二叉树
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。#include <iostream>#include <vector>using namespace std;struct TreeNode {原创 2017-02-11 21:54:38 · 316 阅读 · 0 评论 -
从尾到头打印链表
/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* val(x), next(NULL) {* }* };*/class Solution {public: vector<int> pr原创 2017-02-11 21:57:14 · 264 阅读 · 0 评论 -
替换空格
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。class Solution {public: void replaceSpace(char *str,int length) { for(int i=0;i<length;i++){ if(*(s原创 2017-02-11 21:59:26 · 177 阅读 · 0 评论 -
二维数组中的查找
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。class Solution {public: bool Find(int target, vector<vector<int> > array) { bool found=false; int原创 2017-02-11 22:01:41 · 187 阅读 · 0 评论 -
用两个栈来实现一个队列
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。class Solution{public: void push(int node) { stack1.push(node); } int pop() { int temp; if(stack2.empty()){ wh原创 2017-02-11 23:04:10 · 194 阅读 · 0 评论 -
单链表的初始化,建立,插入,查找,删除
//////////////////////////////////////////////单链表的初始化,建立,插入,查找,删除。////Author:Wang Yong // //Date: 2010.8.19 ///////////////////////////////////////转载 2017-02-21 14:49:07 · 4687 阅读 · 0 评论 -
求解集合A与B的差集
已知集合A和B的元素分别用不含头结点的单链表存储,函数difference( )用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,10,20,15,25,30},集合B={5,15,35,25},完成计算后A={10,20,30}。链接:https://www.nowcoder.com/questionTerminal/f06d3cd6112a47dfba3ec3bfb转载 2017-02-20 13:44:18 · 4452 阅读 · 0 评论 -
哈希表之unordered_map
给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 1 到 n,不是以 0 开头。 给出 numbers = [2, 7, 11, 15], target = 9, 返回 [1, 2].class Solution {public: vector<int> tw原创 2017-04-15 21:50:29 · 4143 阅读 · 0 评论