ruby中最小未占用椅子解的数目

ergxz8rk  于 2021-09-29  发布在  Java
关注(0)|答案(0)|浏览(234)

嗨,我正在学习ruby,并且已经开始练习leetcode中的问题,昨天我遇到了一个问题,从昨天起我就无法解决。我试着用ruby做这件事,但还没能做到。我试过这个

def give_chair(a)
    u = a.uniq
    d = []
    u.each do |i|
        d << i if a.count(i) == 1
    end
    d
end

def smallest_chair(times, target_friend)
  friend = times[target_friend]
  sorted_arrival_times = times.sort
  leave_time_chair = {}
  chair = 0
  chairs_array = []
  uniq_chars_array = []
  sorted_arrival_times.each do |i|
    if leave_time_chair.keys.select { |k| i[0] > k }.empty?
      leave_time_chair[i[1]] = chair
      chair+=1
    else
      all_keys = leave_time_chair.keys.select { |k|  k <= i[0] }
      chairs_array = leave_time_chair.values
      p chairs_array
      if give_chair(chairs_array).empty?
        leave_time_chair[i[1]] = chairs_array.sort.first
      else
        leave_time_chair[i[1]] = give_chair(chairs_array).sort.first
      end
    end
    if i == friend
      p leave_time_chair
      return leave_time_chair[i[1]]
    end
  end
end

# a = [[33889,98676],[80071,89737],[44118,52565],[52992,84310],[78492,88209],[21695,67063],[84622,95452],[98048,98856],[98411,99433],[55333,56548],[65375,88566],[55011,62821],[48548,48656],[87396,94825],[55273,81868],[75629,91467]]

# b = 6

# p smallest_chair(a, b)

但它在一些测试案例中失败了。我无法为它创建算法。
问题=https://leetcode.com/problems/the-number-of-the-smallest-unoccupied-chair
我的方法1。)首先,我根据到达时间对时间数组进行排序。
2.)然后迭代每个数组。
3.)现在,如果到达时间大于所有以前的离开时间(我正在创建键、离开时间的值对和给定的椅子),那么我在leave_time_chair(散列)中添加一个新的键=>值对,其中key是当前数组的离开时间,value是给定给它的椅子。
4.)然后我增加椅子(椅子+=1)
5.)否则,我将获得所有等于或小于当前到达时间的离开时间(所有_键=离开_时间_椅子。键。选择{k | k<=i[0]})
(6)然后我得到了当时所有的椅子
7.)现在我有了所有这样的椅子=>[0,0,1,2],所以我写了一个函数[give_chair(a)],它给了我那些不重复的元素。这样=>[1,2],然后我将最短的数字(椅子)分配给当前数组的离开时间。等等
8.)然后,如果我的当前数组等于朋友,我将返回该数组的主席。通过从散列(leave_time_chair)中提取它,返回leave_time_chair[i[1]]

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题