35. Search Insert Position
# easy
Solution 1:
while start+1 < end
;start = mid
orend = mid
跳出循环的条件start 和 end 相邻,因此跳出后要判断target和mid是否相等;无法判断此时target与start/end在数轴上的关系,因此要判断很多:
target<start, return max(0,start-1)
target>end, return end+1
target == start, return start
target == end, return end
Soultion 2:
while start <= end; start = mid+1 or end = mid-1
跳出循环的条件是,end和start交叉,即end<start,可能性有两种:
mid=start=end
=>target<mid
=>end=mid-1
,则应该插入的位置为start
;mid = start, start+1=end
=>target<mid
=>end=mid-1
, 则应该插入的位置依然为start
。
两种方法的时间复杂度一样,但是方法二返回值更简单,死循环也避免了(因为start=mid+1, end=mid-1
)
Solution 2 coding:
Last updated
Was this helpful?