您现在的位置是:首页 >技术杂谈 >猜数字大小、搜索插入位置----2023/5/12网站首页技术杂谈
猜数字大小、搜索插入位置----2023/5/12
简介猜数字大小、搜索插入位置----2023/5/12
猜数字大小、搜索插入位置----2023/5/12
猜数字游戏的规则如下:
每轮游戏,我都会从 1 到 n 随机选择一个数字。 请你猜选出的是哪个数字。
如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了。
你可以通过调用一个预先定义好的接口 int guess(int num) 来获取猜测结果,返回值一共有 3 种可能的情况(-1,1 或 0):
-1:我选出的数字比你猜的数字小 pick < num
1:我选出的数字比你猜的数字大 pick > num
0:我选出的数字和你猜的数字一样。恭喜!你猜对了!pick == num
返回我选出的数字。
示例1:
输入:n = 10, pick = 6
输出:6
示例2:
输入:n = 1, pick = 1
输出:1
示例3:
输入:n = 2, pick = 1
输出:1
示例4:
输入:n = 2, pick = 2
输出:2
题解:
class Solution:
def guessNumber(self, n: int) -> int:
left, right = 0, n
while left <= right:
mid = (left + right) // 2
if guess(mid) == 0:
return mid
elif guess(mid) == 1:
left = mid + 1
else:
right = mid - 1
提示:
1 <= n <= 231 - 1
1 <= pick <= n
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/guess-number-higher-or-lower
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
搜索插入位置----2023/5/12
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 O(log n) 的算法。
示例1:
输入: nums = [1,3,5,6], target = 5
输出: 2
示例2:
输入: nums = [1,3,5,6], target = 2
输出: 1
示例3:
输入: nums = [1,3,5,6], target = 7
输出: 4
提示:
1 <= nums.length <= 104
-104 <= nums[i] <= 104
nums 为 无重复元素 的 升序 排列数组
-104 <= target <= 104
题解:
class Solution:
def searchInsert(self, nums: List[int], target: int) -> int:
left, right = 0, len(nums)-1
while left <= right:
mid = (left + right) // 2
if nums[mid] == target:
return mid
elif nums[mid] < target:
left = mid + 1
else:
right = mid -1
return left
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/search-insert-position
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。