数据结构与算法面试题
来源:互联网 发布:湖北楚天网络客服电话 编辑:程序博客网 时间:2024/05/21 22:32
1。计算二叉树的深度
// 获取最大深度 public static int getMaxDepth(TreeNode root) { if (root == null) return 0; else { int left = getMaxDepth(root.left); int right = getMaxDepth(root.right); return 1 + Math.max(left, right); } }
2。折半查找(非递归)
package althorgrim; /** * 1、必须采用顺序存储结果 * 2、关键字必须有序 * @author hanrk-2734 * */ public class TestBinarySearch { public static int binarySearch(int a[],int goal){ int high=a.length-1; int low=0; while (low<=high) { int middle=(low+high)/2; if (a[middle]==goal) { return middle; } else if (a[middle]>goal) { high=middle-1; } else { low=middle+1; } } return -1; } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int[] src = new int[] {1, 3, 5, 7, 8, 9}; System.out.println(binarySearch(src, 3)); } }
3.找到数据中最大的前两个值
list=[1,2,5,6,3,4,5,4]max1=0max2=0for i in range(len(list)): if list[i]>max1: max2=max1 max1=list[i] else: if list[i]>max2: max2=list[i]print(max1)print(max2)
4。把字符串中的连续多个空格转换成一个空格
str='a b c d e f g h'def replace(str): count = 0 strr='' for i in range(len(str)): if str[i]==' ': count+=1 if count==2: count=count-1 else: strr=strr+str[i] if str[i]!=' ': count=0 return strrprint(str)print(replace(str))
5.给定a、b两个文件,各存放50亿个url,每个url各占用64字节,内存限制是4G,如何找出a、b文件共同的url?
(昨天参加安卓越 笔试,其中的最后一道解答题)
解答:每个文件 50亿*64B 约为300GB大小,内存肯定是装不下了。毫无疑问还是采用分而治之的思想:1. 遍历文件a,对每个url求取hash(url)%1000,然后根据所得值将url分别存储到1000个小文件(设为a0,a1,...a999)当中;遍历文件b,对每个url求取hash(url)%1000,然后根据所得值将url分别存储到1000个小文件(设为b0,b1,...b999)当中;这样处理后,所有可能相同的url都在对应的小文件(a0-b0, a1-b1....a999-b999)当中,不对应的小文件(比如a0-b99)不可能有相同的url。2. 统计1000对文件中相同的url,采用hash_set.比如对a0-b0,遍历a0,将其中的url存储到hash_set当中;然后遍历b0,如果url在hash_map中,则说明此url在a和b中同时存在,保存到文件中即可。
阅读全文
0 0
- 数据结构与算法面试题
- 算法与数据结构面试题
- 数据结构与算法面试题
- 数据结构与算法 面试题
- 算法与数据结构面试题(6)-腾讯面试题
- 数据结构与算法笔试面试题
- 数据结构与算法面试题80道
- 数据结构与算法面试题80道
- 数据结构与算法面试题100道
- 数据结构与算法面试题80道
- 数据结构与算法面试题80道
- 数据结构与算法面试题80道
- 数据结构与算法面试题80道
- 数据结构与算法面试题80道
- 数据结构与算法面试题80道
- 数据结构与算法面试题(待定)
- 数据结构与算法面试题80道
- 数据结构与算法面试题80道
- [转]关于PreparedStatement.addBatch()方法
- linux工作中常用文件操作命令
- 【Leetcode】【python】Median of Two Sorted Arrays
- Redis在京东到家的订单中的使用
- POj 3420 (轮廓线dp)
- 数据结构与算法面试题
- java面试题(剑指offer):序列化二叉树
- Javaweb基础之response&request
- stm32 JTAG和SWD
- 优先队列-二叉堆Java实现
- 源码编译Python 64位版 GDAL2.2.1
- JavaScript中break continue return 结束循环。
- 总结eclipse中安装maven插件
- Servlet监听器