1560.rb 883 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. # 1560. Most Visited Sector in a Circular Track
  2. # @param {Integer} n
  3. # @param {Integer[]} rounds
  4. # @return {Integer[]}
  5. def most_visited(n, rounds)
  6. expanded = []
  7. expanded.push(rounds.shift())
  8. loop do
  9. nxt = rounds.shift()
  10. break if nxt.nil?()
  11. i = expanded.last()
  12. loop do
  13. i = i+1 > n ? 1 : i+1
  14. expanded.push(i)
  15. break if i == nxt
  16. end
  17. break if rounds.last().nil?()
  18. end
  19. uses = Hash.new(0)
  20. expanded.each {|x| uses[x] += 1}
  21. max_amount = 0
  22. uses.each_pair {|k, v| max_amount = v > max_amount ? v : max_amount}
  23. res = []
  24. uses.each_pair {|k, v| if v == max_amount then res.push(k) end}
  25. res.sort()
  26. end
  27. def main()
  28. puts String(most_visited(4, [1, 3, 1, 2]) == [1,2])
  29. puts String(most_visited(2, [2,1,2,1,2,1,2,1,2]) == [2])
  30. puts String(most_visited(7, [1,3,5,7]) == [1,2,3,4,5,6,7])
  31. end
  32. if __FILE__ == $0
  33. main()
  34. end