Skip to content

Commit c5b1b9d

Browse files
committed
refactor search in rotated sorted array
1 parent ca3f19a commit c5b1b9d

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

go/search_in_rotated_sorted_array.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,22 @@ func searchClosed(nums []int, target int) int {
2525
return -1
2626
}
2727

28+
// 半閉区画ではleft~right-1が未探索で、rightは常に探索済み
2829
func searchHalfClosed(nums []int, target int) int {
2930
left, right := 0, len(nums)
3031
for left < right {
3132
mid := left + (right-left)/2
32-
if target == nums[mid] {
33+
if nums[mid] == target {
3334
return mid
3435
}
35-
if nums[left] <= nums[mid] {
36-
if nums[left] <= target && target < nums[mid] {
36+
if nums[left] < nums[mid] { // この問題の条件では全ての要素が異なるので、nums[left] == nums[mid]の時点で-1を返せばいいので、<=とする必要はない
37+
if nums[left] <= target && target < nums[mid] { // leftがtargetの可能性もあるので<=とする
3738
right = mid
3839
} else {
3940
left = mid + 1
4041
}
4142
} else {
42-
if nums[mid] < target && target <= nums[right-1] {
43+
if nums[mid] < target && target <= nums[right-1] { // rightは最初は範囲外なので-1をする。その場合right-1は未探索なので<=とする
4344
left = mid + 1
4445
} else {
4546
right = mid

0 commit comments

Comments
 (0)