検索

ホームページ  >  に質問  >  本文

java - 算法问题:同一时间不能存在三个公告

1.创建公告时有生效的时间段:开始时间和过期时间;

2.当创建新的公告时,要保证同一时间点不能存在三个同时生效的公告

高洛峰高洛峰2889日前380

全員に返信(7)返信します

  • PHPz

    PHPz2017-04-18 09:34:05

    新しい作品を作成するたびに、まず現在作成されているセットと重複するセットを見つけてから、重複するセットのペアがあるかどうかを確認する必要があります。存在する場合、そのセットは作成されません。これにより、セットが同じセット内に作成されることがなくなります。

    の時点で 3 つのアナウンスがあります。

    返事
    0
  • PHP中文网

    PHP中文网2017-04-18 09:34:05

    SQL を書くだけで完了です:

    リーリー

    結果が 3 未満の場合は、作成します。

    返事
    0
  • ringa_lee

    ringa_lee2017-04-18 09:34:05

    挿入するときは、テーブルを走査し、現在のタイムスタンプが 2 つのタイムスタンプの間にあるかどうかを判断し、この条件を満たす数値を記録します。 >= 3 の場合、挿入は実行されません。それ以外の場合は、データテーブルに挿入します。

    返事
    0
  • 阿神

    阿神2017-04-18 09:34:05

    2 つのタイム ポイントを使用して、この期間内に効果的な発表が何件あるかを数えてください。
    アイテムは 3 つ以上作成できません。

    返事
    0
  • 阿神

    阿神2017-04-18 09:34:05

    新しい発表と重なる時間を常に見つけて、毎日統計を作成する愚かな方法

    返事
    0
  • 高洛峰

    高洛峰2017-04-18 09:34:05

    書いてみましたので参考にしてください

    リーリー

    返事
    0
  • 阿神

    阿神2017-04-18 09:34:05

    古典的な線分範囲の問題。 Java については詳しくないので、O(n) のアイデアを教えます。

    1. まず、検証する間隔と交差するすべての間隔を見つけます。間隔の左の端点で小さいものから大きいものに並べ替えます

    2. 最初の間隔を CurrentInternal として記憶します

    3. CurrentInternal の場合、次の項目 NextInterval を調べます。CurrentInternal と交差しない場合は、CurrentInternal として記録し、2 にジャンプします。そうでない場合は、交差間隔を Intersection として記録します。

    4. Intersection の場合、NextInterval の後の項目をトラバースします。Intersection と交差する間隔がない場合は、NextInterval を CurrentInterval として記録し、2 にジャンプします。そうでない場合は、交差する間隔が 3 つあることを意味し、終了します。

    5. リスト全体が走査された場合、検証される間隔が正当であることが証明されます。


    JS で書かれたデモが付属しています。楽しんでいただければ幸いです

    https://jsfiddle.net/hsfzxjy/7td0rwr2/28/

    返事
    0
  • キャンセル返事