随笔分类 - 数据结构和算法
摘要:转自:http://blog.csdn.net/qibaoyuan/article/details/5914746代码实现:通过mod操作将指定数i映射到bitmap[i/32]的第imod32(从0开始)位。bitmap的基本操作: 1 #include <stdio.h> 2 #include <stdlib.h> 3 #define WORD 32 4 #define SHIFT 5 ////移动5个位,左移则相当于乘以32,右移相当于除以32取整 5 #define MASK 0x1F //16进制下的31 6 #define N 10000000 7 /* 8
阅读全文
摘要:阿里面试题:一个含有n个互不相同的整数的数组,任意一个数a[i]的现有位置i和它排序后的位置j的距离不超过k(即i-j的绝对值小于等于k),2=<k<n;n远远大于k;根据数组特点设计一算法对数组进行排序。分析:从左往右排序,i位置上最终放的数一定在区间[i,i+k]上。可以每次只对[i,i+k]区间的数进行排序,确定i位置上的数据,然后区间向右移动一个位置。重复以上操作直到确定所有位置上的数据。那么对于区间[i,i+k]上的数据该采用什么方法来排序呢。如果选择插入排序,每次移动位置后需要o(k)来确定i上的元素;实际上在移动位置后,补充一个新的数据到原有区间时,完全可以采用二分查
阅读全文
摘要:题目:搜索功能一般都有根据你的输入快速显示对应关键字的功能,比如你输入”刘”, 搜索框的下拉列表会显示“刘德华”,”刘若英”,”刘欢”等,你继续输入‘德’,将查询关键字变成”刘德”,显示的候选字列表会显示”刘德华”,”刘德华专辑”,”刘德华演唱会”等。如果让你用算法和数据结构实现这个功能(用户每次多输入一个字母都可以得到最佳的查询结果,每次返回最多不超过10条),你会如何设计。能否用程序实现。一、算法设计1) 采用trie树来实现前缀匹配,如果匹配成功,返回所有前缀相同的字符串,否则返回空;2) 如果匹配上的字符串超过10条,用堆排找出搜索热度前10的字符串(这部分没有写代码);二、代码与运行
阅读全文
摘要:这是腾讯的一道面试题,因为平时这方面接触比较少,所以想法比较浅。虽然最终没有通过面试,但仍然记录如下,希望以后回头看的时候能够想出更好的答案。或许可以问下博客园的开发,下文中的脏子竟然被禁止使用了,只能用xx代替之。题目:网络发表评论模块设计时会有一个难题,用户的输入的聊天字符串要进行过滤,如果其中含有脏话,比如中文的“他妈的”,英文的“Fuck”,。就必须将这些脏话进行过滤,替换。聊天模块有一个脏话库,脏话库中含有多个要求过滤的词汇。请你设计一个算法对发表评论输入字符串的脏话过滤,同时请描述你的算法的大致的时间复杂度。举例:中文“他妈的,我要找到那个联盟。”要过滤掉“------,我要……”
阅读全文
浙公网安备 33010602011771号