【问题标题】:Need two solution for fast algorithms需要两个快速算法的解决方案
【发布时间】:2011-07-01 09:18:06
【问题描述】:

我有一个出价表(不同的用户)。每个用户都可以随时出价(无限制)。

我需要应用两条应该取消出价的规则: 第一条规则 - 不超过 4 个连续出价,这意味着如果用户有: 10.50 10.47 10.36 10.20 10.00 所以 10.00 应该被取消。

第二个规则是前50个投标中不超过9个投标,同样,第10个应该被取消。

我这样做真的很长,只是在投标表上运行并连续计数。但我想知道是否有人有其他想法......(php + mysql)

谢谢

【问题讨论】:

  • 请给出更详细的连续性标准。只有递减,还是递增? 10 11 9 8 7 是连续的吗?
  • 第一个条件的连续只是一个接一个,中间没有任何其他用户的出价。不管是 1 美分还是 50 美分将它们分开,它仍然算作连续的。

标签: php mysql algorithm performance


【解决方案1】:

对于第二个条件:

SELECT username, count(*) as bids
FROM 
  (SELECT username
  FROM bids
  ORDER BY bid_timestamp DESC
  LIMIT 50)
WHERE username = :username
GROUP BY username
HAVING COUNT(*) > :bid_limit

如果此记录返回任何行,则不允许新出价。可能是一种更好的方法,但它比将所有 50 行返回到 php 然后迭代并计数要好。

【讨论】:

  • 问题是需要取消较低的包。有 9 个出价,然后再出价高于 9 个出价中最低的一个,那么第 9 个应该被取消,新的出价就可以了……
猜你喜欢
  • 1970-01-01
  • 2020-08-31
  • 2020-09-26
  • 2016-03-31
  • 1970-01-01
  • 1970-01-01
  • 2023-01-26
  • 2017-10-02
  • 1970-01-01
相关资源
最近更新 更多