兩數之和
給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。
你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。
# @param nums
# @param target
# @return
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]
endj += 1
endi+=1
endend
整數反轉
給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。
# @param x
# @return
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
enddef aa(x)
if x < 2147483647 && x > -2147483648
xelse
return 0
endend
獨一無二的出現次數
給你乙個整數陣列 arr,請你幫忙統計陣列中每個數的出現次數。
如果每個數的出現次數都是獨一無二的,就返回 true;否則返回 false。
def unique_occurrences(arr)
ha = hash.new(0)
arr.each do |a|
ha[a] += 1
endar = 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] =
endha[num] += [[arr[i - 1],arr[i]]]
i += 1
endm = ha.keys.min
ha[m]
end
「氣球」 的最大數量
給你乙個字串 text,你需要使用 text 中的字母來拼湊盡可能多的單詞 「balloon」(氣球)。
字串 text 中的每個字母最多只能被使用一次。請你返回最多可以拼湊出多少個單詞 「balloon」。
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
endend
ci["l"] = ci["l"]/2
ci["o"] = ci["o"]/2
qi.each do |q|
unless ci.include?(q)
flag = 0
endend
flag
if flag != 0
ci.values.min.round(0)
else
flag
endend
爬樓梯
假設你正在爬樓梯。需要 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
endreturn re
endend
力扣46 全排列
給定乙個 沒有重複 數字的序列,返回其所有可能的全排列。這道題其實就是看你如何遍歷這棵搜尋樹。輸入1,2,3情況下的求解樹,如下 如果用dfs來做 第一種思路,交換 可能比較難想到 說白了每次挑乙個數字出來,為了保證不重複,我就換就行了嘛。void perm int list,int k,int m...
力扣 46 全排列
傳送門 給定乙個沒有重複數字的數列,輸入該數列的全排列。這是一道回溯法 遞迴思想 的題目,可以通過遞迴來列舉所有的排列組合,為了避免重複使用某個數字,可以用flag標記每個數字是否使用。方面,回溯法的框架如下,細品 result def backtrack 路徑,選擇列表 if滿足結束條件 resu...
力扣習題 複寫零
給你乙個長度固定的整數陣列 arr,請你將該陣列 現的每個零都複寫一遍,並將其餘的元素向右平移。注意 請不要在超過該陣列長度的位置寫入元素。要求 請對輸入的陣列 就地 進行上述修改,不要從函式返回任何東西。示例 1 輸入 1,0,2,3,0,4,5,0 輸出 null 解釋 呼叫函式後,輸入的陣列將...