google bad horse

google bad horse


此题大意就是:  给定m对不相容的 对象, 问是否存在某种分成2部份的方法,满足不相容的对象分别在两边。设字符串最大长度len


思路:

分成2部分,那么就设为类1,类2。

不相容就让2顶点相连有条边。  然后初始让某点属于类1,从某点开始遍历图,然后看是否会有矛盾产生。

因此很简单。

遍历算法复杂度应该是 O(m)。


但这道题给定的对象是字符串,这时候需要对字符串进行处理。


做法一: 如果是用stl的map将字符串与数字进行绑定,假设有2m个对象,进行建立map,由于是红黑树,所以复杂度是O(mlogm),并且每次字符串比较,最坏复杂度为O(len)

因此此时算法复杂度为O(mlogm*len)。 这也是网上查到的大多数人的做法。


做法二:如果能利用类似哈希表进行存储的方式,那么不妨设每个字符串得到一个哈希值的复杂度为O(len),那么m对,就是O(m*len)。

因此此时算法复杂度为O(m*len)


做法三:.存储查找字符串若用类似字典树的方法,那么复杂度类似的也是O(m*len)


不过似乎google里m值只有100,log级别最多10倍的消耗。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值