您的位置:首页 > 其它

百度作业帮一面总结

2015-11-06 17:59 351 查看
1、让写了一个算法:具体题目是,给你两个有序链表,怎样找到相同的元素,并保存后输出,下面是我的代码:(有链表的构成和实现函数)----哈哈,算法难不倒我滴,人称“小数据结构”

package linkedlist;

import java.util.ArrayList;
import java.util.LinkedList;

/**
* Created by Administrator on 2015/11/6 0006.
*/
public class Pandeng {
public static void main(String[] args) {
Node h1=new Node(0);
Node head1=h1;
Node h2=new Node(1);
Node head2=h2;
Node t1;
Node t2;
for(int i=1;i<5;i++){
t1=new Node(i);
h1.next=t1;
h1=t1;
}
h1.next=null;
for(int i=2;i<6;i++){
t2=new Node(i);
h2.next=t2;
h2=t2;
}
h2.next=null;

ArrayList<Integer> list=new ArrayList<Integer>();
list=doWork(head1,head2);
for(int i:list)
System.out.print(i+" ");
}

private static ArrayList<Integer> doWork(Node h1, Node h2) {
if(h1==null||h2==null)
return null;
ArrayList<Integer> list=new ArrayList<Integer>();

while(h1!=null&&h2!=null){
if(h1.value==h2.value){
list.add(h1.value);
h1=h1.next;
h2=h2.next;
}
else if(h1.value>h2.value)
h2=h2.next;
else
h1=h1.next;
}
return list;
}

static class Node{
Node next;
int value;

public Node(int value) {
this.value = value;
next=null;
}
}
}
最后一面面试官问我对此进行测试的话有哪些测试用例:我说出来4个:

(1)链表为空的情况

(2)两个链表没有相同元素的情况

(3)其中一个链表的最大值是这个链表的最小值

(4)普通情况:就是有几个相同的值

时候才被自己的单细胞给蠢哭了,下面是我又响起的几个测试用例:

(5)都相等(这个怎么就没想到呢,都想到都不相等的了都相等不就是嘴上的事吗,哎。。。不过总结经验是好的)

(6)连表中有几个连续相等的数据---该怎么办,这种情况就是在比较一下下一个元素不就行了,简直被自己给蠢哭了。。。不开森

不过言归正传,还是要继续学习的,对于(6)这种情况,处理函数应该这么写滴:想了想其实没必要,因为题目就是找出相同元素即可。

不过如果既然找出相同元素,又要找出相同元素的个数那么用hashmap进行存储。代码下篇附上

2、对做过的项目的一些介绍,被一个问题问住了,因为没接触过:就是==和===有什么区别,,,,晕了,貌似见过===的那是自我感觉肯定是写错了,我就呵呵了。

具体详解点击打开链接

3、还有就是对数据库的使用:主要是索引,食物的原子性(要么都做要么都不做),患有表之间的关联(可以使用外键,创建视图),患友就是限时抢购模块,怎么能保证公平的情况下有能抢到东西,(我是用平均分法处理的,就是有m个用户再抢,n件商品,m肯定>n)此时就要均分,就是将人分成n组,每组m/n人1件商品,保证了公平性,但是你怎么知道此时的人数呢:我用了一个方法:那就是在数据库中新建一个表,记录用户,商品,商品件数等几个字段,然后用户id是自动递增,用sql语句的出最后一行的id传进来作为人数(貌似直接计算行数就行即:count(*)就ok,又被自己蠢哭了。。。)。患友就是数据库的藏数据问题,这个下下篇介绍。。吃饭去了。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: