s****y 发帖数: 503 | 1 今天online test,问了我一道Java面试题,‘Person’ class 有String name, int
age, char sex, Person spouse, Person mother, Person father, List
children, 让我写method,找到list of all older sisters和list of all ancestors
,这道题主要想考察什么?怎么写比较好? | l******t 发帖数: 55733 | | d******e 发帖数: 2265 | 3 就是一个flooding或者bfs算法吗。
ancestors
【在 s****y 的大作中提到】 : 今天online test,问了我一道Java面试题,‘Person’ class 有String name, int : age, char sex, Person spouse, Person mother, Person father, List : children, 让我写method,找到list of all older sisters和list of all ancestors : ,这道题主要想考察什么?怎么写比较好?
| m*********a 发帖数: 3299 | 4 ancenstor
就是把mother 和 father 以及 mother.mother, mother.father, father.mother,
father.father这样往上找
可以把当前的ancestor放到一个queue中,DFS或BFS
old sister 就mother.children或father.children 中age>this.age, sex='F'的
person
把结果返回一个ListArray findAncentor(){}
ListArray findOldSister(){}
ancestors
【在 s****y 的大作中提到】 : 今天online test,问了我一道Java面试题,‘Person’ class 有String name, int : age, char sex, Person spouse, Person mother, Person father, List : children, 让我写method,找到list of all older sisters和list of all ancestors : ,这道题主要想考察什么?怎么写比较好?
| s****y 发帖数: 503 | 5
但是当前的person是树中的一个子节点,从一个子节点出发,要遍历比他层次高的所有
节点,这怎么做?我的理解有问题?
【在 m*********a 的大作中提到】 : ancenstor : 就是把mother 和 father 以及 mother.mother, mother.father, father.mother, : father.father这样往上找 : 可以把当前的ancestor放到一个queue中,DFS或BFS : old sister 就mother.children或father.children 中age>this.age, sex='F'的 : person : 把结果返回一个ListArray findAncentor(){} : ListArray findOldSister(){} : : ancestors
| g*****g 发帖数: 34805 | 6 这其实是个无向图。
【在 s****y 的大作中提到】 : : 但是当前的person是树中的一个子节点,从一个子节点出发,要遍历比他层次高的所有 : 节点,这怎么做?我的理解有问题?
| m*********a 发帖数: 3299 | 7 这个结构不是tree,就是所有的person 存在一个 array中
person的关系是靠composition reference的
【在 g*****g 的大作中提到】 : 这其实是个无向图。
| s****y 发帖数: 503 | 8
找祖先是递归吗?每一个人都有父有母,把家谱反着看好像也是binary tree吧,如果
要祖先定义为父的父,父的母,母的父,母的母,是不是应该用tree traversal呢?
【在 g*****g 的大作中提到】 : 这其实是个无向图。
| N********n 发帖数: 8363 | 9
ancestors
OLDER SISTERS在MOTHER, FATHER的CHILDREN里面找。ALL ANCESTORS从当前
节点用MOTHER、FATHER反推一路到ROOT节点MOTHER、FATHER为空为止。如果
这个树均衡的话复杂度是O(log N)。本科离散数学的作业题水平。
【在 s****y 的大作中提到】 : 今天online test,问了我一道Java面试题,‘Person’ class 有String name, int : age, char sex, Person spouse, Person mother, Person father, List : children, 让我写method,找到list of all older sisters和list of all ancestors : ,这道题主要想考察什么?怎么写比较好?
| m*********a 发帖数: 3299 | 10 这个是graph不是tree
【在 s****y 的大作中提到】 : : 找祖先是递归吗?每一个人都有父有母,把家谱反着看好像也是binary tree吧,如果 : 要祖先定义为父的父,父的母,母的父,母的母,是不是应该用tree traversal呢?
| | | g*****g 发帖数: 34805 | 11 确切说是个全联通有向图。不需要啥tree traversal,广度优先遍历就是。
【在 s****y 的大作中提到】 : : 找祖先是递归吗?每一个人都有父有母,把家谱反着看好像也是binary tree吧,如果 : 要祖先定义为父的父,父的母,母的父,母的母,是不是应该用tree traversal呢?
| h**********c 发帖数: 4120 | 12 database normal form
JPA
Entity relationship | h**********c 发帖数: 4120 | 13 你要是写几行relational algebra, relational calculus,估计就傲佛了 | c*****g 发帖数: 76 | 14 import java.util.*;
public class Person
{
String name;
int age;
char sex;
Person spouse, mother, father;
List children;
public Person(String name, int age, char sex)
{
this.name = name;
this.age = age;
this.sex = sex;
this.spouse = this.mother = this.father = null;
this.children = new ArrayList();
}
public void setMother(Person mum)
{
this.mother = mum;
mum.children.add( this );
}
public void setFather(Person dad)
{
this.father = dad;
dad.children.add( this );
}
private void addOlderSisters(List os, List l)
{
for (int len = l.size(), i = 0; i < len; i++) {
Person a = l.get(i);
if ( a.sex == 'F' && a != this && a.age > this.age && !os.contains(a) )
os.add(a);
}
}
public List getOlderSisters()
{
List os = new ArrayList();
addOlderSisters(os, this.mother.children);
// also do it for the father side to include half-sisters
addOlderSisters(os, this.father.children);
return os;
}
private List addParents(List l)
{
if ( this.father != null && !l.contains(this.father) ) {
l.add( this.father );
this.father.addParents( l );
}
if ( this.mother != null && !l.contains(this.mother) ) {
l.add( this.mother );
this.mother.addParents( l );
}
return l;
}
public List getAncesters()
{
List l = new ArrayList();
return addParents(l);
}
public String toString()
{
return "{" + this.name + ", " + this.age + ", " + this.sex + "}";
}
public static void main(String[] args)
{
Person a = new Person("Alice", 10, 'F');
Person b = new Person("Bob", 11, 'M');
Person c = new Person("Charlie", 72, 'M');
Person d = new Person("Daniel", 42, 'M');
Person e = new Person("Emma", 42, 'F');
Person f = new Person("Fiona", 14, 'F');
Person g = new Person("Ginny", 18, 'F');
a.setFather(d);
a.setMother(e);
b.setFather(d);
b.setMother(e);
f.setFather(d);
f.setMother(e);
e.setFather(c);
g.setFather(d);
System.out.println(b.getOlderSisters());
System.out.println(b.getAncesters());
}
} | h**********c 发帖数: 4120 | 15 吹不吹,我老实现过老板的business model真实地产生过revenue。
这个题换个问法,你给我boston 地区的sales lead(customer brought in other
customers).
那么older sister不就是
join 同一个table,group by parentId,sex = f, a.age > b.age
看来真是吹牛的多,能建模的shao,建过能用的真不露吧,还是本版没有。
ancestors
【在 s****y 的大作中提到】 : 今天online test,问了我一道Java面试题,‘Person’ class 有String name, int : age, char sex, Person spouse, Person mother, Person father, List : children, 让我写method,找到list of all older sisters和list of all ancestors : ,这道题主要想考察什么?怎么写比较好?
| h**********c 发帖数: 4120 | |
|