自我介绍,详细介绍项目,主要是美团实习项目,然后画项目架构图。
五道编程题目:
1.设计一个数据结构可以存储一组整型数,并且能够O(1)时间查找中位数和O(logN) add操作。
本来想的是采用map的结构,最后其实是采用堆进行存储,在Java中可以看一下PriorityQueue,内部是采用堆进行实现的。
2.
中序遍历,存储根节点到每个叶子节点的路径。
3.求平方根,两种方式。
# 输入:整数 n
# 输出:n 的平方根
# 精度 10^(-5),定义域:实数
(1)二分法
public static double sqrt(double t, Double precise) { double low = 0, high = t, middle, squre, prec = precise != null ? precise : 1e-7; if ( t < 0 ) { throw new RuntimeException("Negetive number cannot have a sqrt root."); } while ( high - low > prec ) { middle = ( low + high ) / 2; squre = middle * middle; if ( squre > t ) { high = middle; } else { low = middle; } } return ( low + high ) / 2; }
(2)牛顿迭代法
public static double sqrt_ ( double t, Double precise) { double x0 = t, x1, differ, prec = precise != null ? precise : 1e-7; while ( true ) { x1 = ( x0 * x0 + t ) / ( 2 * x0 ); differ = x1 * x1 - t; if ( differ <= prec && differ >= -prec ) { return x1; } x0 = x1; } }
(4)两数之和为定值
参考:https://www.cnblogs.com/DarrenChan/p/8871495.html#_label0
(5)遍历一遍用两个指针实现删除倒数第k个单链表节点
class Node{ int val; Node next; } public void delete(Node head,int num){ Node p1 = head; Node p2 = head; int index = 0; while(p1 != null){ p1 = p1.next; index++; if(index > num){ p2 = p2.next; } } if(p2.next == null){ p2 = null; }else{ p2.val = p2.next.val; p2.next = p2.next.next; } }
原文:https://www.cnblogs.com/DarrenChan/p/9653003.html