This commit is contained in:
krahets
2023-08-17 05:12:05 +08:00
parent f0826da7f6
commit 97c532b228
67 changed files with 1481 additions and 1066 deletions
+4 -2
View File
@@ -15,7 +15,7 @@ status: new
![二分查找插入点示例数据](binary_search_insertion.assets/binary_search_insertion_example.png)
<p align="center"> Fig. 二分查找插入点示例数据 </p>
<p align="center"> 图:二分查找插入点示例数据 </p>
如果想要复用上节的二分查找代码,则需要回答以下两个问题。
@@ -203,7 +203,7 @@ status: new
![线性查找重复元素的插入点](binary_search_insertion.assets/binary_search_insertion_naive.png)
<p align="center"> Fig. 线性查找重复元素的插入点 </p>
<p align="center"> 图:线性查找重复元素的插入点 </p>
此方法虽然可用,但其包含线性查找,因此时间复杂度为 $O(n)$ 。当数组中存在很多重复的 `target` 时,该方法效率很低。
@@ -238,6 +238,8 @@ status: new
=== "<8>"
![binary_search_insertion_step8](binary_search_insertion.assets/binary_search_insertion_step8.png)
<p align="center"> 图:二分查找重复元素的插入点的步骤 </p>
观察以下代码,判断分支 `nums[m] > target` 和 `nums[m] == target` 的操作相同,因此两者可以合并。
即便如此,我们仍然可以将判断条件保持展开,因为其逻辑更加清晰、可读性更好。