mirror of
https://github.com/krahets/hello-algo.git
synced 2026-08-28 10:57:15 +00:00
build
This commit is contained in:
@@ -26,7 +26,7 @@ comments: true
|
||||
|
||||
進一步思考二分搜尋過程:當 `nums[m] < target` 時 $i$ 移動,這意味著指標 $i$ 在向大於等於 `target` 的元素靠近。同理,指標 $j$ 始終在向小於等於 `target` 的元素靠近。
|
||||
|
||||
因此二分結束時一定有:$i$ 指向首個大於 `target` 的元素,$j$ 指向首個小於 `target` 的元素。**易得當陣列不包含 `target` 時,插入索引為 $i$** 。程式碼如下所示:
|
||||
因此二分結束時一定有:$i$ 指向首個大於 `target` 的元素,$j$ 指向最右一個小於 `target` 的元素。**易得當陣列不包含 `target` 時,插入索引為 $i$** 。程式碼如下所示:
|
||||
|
||||
=== "Python"
|
||||
|
||||
@@ -344,7 +344,7 @@ comments: true
|
||||
- 當 `nums[m] < target` 或 `nums[m] > target` 時,說明還沒有找到 `target` ,因此採用普通二分搜尋的縮小區間操作,**從而使指標 $i$ 和 $j$ 向 `target` 靠近**。
|
||||
- 當 `nums[m] == target` 時,說明小於 `target` 的元素在區間 $[i, m - 1]$ 中,因此採用 $j = m - 1$ 來縮小區間,**從而使指標 $j$ 向小於 `target` 的元素靠近**。
|
||||
|
||||
迴圈完成後,$i$ 指向最左邊的 `target` ,$j$ 指向首個小於 `target` 的元素,**因此索引 $i$ 就是插入點**。
|
||||
迴圈完成後,$i$ 指向最左邊的 `target` ,$j$ 指向最右一個小於 `target` 的元素,**因此索引 $i$ 就是插入點**。
|
||||
|
||||
=== "<1>"
|
||||
{ class="animation-figure" }
|
||||
@@ -389,7 +389,7 @@ comments: true
|
||||
elif nums[m] > target:
|
||||
j = m - 1 # target 在區間 [i, m-1] 中
|
||||
else:
|
||||
j = m - 1 # 首個小於 target 的元素在區間 [i, m-1] 中
|
||||
j = m - 1 # 最右一個小於 target 的元素在區間 [i, m-1] 中
|
||||
# 返回插入點 i
|
||||
return i
|
||||
```
|
||||
@@ -407,7 +407,7 @@ comments: true
|
||||
} else if (nums[m] > target) {
|
||||
j = m - 1; // target 在區間 [i, m-1] 中
|
||||
} else {
|
||||
j = m - 1; // 首個小於 target 的元素在區間 [i, m-1] 中
|
||||
j = m - 1; // 最右一個小於 target 的元素在區間 [i, m-1] 中
|
||||
}
|
||||
}
|
||||
// 返回插入點 i
|
||||
@@ -428,7 +428,7 @@ comments: true
|
||||
} else if (nums[m] > target) {
|
||||
j = m - 1; // target 在區間 [i, m-1] 中
|
||||
} else {
|
||||
j = m - 1; // 首個小於 target 的元素在區間 [i, m-1] 中
|
||||
j = m - 1; // 最右一個小於 target 的元素在區間 [i, m-1] 中
|
||||
}
|
||||
}
|
||||
// 返回插入點 i
|
||||
@@ -449,7 +449,7 @@ comments: true
|
||||
} else if (nums[m] > target) {
|
||||
j = m - 1; // target 在區間 [i, m-1] 中
|
||||
} else {
|
||||
j = m - 1; // 首個小於 target 的元素在區間 [i, m-1] 中
|
||||
j = m - 1; // 最右一個小於 target 的元素在區間 [i, m-1] 中
|
||||
}
|
||||
}
|
||||
// 返回插入點 i
|
||||
@@ -474,7 +474,7 @@ comments: true
|
||||
// target 在區間 [i, m-1] 中
|
||||
j = m - 1
|
||||
} else {
|
||||
// 首個小於 target 的元素在區間 [i, m-1] 中
|
||||
// 最右一個小於 target 的元素在區間 [i, m-1] 中
|
||||
j = m - 1
|
||||
}
|
||||
}
|
||||
@@ -498,7 +498,7 @@ comments: true
|
||||
} else if nums[m] > target {
|
||||
j = m - 1 // target 在區間 [i, m-1] 中
|
||||
} else {
|
||||
j = m - 1 // 首個小於 target 的元素在區間 [i, m-1] 中
|
||||
j = m - 1 // 最右一個小於 target 的元素在區間 [i, m-1] 中
|
||||
}
|
||||
}
|
||||
// 返回插入點 i
|
||||
@@ -520,7 +520,7 @@ comments: true
|
||||
} else if (nums[m] > target) {
|
||||
j = m - 1; // target 在區間 [i, m-1] 中
|
||||
} else {
|
||||
j = m - 1; // 首個小於 target 的元素在區間 [i, m-1] 中
|
||||
j = m - 1; // 最右一個小於 target 的元素在區間 [i, m-1] 中
|
||||
}
|
||||
}
|
||||
// 返回插入點 i
|
||||
@@ -542,7 +542,7 @@ comments: true
|
||||
} else if (nums[m] > target) {
|
||||
j = m - 1; // target 在區間 [i, m-1] 中
|
||||
} else {
|
||||
j = m - 1; // 首個小於 target 的元素在區間 [i, m-1] 中
|
||||
j = m - 1; // 最右一個小於 target 的元素在區間 [i, m-1] 中
|
||||
}
|
||||
}
|
||||
// 返回插入點 i
|
||||
@@ -563,7 +563,7 @@ comments: true
|
||||
} else if (nums[m] > target) {
|
||||
j = m - 1; // target 在區間 [i, m-1] 中
|
||||
} else {
|
||||
j = m - 1; // 首個小於 target 的元素在區間 [i, m-1] 中
|
||||
j = m - 1; // 最右一個小於 target 的元素在區間 [i, m-1] 中
|
||||
}
|
||||
}
|
||||
// 返回插入點 i
|
||||
@@ -584,7 +584,7 @@ comments: true
|
||||
} else if nums[m as usize] > target {
|
||||
j = m - 1; // target 在區間 [i, m-1] 中
|
||||
} else {
|
||||
j = m - 1; // 首個小於 target 的元素在區間 [i, m-1] 中
|
||||
j = m - 1; // 最右一個小於 target 的元素在區間 [i, m-1] 中
|
||||
}
|
||||
}
|
||||
// 返回插入點 i
|
||||
@@ -605,7 +605,7 @@ comments: true
|
||||
} else if (nums[m] > target) {
|
||||
j = m - 1; // target 在區間 [i, m-1] 中
|
||||
} else {
|
||||
j = m - 1; // 首個小於 target 的元素在區間 [i, m-1] 中
|
||||
j = m - 1; // 最右一個小於 target 的元素在區間 [i, m-1] 中
|
||||
}
|
||||
}
|
||||
// 返回插入點 i
|
||||
@@ -627,7 +627,7 @@ comments: true
|
||||
} else if (nums[m] > target) {
|
||||
j = m - 1 // target 在區間 [i, m-1] 中
|
||||
} else {
|
||||
j = m - 1 // 首個小於 target 的元素在區間 [i, m-1] 中
|
||||
j = m - 1 // 最右一個小於 target 的元素在區間 [i, m-1] 中
|
||||
}
|
||||
}
|
||||
// 返回插入點 i
|
||||
@@ -652,7 +652,7 @@ comments: true
|
||||
elsif nums[m] > target
|
||||
j = m - 1 # target 在區間 [i, m-1] 中
|
||||
else
|
||||
j = m - 1 # 首個小於 target 的元素在區間 [i, m-1] 中
|
||||
j = m - 1 # 最右一個小於 target 的元素在區間 [i, m-1] 中
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user