0034. 在排序数组中查找元素的第一个和最后一个位置 #74
Replies: 0 comments 4 replies
-
为什么第一次尽量要向左,第二次要尽量向右呢? |
Beta Was this translation helpful? Give feedback.
-
最后一句的if nums[left] == target是否还有用呢? 上面不是判断过是否存在该元素了吗? 去掉这个if也通过了所有测例,想请问下这个最后if的作用 |
Beta Was this translation helpful? Give feedback.
-
这是因为数组中可能会有值等于 target 的重复元素,比如与在数组 [1, 2, 3, 3, 3, 3, 5, 6] 中查找元素 3 的第一个和最后一个位置。第一次尽量向左是为了查找元素 3 在数组中最左边的位置,第二次尽量向右是为了查找元素 3 在数组中最右边的位置。 |
Beta Was this translation helpful? Give feedback.
-
有用的,while 循环中的条件是 left < right,跳出 while 循环的条件是 left == right,但是这时候会出现两种情况。第一种是数组中包含 target 元素,此时 nums[left] == target。第二种情况是数组中不包含 target 元素,此时 nums[left] != target。这里针对第二种特殊情况就需要判断一下 nums[left] 是否等于 target。 |
Beta Was this translation helpful? Give feedback.
-
0034. 在排序数组中查找元素的第一个和最后一个位置 | 算法通关手册
解题思路 # 要求使用时间复杂度为
进行两次二分查找,第一次尽量向左搜索。第二次尽量向右搜索。
代码 # 1 2 3 4
https://algo.itcharge.cn/Solutions/0001-0099/find-first-and-last-position-of-element-in-sorted-array
Beta Was this translation helpful? Give feedback.
All reactions