{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# [35. 搜索插入位置](https://leetcode.cn/problems/search-insert-position)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 题目描述\n", "\n", " 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。\n", "\n", "请必须使用时间复杂度为 `O(log n)` 的算法。\n", "\n", "**示例 1:**\n", "\n", "```txt\n", "输入: nums = [1,3,5,6], target = 5\n", "输出: 2\n", "```\n", "\n", "**示例 2:**\n", "\n", "```txt\n", "输入: nums = [1,3,5,6], target = 2\n", "输出: 1\n", "```\n", "\n", "**示例 3:**\n", "\n", "```txt\n", "输入: nums = [1,3,5,6], target = 7\n", "输出: 4\n", "```\n", "\n", "**提示:**\n", "\n", "- `1 <= nums.length <= 10^4`\n", "- `-10^4 <= nums[i] <= 10^4`\n", "- `nums` 为 **无重复元素** 的 **升序** 排列数组\n", "- `-10^4 <= target <= 10^4`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 解答\n", "\n", " " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "class Solution(object):\n", " def searchInsert(self, nums, target):\n", " \"\"\"\n", " :type nums: List[int]\n", " :type target: int\n", " :rtype: int\n", " \"\"\"\n", " left, right = 0, len(nums) - 1\n", " while left < right:\n", " mid = (left + right) // 2\n", " if target > nums[mid]:\n", " left = mid + 1\n", " elif target < nums[mid]:\n", " right = mid\n", " else:\n", " return mid \n", " return left if nums[left] >= target else left + 1 # 注意这里的返回值 注意溢出" ] }, { "cell_type": "code", "execution_count": 8, "id": "a1e23e83", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4\n" ] } ], "source": [ "test_nums = [1,3,5,6]\n", "test_target = 7\n", "solution_1 = Solution()\n", "result_1 = solution_1.searchInsert(test_nums, test_target)\n", "print(result_1) # 2" ] }, { "cell_type": "code", "execution_count": null, "id": "92764a56", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" } }, "nbformat": 5, "nbformat_minor": 10 }