Skip to content

Commit 6cb8918

Browse files
committed
704
1 parent d18f593 commit 6cb8918

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

ruby/704-Binary-Search.rb

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Iteraton
2+
def search(nums, target)
3+
return -1 if nums.empty?
4+
5+
half = nums.length / 2
6+
case nums[half] <=> target
7+
when 1
8+
search(nums[0...half], target)
9+
when -1
10+
idx = search(nums[half + 1..-1], target)
11+
(idx == -1 ? -1 : half + 1 + idx)
12+
when 0
13+
half
14+
end
15+
end
16+
17+
# Recursion
18+
def search(nums, target)
19+
left = 0
20+
right = nums.length - 1
21+
while left <= right
22+
half = (left + right) / 2
23+
case nums[half] <=> target
24+
when 1
25+
right = half - 1
26+
when -1
27+
left = half + 1
28+
when 0
29+
return half
30+
end
31+
end
32+
-1
33+
end

0 commit comments

Comments
 (0)