рдПрдЖрд░рдП: рдПрдХ рд╕реАрдзреА рд░реЗрдЦрд╛ рдкрд░ рдЕрдзрд┐рдХрддрдо рдЕрдВрдХ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореБрдЭреЗ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдЖрдИ: рдПрдХ рд╕реАрдзреА рд░реЗрдЦрд╛ (рдПрдХ рд╡рд┐рдорд╛рди, рдкреВрд░реНрдгрд╛рдВрдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ) рдкрд░ рдЦрдбрд╝реЗ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЕрдзрд┐рдХрддрдо рдЕрдВрдХреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдирд╛ред рд╕рдВрдкреВрд░реНрдг рдЦреЛрдЬ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рддреБрд░рдВрдд рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрдпрд╛, рдЬрд┐рд╕рдореЗрдВ O (n ^ 2) рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╕рдордп рдХреА рдЬрдЯрд┐рд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рдкреНрд░рддреАрдд рд╣реБрдЖ рдХрд┐ O рдореЗрдВ рдХреБрдЫ рдФрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк рддреЛ (n * log (n)) ред рдЖрдзреЗ рдШрдВрдЯреЗ рдХреЗ рдмрд╛рдж, рдХреБрдЫ рдмреЗрд╣рддрд░ рднреА рдорд┐рд▓рд╛!

рдЫрд╡рд┐

рдЗрдирдкреБрдЯ-рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг GeeksForGeeks рдФрд░ LeetCode рдкрд░ рд╣реИ

рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЖрдк рдХреЗрд╡рд▓ рдХреНрд╖реИрддрд┐рдЬ рдпрд╛ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдВрджреБ рдХреЗ X / Y рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рджреВрд╕рд░реА рд░реЗрдЦрд╛рдУрдВ рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ? рдмрд╕ рдПрдХ рдврд▓рд╛рди? .. рд▓реЗрдХрд┐рди рдпрд╣ рдареАрдХ рд╣реИ!

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдореИрдВрдиреЗ рддрдп рдХрд┐рдпрд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдШреБрдорд╛рдХрд░ рдЕрдВрдХ рдХреА рдкреВрд░реА рд╕реВрдЪреА рдореЗрдВ рдХрдИ рдмрд╛рд░ рдЬрд╛рдирд╛ рд╕рдВрднрд╡ рдерд╛ред рдФрд░ O (n) рдореЗрдВ рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ! рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рдмрдбрд╝реЗ рдЧреБрдгрд╛рдВрдХ рдХреЗ рд╕рд╛рдеред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╢рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВрдиреЗ рд╕рд╛рдЗрдХрд┐рд▓ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ :)

# ***  *** #   #    = 180/ROT_COUNT  # #      12, #  180*4    (6% ), #  180*20   (0% ). # ├│    . #     - . ROT_COUNT = 180*10 #  #        , #       1 / MULT_COEF. #    4  . #   MULT_COEF   ROT_COUNT. # ├│    - . #     - . MULT_COEF = 2 ** 3 angles = list(map(lambda x: x*180.0/ROT_COUNT, range(ROT_COUNT))) def mnp_rotated(points, angle): """Returns Maximum Number of Points on the same line with given rotation""" #   rad = math.radians(angle) co = math.cos(rad) si = math.sin(rad) #      counts = {} for pair in points: #    nx = pair[0]*co - pair[1]*si #       , #      #       #      nx = int(nx * MULT_COEF) #   if nx in counts: counts[nx] += 1 else: counts[nx] = 1 #    return max(counts.values()) def mnp(points): """Returns Maximum Number of Points on the same line""" res = 0 best_angle = 0 #      for i in angles: current = mnp_rotated(points, i) #  ,     if current > res: res = current best_angle = i return res 

рдХрд▓реНрдкрдирд╛, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдШрд░-рдирд┐рд░реНрдорд┐рдд GIF, рдХреГрдкрдпрд╛ рдбрд╛рдВрдЯреЗ рдирд╣реАрдВ :)

рдЫрд╡рд┐

рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдмрд╛рдж рдХреА рд╡рд┐рд╕реНрддреГрдд рдЦреЛрдЬ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдиреЗ рдХреЛрдб рдХреА рдЕрдзрд┐рдХ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд▓реЗ рд▓рд┐рдпрд╛ред

рдореЗрд░реЗ рдШреВрд░реНрдгреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд░рдирдЯрд╛рдЗрдо рдХреЗ рдорд╛рдк рдХреЗ рд╕рд╛рде рдЧреНрд░рд╛рдл рдФрд░ рдЕрдВрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреВрд░реНрдг рдЧрдгрдирд╛ рд╣реИред

рдпрд╣рд╛рдВ рдЪрд╛рд░реНрдЯ рдЦреЛрд▓реЗрдВ
рдЫрд╡рд┐

рд▓рдЧрднрдЧ 150 рдЕрдВрдХ рд╕рдордп рдореЗрдВ рд░реИрдЦрд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рд▓рд╛рдн рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ (рдКрдкрд░ рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЧреБрдгрд╛рдВрдХ рдХреЗ рд╕рд╛рде)ред рдирддреАрдЬрддрди, рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдиреБрдХрд╕рд╛рди рд╣реИрдВ:

  • рд╕рдЯреАрдХрддрд╛ рдирд┐рд░рдкреЗрдХреНрд╖ рдирд╣реАрдВ рд╣реИред
  • рдЕрдВрдХреЛрдВ рдХреЗ рдЫреЛрдЯреЗ рд╕реЗрдЯ рдкрд░ рд░рдирдЯрд╛рдЗрдо рд▓рдВрдмрд╛ рд╣реИред
    рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдЧреБрдгрд╛рдВрдХ рдХреЗ рдПрдХ рд╕рдХреНрд╖рдо рдЪрдпрди рджреНрд╡рд╛рд░рд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рд╕рд░рд▓ рд╕реЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП, 2000 рдХреЗ рдмрдЬрд╛рдп ROT_COUNT = 36 рдХрд╛рдлреА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЬреЛ рдХреЛрдб рдХреЛ 50+ рдмрд╛рд░ рдЧрддрд┐ рджреЗрддрд╛ рд╣реИред

рдФрд░ рдРрд╕реЗ рдлрд╛рдпрджреЗ:

  • рдпрд╣ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд╕рд╛рде рд╢рд╛рдВрддрд┐ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
  • рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛ рд░реИрдЦрд┐рдХ рд╣реИ, рдЬреЛ рдмрдбрд╝реЗ рдбреЗрдЯрд╛ рд╕реЗрдЯреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред

рдорд╛рдк рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИ ред рджреЛрдиреЛрдВ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЪреЗрдХ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╕рдВрдкреВрд░реНрдг рд╕реНрд░реЛрдд рдХреЛрдб GitHub рдкрд░ рд╣реИ ред

рдЕрджреНрдпрддрдиред рдореИрдВ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рджреЛрдиреЛрдВ рд╣реИрдВ, рдореИрдВ рдЗрд╕реЗ рдмреНрд░реВрдЯ рдмрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрджрд░реНрд╢ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рд╡рдХрд╛рд▓рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╕рдВрднрд╡ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ, рдЬреЛ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

Source: https://habr.com/ru/post/hi454388/


All Articles