博客专栏  >  综合   >  数据结构与算法

数据结构与算法

数据结构与常用算法知识

关注
3 已关注
21篇博文
  • 随机数问题

    一、用随机函数构造另一个随机函数比如,有这样一个需求,现在有一个rand5()函数,这个函数可以生成1-5的随机数,让你通过这个函数生成1-7范围的随机数。怎么做了? 一般思路是这样的:用两次ran...

    2017-02-28 12:55
    593
  • 二叉树-常见简单算法题

    二叉树,对一些常见的简单算法题,比如翻转二叉树,求高度,判断是否是相等的二叉树等,我们是必须掌握的!!!

    2017-02-19 01:02
    341
  • 二叉树-详解二叉排序树

    一、二叉搜索树首先二叉排序树也是一棵二叉树,所谓二叉树,就是“任何节点最多只允许两个子节点”,这两个子节点称为左右子节点。如下便是一个二叉树。 1.1、二叉排序树性质:1、就是若它的左子树不...

    2016-10-14 01:06
    5422
  • 位运算技巧与应用

    位运算是把数字用二进制表示之后,对每一位上的0或者1的运算。运算包括与、或、异或,非。熟练掌握位运算技巧,能给我们解决问题提供一些巧妙的方法。

    2017-02-16 17:47
    203
  • 常用算法-回朔法

    1、概念回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但...

    2017-02-18 23:46
    298
  • 二分查找实现及其应用

    二分查找,应用广泛,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。如果xa[n/2],则我们只要在数组a的右半部继续搜索x。

    2017-02-16 15:16
    313
  • 二叉树-创建、重建、转化

    对于二叉树的创建女,一般我们只熟悉最简单的二叉树创建方式,即逐个输入节点,然后按照先序遍历或者中序、后序遍历方式来递归建立二叉树。但是,光掌握这个是不够的,我们还得掌握二叉树的重建(先序中序重建二叉树...

    2017-02-15 23:25
    650
  • 二叉树-遍历终极版

    对于二叉树的遍历,最熟悉的就是递归遍历了,对二叉树的非递归遍历大致知道一些,但是不太熟悉,尤其是后续非递归遍历的实现,一直比较懵逼,于是上网查询了一下,果然大神无处不在,那个后序遍历的双栈法,简直让人...

    2017-02-16 00:25
    628
  • LeetCode-String To Integer

    拿到这道题不要一分钟就写出了如下代码, int myAtoi(string str) { int num=0; int i=0; for(int i=0;i<str.siz...

    2015-12-02 10:03
    681
  • LeetCode-Palindrome Number

    什么是回文数字: 就是正着看和反着看是一样的数字,就是回文数字,比如:1234321,45654是回文数字,而1234这样的就不是回文数字。 代码(72ms): bool isPalindrom...

    2015-12-02 10:49
    610
  • LeetCode-Longest Substring Without Repeating Characters

    题目:给一个字符串,找出没有重复的最长字串 方法一: int lengthOfLongestSubstring(string s) { if(s=="") { return 0; } m...

    2015-12-03 15:57
    628
  • LeetCode-TwoSum

    题目: 给一串数字和一个目标数字,在数字串中寻找两个数加起来等于目标数字的数,返回其下标。 方法(12ms): vector twoSum(vector& nums, int target) { ...

    2015-12-05 10:08
    606
  • LeetCode-Add Two Numbers

    题目: 给出两个数字,他们是反向保存在链表中的,计算两个数的和,也反向保存在链表中返回。 方法: 我开始想到的就是先将链表中的数字还原,然后相加,再反向保存到链表中,很是麻烦。这就是常规思路,总想着数...

    2015-12-06 13:19
    670
  • LeetCode -Longest Common Prefix

    代码最简洁的: string longestCommonPrefix(vector& strs) { if(strs.size()==0) return ""; for(int i=0;i<...

    2015-12-07 11:00
    673
  • LeetCode-Remove Nth Node From End of List

    方法一: 先计算出链表总的节点数,再找要删除的节点 ListNode* removeNthFromEnd(ListNode* head, int n) { if(head==NULL) ...

    2015-12-07 21:43
    738
  • 常用算法-分治法

    基础知识 1. 分治法的思想: 将原问题分解为几个规模较小但类似于原问题的子问题,递归地求解这些子问题,然后再合并这些子问题的解来建立原问题的解。 2. 满足分治策略的条件: 1)        该问...

    2016-03-28 21:00
    1653
  • 图文并茂,再次温顾七大排序算法

    1、插入排序1.1、 算法原理插入排序的基本方法是:每步将一个待排序序列按数据大小插到前面已经排序的序列中的适当位置,直到全部数据插入完毕为止。 假设有一组无序序列 R0, R1, … , Rn−...

    2016-10-14 01:30
    1798
  • 哈希表一

    一、定义哈希表(散列表)通过将关键码映射到表中的某个位置上来存储元素,然后根据关键码来访问元素。具体来说,就是在关键字 k 和元素的存储位置 p 之间建立一个对应关系 f ,使得 p=f(k) , f...

    2016-12-16 10:04
    153
  • 递归原理及常见应用

    一、什么是递归递归算法,就是直接或间接调用自身的函数,也就是把一个大的复杂的问题层层转换为一个小的和原问题相似的问题来求解的这样一种策略。上面解释可能有点太官方了,来看看知乎上大神的通俗易懂的解释:解...

    2016-11-09 21:37
    233
  • 数据结构-链表篇

    链表作为数据结构主要组成部分之一,在面试中也是主要考点,花了几点时间把LeetCode上的链表的题做了一下,发现还是有规律可循的,特此总结下!

    2016-10-30 13:01
    1455

img博客搬家
img撰写博客
img发布 Chat
img专家申请
img意见反馈
img返回顶部