2つの数値の合計
整数配列numsとターゲット値targetを指定して、合計が配列内のターゲット値である2つの整数を見つけ、それらの配列添え字を返します。
各入力は1つの回答にのみ対応すると想定できます。ただし、この配列で同じ要素を再利用することはできません。
# @param {Integer[]} nums
# @param {Integer} target
# @return {Integer[]}
def two_sum(nums, target)
length = nums.size()
i = 0
while i < length
j = i + 1
while j < length
if target == nums[i] + nums[j]
return [i,j]
end
j += 1
end
i+=1
end
end
整数反転
32ビットの符号付き整数を指定すると、各整数の桁を反転させる必要があります。
# @param {Integer} x
# @return {Integer}
def reverse(x)
if x < 0
fu = -x.to_s
return aa(-fu.reverse.to_i)
else x > 0
zh = x.to_s
return aa(zh.reverse.to_i)
end
end
def aa(x)
if x < 2147483647 && x > -2147483648
x
else
return 0
end
end
一意の出現回数
整数配列arrを指定してください。配列内の各数値の出現回数を数えてください。
各数値の発生数が一意である場合はtrueを返し、それ以外の場合はfalseを返します。
def unique_occurrences(arr)
ha = Hash.new(0)
arr.each do |a|
ha[a] += 1
end
ar = ha.values
ar.size == ar.uniq.size
end
最小の絶対差
により、整数配列arrが得られます。ここで、各要素は異なります。
絶対差が最も小さいすべての要素ペアを見つけ、昇順で返します。
def minimum_abs_difference(arr)
arr = arr.sort#数组排序
length = arr.size()
i = 1
ha = Hash.new(0)
while i < length
num = (arr[i - 1] - arr[i]).abs
unless ha.keys.include?(num)
ha[num] = []
end
ha[num] += [[arr[i - 1],arr[i]]]
i += 1
end
m = ha.keys.min
ha[m]
end
「バルーン」の最大数は
テキストの文字列を提供します。テキスト内の文字を使用して、できるだけ多くの単語「バルーン」をつなぎ合わせる必要があります。
文字列テキストの各文字は1回しか使用できません。つなげることができる「バルーン」の最大単語数を返してください。
PS:コードには最適化の余地がたくさんあります。
def max_number_of_balloons(text)
flag = 0
p = false
te = text.split("")
qi = ["b","a","l","o","n"]
ci = Hash.new(0)
te.each do |t|
if qi.include?(t)
ci[t] += 1
flag += 1
end
end
ci["l"] = ci["l"]/2
ci["o"] = ci["o"]/2
qi.each do |q|
unless ci.include?(q)
flag = 0
end
end
flag
if flag != 0
ci.values.min.round(0)
else
flag
end
end
階段を上る階段を上っている
とします。建物の最上部に到達するには、nステップかかります。
毎回1つまたは2つの階段を上ることができます。建物の最上部に登るには、いくつの方法がありますか?
注:与えられたnは正の整数です。
def climb_stairs(n)
if n == 1
return 1
else
a, b, re = 1, 1, 0
while n > 1
re = a + b
b = a
a = re
n -= 1
end
return re
end
end