数据结构与算法
jingshuiliushen_zj
这个作者很懒,什么都没留下…
展开
-
面试题07:用两个栈实现一个队列
题目描述:用两个栈实现一个队列。分别完成在队列尾部插入结点和在队列头部删除结点的功能。基本知识:(1)队列的操作: offer:队尾插入元素,插入失败返回false。 poll:队头取出元素 LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。(2)实现栈的操作: push:向栈中压入元素。 pop:从...原创 2018-08-17 15:53:56 · 194 阅读 · 0 评论 -
判断两个矩形是否有重叠
今天笔试遇到这个题目,原来是图像中的问题:判断图像中检测到的两个人脸框矩形是否有重叠部分,并计算重叠大小,从而确认是否为同一个人脸。直接判断的话,情况有点多,比如:这样代码就比较繁琐了。如果是先考虑没有重叠呢?如上图所示,没有重叠的话,可以分为四种情况,假设红色矩形为A,绿色矩形为B,那么B可以分别在A的上、下、左、右四种情况。设A的左上角坐标为p1,右下角坐标为p2,B的左上角坐标...原创 2018-11-10 20:13:45 · 8666 阅读 · 2 评论 -
根据三点坐标求三角形面积
point.pyimport mathclass CPoint: def __init__(self,x,y): self.x=x self.y=y def point_distance(self,p): return math.sqrt(math.pow(p.x-self.x,2)+math.pow(p.y-self.y,2))...原创 2018-11-10 17:02:31 · 5599 阅读 · 0 评论 -
单链表的常用操作
生活果然是需要一点刺激的,从今天开始,我一定要好好写博客!!首先链表的节点定义:class Node{ public int data; public Node next;}以下操作假设单链表有头结点(head!=null)。1、末尾添加节点public void addNode(Node node){ Node current=head;//head是单链表的头结点 whi...原创 2018-10-30 20:33:55 · 208 阅读 · 0 评论 -
蓄水池采样原理
一、原理蓄水池采样算法解决的是在给定但长度未知的大数据集中,随机等概率抽取一个数据。如果知道数据集的长度,可以用随机数rand()%n得到一个确切的随机位置,那么该位置的对象就是所求的对象,选中的概率是1/n。那长度未知该如何取?尤其是如果这个大数据集不能一次性放入内存中,蓄水池采样算法就非常有用了。算法思路:我们总是选择第一个对象,以1/2的概率选择第二个,以1/3的概率选择第三个,以此类推...原创 2018-11-01 10:12:21 · 2119 阅读 · 0 评论 -
二叉树的非递归遍历
1、先序遍历遍历顺序:根左右,利用栈public void preOrder(TNode root){ if(root==null){ return ; } Stack<TNode> s=new Stack<TNode>(); while(!s.empty()||root!=null){ while(root!=null){ print(root....原创 2018-10-31 11:25:49 · 132 阅读 · 0 评论 -
面试题10:输出二进制中1的个数
1.解法一:public static int findNumberOf1(int num){ int count=0; while(num!=0){ if((num&amp;amp;1)!=0){ count++; } num=num&amp;gt;&amp;gt;1; ...原创 2018-08-21 16:26:44 · 431 阅读 · 0 评论 -
面试题12:打印1到最大的n位数
如输入3,输出1到999 注意,此题不能简单的用整型存储最大位数,因为可能会溢出,也就是说,我们需要考虑大数问题。public static void print1ToN(int n){ List&amp;lt;Integer&amp;gt; list=new ArrayList&amp;lt;&amp;gt;(); //list的长度=n的值 for(int i=0;i&a原创 2018-08-23 15:26:23 · 162 阅读 · 0 评论 -
面试题13:在O(1)时间删除链表节点
在给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点。一般思路:从头开始遍历链表,找到指定节点的前一个节点,删除指定节点,那么这样的时间复杂度是O(n). 怎么样才能做到O(1)的时间复杂度呢?我们是否必须得找到前一个节点?换一个角度,删除当前节点不容易,但是删除当前节点的下一个节点是不是和容易?我们可以将指定节点的下一个节点的值赋给当前节点,然后删除下一个节点….....原创 2018-08-23 16:13:08 · 348 阅读 · 1 评论 -
面试题11:数值的整数次方
试着用python写了写,顺便练一下python怎么用。1.非递归方法#判断两个小数是否相等def isEqual(num1,num2): if abs(num1-num2)<1e-6: return True return False#求小数的整数次方,这里仅分四种情况:1.底数为0 2.指数为0 3.指数是负数 4.都为正数def power...原创 2018-08-19 21:10:39 · 149 阅读 · 0 评论 -
求a的开方
方法1:梯度下降令x=a\sqrt{a}a,那么x2=ax^2=ax2=a,写成方程的形式就是f(x)=x2−af(x)=x^2-af(x)=x2−a,问题就转化为求f(x)=0f(x)=0f(x)=0的解,怎么转化为用梯度下降求呢?因为梯度下降是求极值的问题,可以把f(x)f(x)f(x)看成是某个函数的导数,也就是g(x)=13x3−axg(x)=\frac{1}{3}x^3-axg(x)...原创 2018-11-19 10:19:21 · 765 阅读 · 1 评论