数据结构与算法
文章平均质量分 76
记忆力不好
这个作者很懒,什么都没留下…
展开
-
int转换成二进制字符串
1.位移运行 对于JAVA要想将整型转换成二进制数可以直接使用包装类的toBinaryString方法,如Integer.toBinaryString(int i),该方法利用的是位运算,JDK源码如下: public static String toBinaryString(int i) { return toUnsignedString(i, 1);原创 2016-03-26 18:29:41 · 11370 阅读 · 0 评论 -
【面试编程题】-9剑指offer之优化时间和空间效率
下面的例题来着剑指offer第5章的内容。很多公司的面试官都把代码的时间效率当做一个考叉重点。面试官除了考查应聘者的编程能力之外,还关注应聘者有没有不断优化效率、追求完美的态度和能力。1.数组中出现次数超过一半的数字题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半原创 2016-07-30 13:51:18 · 1326 阅读 · 0 评论 -
Java 二叉树的前序、中序、后续遍历 递归和迭代实现
1.前序递归 public List<Integer> preorderTraversal(TreeNode root) { List<Integer> list=new ArrayList<Integer>(); if(root!=null){ list.add(root.val); ...原创 2016-05-01 17:14:23 · 1319 阅读 · 1 评论 -
字典数Trie树详解及其应用
一、知识简介 最近在看字符串算法了,其中字典树、AC自动机和后缀树的应用是最广泛的了,下面将会重点介绍下这几个算法的应用。 字典树(Trie)可以保存一些字符串->值的对应关系。基本上,它跟 Java 的 HashMap 功能相同,都是 key-value 映射,只不过 Trie 的 key 只能是字符串。 Trie 的强大之处就在于它的时间复杂度。它的插入和转载 2016-07-30 14:06:35 · 1795 阅读 · 0 评论 -
大数据处理常用的数据结构
随着互联网的兴起,越来越多的内容被放到互联网中,从而导致海量数据处理受到更多人的重视,尤其是在百度、腾讯等这些涉及海量数据的公司。下面我们简单谈一下关于海量数据处理的一些常用数据结构。包括哈希、bitmap、Bloom filter、堆、mapreduce、trie树。(1)哈希 对于哈希,相信大家都不会陌生。其基本原理不再说明,哈希的一个关键点是哈希函数的选择,如何使映射结果更加均衡及冲突转载 2016-07-30 00:13:10 · 11099 阅读 · 1 评论 -
Bloom Filter 布隆过滤算法学习
BloomFilter——大规模数据处理利器 Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。 一. 实例 为了说明Bloom Filter存在的重要意义,举一个实例: 假设要你写一个网络蜘蛛(web crawler转载 2016-07-29 23:53:40 · 1189 阅读 · 0 评论 -
两个整形数交换的算法,不使用其它变量
通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换。代码如下: int a=10; b=15; int t; t=a; a=b; b=t; 这种算法易于理解,特别适合帮助初学者了解计算机程序的特点,是赋值语句的经典应用。在实际软件开发当中,此算法简单明了,不会产生歧义,便于程序员之间的交流,一般情况下碰到交换变量值的问题,都应采用此算法(以下称为标准算法)。上面的算转载 2016-04-14 00:08:56 · 1577 阅读 · 0 评论 -
字符串匹配KMP算法的理解(详细)
1. 引言 本KMP原文最初写于2年多前的2011年12月,因当时初次接触KMP,思路混乱导致写也写得混乱。所以一直想找机会重新写下KMP,但苦于一直以来对KMP的理解始终不够,故才迟迟没有修改本文。 然近期因开了个算法班,班上专门讲解数据结构、面试、算法,才再次仔细回顾了这个KMP,在综合了一些网友的理解、以及算法班的两位讲师朋友曹博、邹博的理解之后,写了9张PPT,发在微博...转载 2016-06-20 13:09:33 · 3453 阅读 · 3 评论 -
腾讯2017暑期实习生编程题
上次做了乐视的暑期实习生编程题:http://blog.csdn.net/chenchaofuck1/article/details/51700143 今天也做了腾讯的的实习生编程题,整体感觉要比乐视的题难一些,但也没有涉及非常难的算法,题如下:1.构造回文 给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢? 输出需要删除的字符个数。 代原创 2016-06-19 16:55:32 · 3888 阅读 · 0 评论 -
求最长公共子串的Needleman/Wunsch算法
文本比较算法Needleman/Wunsch算法 在“文本比较算法Ⅰ——LD算法”中介绍了基于编辑距离的文本比较算法——LD算法。 本文介绍基于最长公共子串的文本比较算法——Needleman/Wunsch算法。 还是以实例说明:字符串A=kitten,字符串B=sitting 那他们的最长公共子串为ittn(注:最长公共子串不需要连续出现,原创 2016-06-18 21:36:41 · 1671 阅读 · 0 评论 -
乐视2017暑期实习生笔试编程题
前几天做了在乐视的笔试题,整体的来说的题目还是比较简单。前面的选择题都是比较普遍的一些关于操作系统、网络、linux等的题。后面有三道编程题得吐槽一下,虽然题不是很难,不涉及什么复杂的算法,但是题目介绍弄了一大堆的故事,看来几遍才弄懂了,特别是第一个题,少点套路就好了。1.兵临城下卢卡斯的驱逐者大军已经来到了赫柏的卡诺萨城,赫柏终于下定决心,集结了大军,与驱逐者全面开战。 卢卡斯的手下有6名天之原创 2016-06-17 15:17:01 · 3467 阅读 · 2 评论 -
海量数据处理面试题方法总结
第一部分、十道海量数据处理面试题1、海量日志数据,提取出某日访问百度次数最多的那个IP。 首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的IP(可以采用hash_map进行频率统计,然后再找出频率原创 2016-06-09 18:45:52 · 2261 阅读 · 0 评论 -
阿里面试题总结
在阿里面试之前总结了一下内推同学的面经,把面试题总结到一块,并进行了分类。有些题目我也总结了一下答案,大家可以参考一下,仅仅参考就行了,因为可能自己知识储备不够,答案整理不够完整(也可能会有错误的地方,希望大家指出。嘿~嘿~嘿~嘿~)我面试的时候,自己总结的题竟然一个题都没问,并且问的题太深了,让自己想法实现Java虚拟机里的东西或者源码的底层。自己以前也看过部分源码,但不是太深入,一面直转载 2016-06-09 13:50:58 · 2125 阅读 · 0 评论 -
leetcode 46,47. Permutations I/II 全排列问题 java
46.Permutations Total Accepted: 96713 Total Submissions: 271529 Difficulty: Medium Given a collection of distinct numbers, return all possible permutations.For example, [1,2,3] have the following pe原创 2016-04-19 23:00:36 · 3699 阅读 · 2 评论 -
常用树类数据结构总结-二叉查找树(BST),平衡二叉查找树(AVL),红黑树(RBT),B~/B+树(B-tree)的性能分析
http://www.iteye.com/topic/614070此少侠总结的特棒,直接收藏了。我们这个专题介绍的动态查找树主要有: 二叉查找树(BST),平衡二叉查找树(AVL),红黑树(RBT),B~/B+树(B-tree)。这四种树都具备下面几个优势:(1) 都是动态结构。在删除,插入操作的时候,都不需要彻底重建原始的索引树。最多就是执行一定量的旋转,变色操作来有转载 2016-05-02 23:17:11 · 1666 阅读 · 0 评论 -
动态规划算法解最长公共子序列LCS问题
第一部分、什么是动态规划算法 ok,咱们先来了解下什么是动态规划算法。 动态规划一般也只能应用于有最优子结构的问题。最优子结构的意思是局部最优解能决定全局最优解(对有些问题这个要求并不能完全满足,故有时需要引入一定的近似)。简单地说,问题能够分解成子问题来解决。动态规划算法分以下4个步骤:描述最优解的结构递归定义最优解的值按自底向上的方式计算最优解的值转载 2016-06-20 12:05:43 · 4409 阅读 · 0 评论