由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问个常见算法题的变形
相关主题
hashtable在c++里怎么实现?请问我写的这个代码哪可以改进一下
问个常见算法题的变形微软onsite
攒rp,Amazon两轮电话面经请教amazon面试题
white board coding的时候如果遇到hash table两道简单的面试题
请教:C++, 忽略大小写的字符串比较A家新鲜面经--都是经典题
find, insert, delete, getRandom in O(1)问一道关于字符串的面试题
两次重要的面试都fail在同一个问题上请教一道题:Remove adjacent duplicate char recursively fro
Google店面刚结束MS intern 电面被拒,附上面试过程
相关话题的讨论汇总
话题: mix话题: string话题: hashcode话题: hashtable话题: int
进入JobHunting版参与讨论
1 (共1页)
g*******s
发帖数: 2963
1
一个简单的class只包含多个不同类型的data member。比如:
class Data
{ int a; float b, string c};
一个数组或list包含很多个class Data的object,如何删除duplicate (就是 啊所有
member都相同)。
我回答了用hashtable和分层sort,比如先sort by a,然后在duplicated a 里sort by
b.......
被告知还有很多更好的方法~
n*******r
发帖数: 22
2
这样行不 - 如果是C#或者是Java,可以override这个类的GetHashCode()函数(或者类
似的函数),让两个object只有在所有member都相同时hashcode才相同。
然后再用hashtable一个一个的存每个object的hashcode,如果已经在hashtable中,就
把当前的
object从list中删除。
如果是C++,可以用类似的方法。

by

【在 g*******s 的大作中提到】
: 一个简单的class只包含多个不同类型的data member。比如:
: class Data
: { int a; float b, string c};
: 一个数组或list包含很多个class Data的object,如何删除duplicate (就是 啊所有
: member都相同)。
: 我回答了用hashtable和分层sort,比如先sort by a,然后在duplicated a 里sort by
: b.......
: 被告知还有很多更好的方法~

f*********i
发帖数: 197
3
我测试了一下,好像不行啊
我自己写了一个类
static class Mix{
private int a; double b; String c;
Mix(int a,double d,String c){
this.a=a;this.b=d;this.c=c;
}
public int hashCode(){
return 1;
}
}
在main函数中,我创建了两个一样的实例,但是hashtable认为他们是不一致的,我已
经重载了这个类的hashCode这个函数了啊。
public static void main(String[] args)
Mix m1 = new Mix(1,0.53,"yes");
Mix m2 = new Mix(1,0.52,"yes");
System.out.println(m1.hashCode());
System.out.println(m2.hashCode());
Hashtablehash = new Hashtable();
hash.put(m1, m1.hashCode());
if(hash.get(m2)!=null)
System.out.println("found");
else
System.out.println("not found");
System.out.println(hash.get(m1));
}
输出
1
1
not found
1
f*********i
发帖数: 197
4
后来想了一下,hash的思路应该是对的,能不能自己建立一个hash index呢
比如例子中class,完全可以对每一个类生成一个correspond String St
St = ""+a+b+c;
然后对这个st做hash
b*******8
发帖数: 37364
5
先序列化(方法很多),然后不管哈希还是排序啥的都行。
g**e
发帖数: 6127
6
override hashCode() method
public int hashCode() {
int h = a;
h = h*37 + Float.floatToIntBits(b);
h = h*37 + c.hashCode();
return h;
}
if you need to implement explicitly string hash code function, use this
method:
string_hash = s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]

by

【在 g*******s 的大作中提到】
: 一个简单的class只包含多个不同类型的data member。比如:
: class Data
: { int a; float b, string c};
: 一个数组或list包含很多个class Data的object,如何删除duplicate (就是 啊所有
: member都相同)。
: 我回答了用hashtable和分层sort,比如先sort by a,然后在duplicated a 里sort by
: b.......
: 被告知还有很多更好的方法~

1 (共1页)
进入JobHunting版参与讨论
相关主题
MS intern 电面被拒,附上面试过程请教:C++, 忽略大小写的字符串比较
一个google面试题find, insert, delete, getRandom in O(1)
电话号码的英文combination变种两次重要的面试都fail在同一个问题上
请教一个电话面试题Google店面刚结束
hashtable在c++里怎么实现?请问我写的这个代码哪可以改进一下
问个常见算法题的变形微软onsite
攒rp,Amazon两轮电话面经请教amazon面试题
white board coding的时候如果遇到hash table两道简单的面试题
相关话题的讨论汇总
话题: mix话题: string话题: hashcode话题: hashtable话题: int