力扣 题目34-- 在排序数组中查找元素的第一个和最后一个位置

无聊的阿库娅·2022-04-24 12:50·13 次阅读

力扣 题目34-- 在排序数组中查找元素的第一个和最后一个位置

题目


题解


 

改造二分搜索 具体说明在代码注释#

代码


复制代码
 1 #include<iostream>
 2 #include<vector>
 3 using namespace std;
 4 vector<int> ersearch(vector<int>& nums, int target, int left, int right)
 5 {
 6     vector<int>result;
 7     while (left <= right) {
 8         int middle = left + ((right - left) / 2);
 9         if (nums[middle] > target) {
10             right = middle - 1;
11         }
12         else if (nums[middle] < target) {
13             left = middle + 1;
14         }
15         else {
16             //这里找到其中一个元素 但是他不一定是最后一个或者是第一个
17             //备份一下 
18             int backups = middle;
19             //判断一下他的上一个是target?如果是则更新 这样就能找到最小
20             while (middle != 0 && nums[middle] == nums[middle - 1]) {
21                 middle--;
22             }
23             //放入最小
24             result.push_back(middle);
25             //判断一下他的下一个是target?如果是则更新 这样就能找到最大
26             while (backups != nums.size()-1 && nums[backups] == nums[backups + 1]) {
27                 backups++;
28             }
29             //放入最大
30             result.push_back(backups);
31             return result;
32         }
33     }
34     //如果没有 就返回-1 -1
35     return {-1,-1 };
36 }
37 
38 class Solution {
39 public:
40     vector<int> searchRange(vector<int>& nums, int target) {
41         //调用二分搜索
42         return ersearch(nums, target, 0, nums.size()-1);
43     }
44 };
45 
46 
47 int main() {
48     Solution sol;
49     vector<int> nums = { 5,7,7,8,8,10 };
50     int target = 5;
51     vector<int> result=sol.searchRange(nums, target);
52     for (int i = 0; i < result.size();i++) {
53         cout << result[i] << endl;;
54     }
55 }
View Code
复制代码

 

posted @   无聊的阿库娅  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
今はその剣を置いて - 川井憲次
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.
  1. 1 どんどんドーナツどーんと行こう! 浜口史郎
  2. 2 パティのテーマ 神前暁
  3. 3 今はその剣を置いて 川井憲次
目录
点击右上角即可分享
微信分享提示