Codility質問はここにある:今https://codility.com/programmers/lessons/15-caterpillar_method/count_distinct_slices/コーディング:CountDistinctSlices。私は何が欠けていますか?
、私の解決策は以下の通りです:
def solution(m, a)
end_idx = 0
hash_of_elements = {}
last_idx = a.size - 1
slice_right_now = []
slice_counter = 0
while last_idx >= end_idx
el_to_add = a[end_idx]
while !hash_of_elements[el_to_add].nil?
element_to_remove = slice_right_now.shift
hash_of_elements.delete element_to_remove
#puts "removing #{element_to_remove} from the slice. the new slice is #{slice_right_now}. Hash is #{hash_of_elements.inspect}"
puts "#{slice_right_now.inspect}" if slice_right_now.size > 1
if slice_right_now.size > 1
slice_counter += 1
return 1000000000 if slice_counter > 1000000000
end
end
#puts "Adding #{el_to_add} to the list!"
hash_of_elements[el_to_add] = true
slice_right_now << el_to_add
puts "#{slice_right_now.inspect}" if slice_right_now.size > 1
if slice_right_now.size > 1
slice_counter += 1
return 1000000000 if slice_counter > 1000000000
end
end_idx += 1
end
puts "Number of slices other than indivisual elments are #{slice_counter}"
slice_counter += a.size
end
それはRubyのソリューションです。入力の場合:これに加えて
[1, 3]
[1, 3, 4]
[3, 4]
[3, 4, 1]
[3, 4, 1, 2]
[4, 1, 2]
[1, 2]
[2, 1]
[2, 1, 3]
[1, 3]
[1, 3, 2]
[3, 2]
[3, 2, 1]
、の各要素:6、[1、3、4、1、2、1、3、2、1]
これは、次のスライスを取得します配列もスライスです。
答えは間違っていますが明らかです。
私の入力は24です。鉱山は22です。紛失したものは分かりません。
後でこの問題を遭遇する可能性のある人は、アレイのサイズが1の場合は1スライスになります。サイズが2の場合は2 + 1スライスが可能です。 3の場合は3 + 2 + 1となります。したがって、スライスを列挙する必要はありません。配列の長さが変わると、スライスを数えるだけです。 –