{ "type": "code_options", "author": "https://github.com/begeekmyfriend/leetcode", "source": "solution.md", "exercise_id": "b79586225ee645c59544bd27132cb5dc", "keywords": "数组,二分查找", "title": "在排序数组中查找元素的第一个和最后一个位置", "desc": [ { "content": "\n

给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。

\n

如果数组中不存在目标值 target,返回 [-1, -1]

\n

进阶:

\n\n

 

\n

示例 1:

\n
输入:nums = [5,7,7,8,8,10], target = 8
输出:
[3,4]
\n

示例 2:

\n
输入:nums = [5,7,7,8,8,10], target = 6
输出:
[-1,-1]
\n

示例 3:

\n
输入:nums = [], target = 0
输出:
[-1,-1]
\n

 

\n

提示:

\n", "language": "markdown" } ], "answer": [ { "content": "", "language": "cpp" } ], "prepared": [ [ { "content": "", "language": "cpp" } ], [ { "content": "", "language": "cpp" } ], [ { "content": "", "language": "cpp" } ] ], "template": { "content": "#include \nusing namespace std;\nclass Solution\n{\npublic:\n\tvector searchRange(vector &nums, int target)\n\t{\n\t\tvector res;\n\t\tres.push_back(binary_search_begin(nums, target));\n\t\tres.push_back(binary_search_end(nums, target));\n\t\treturn res;\n\t}\nprivate:\n\tint binary_search_begin(vector nums, int target)\n\t{\n\t\tint lo = -1;\n\t\tint hi = nums.size();\n\t\twhile (lo + 1 < hi)\n\t\t{\n\t\t\tint mid = lo + (hi - lo) / 2;\n\t\t\tif (target > nums[mid])\n\t\t\t{\n\t\t\t\tlo = mid;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\thi = mid;\n\t\t\t}\n\t\t}\n\t\tif (hi == nums.size() || nums[hi] != target)\n\t\t{\n\t\t\treturn -1;\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn hi;\n\t\t}\n\t}\n\tint binary_search_end(vector nums, int target)\n\t{\n\t\tint lo = -1;\n\t\tint hi = nums.size();\n\t\twhile (lo + 1 < hi)\n\t\t{\n\t\t\tint mid = lo + (hi - lo) / 2;\n\t\t\tif (target < nums[mid])\n\t\t\t{\n\t\t\t\thi = mid;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tlo = mid;\n\t\t\t}\n\t\t}\n\t\tif (lo == -1 || nums[lo] != target)\n\t\t{\n\t\t\treturn -1;\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn lo;\n\t\t}\n\t}\n};", "language": "cpp" }, "node_id": "dailycode-09529ae417314d8cb84c07be9aec2849", "license": "csdn.net", "created_at": 1637894158, "topic_link": "https://bbs.csdn.net/topics/600470221" }