博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从头做leetcode之leetcode 34 在排序数组中查找元素的值
阅读量:2437 次
发布时间:2019-05-10

本文共 1308 字,大约阅读时间需要 4 分钟。

34.在排序数组中查找元素的值

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

你的算法时间复杂度必须是 O(log n) 级别。

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

二分法

  • 和33一样又是O(log n) 级别的时间复杂度,所以还是考虑二分法。
  • 这次二分法主要的问题是数组中有重复的与target相同的数
  • 解决方法是找到target后用双指针向两边遍历直到找到不同的数或者越界。
class Solution {public:    vector
searchRange(vector
& nums, int target) { if(nums.size()==0) return {-1,-1}; if(nums.size()==1 && nums[0]==target) return {0,0}; else if(nums.size()==1) return {-1,-1}; int mid=0; int left=0; int right=nums.size()-1; while(left <= right){ mid=(left+right)/2; if(nums[mid] == target){ int i=mid-1,j=mid+1; while(i>=0){ if(nums[i] == target){ i--; } else{ break; } } while(j < nums.size()){ if(nums[j] == target){ j++; } else{ break; } } return {i+1,j-1}; } else if(nums[mid] > target) right=mid-1; else if(nums[mid] < target) left=mid+1; } return {-1,-1}; }};

通过时间:

在这里插入图片描述

转载地址:http://liemb.baihongyu.com/

你可能感兴趣的文章
蓝牙套接字概述(转)
查看>>
TCPDUMP简介(转)
查看>>
Symbian智能手机特殊号码搜集(转)
查看>>
Linux操作系统下媒体播放器的初步探讨(转)
查看>>
网站内页权重如何提高-SEO优化技术群课堂笔记(转)
查看>>
用MSDOS.SYS同装两个WIN98(转)
查看>>
用DHTML来模拟实现下拉菜单(转)
查看>>
oracle数据库应用中实现汉字“同音”查询(转)
查看>>
关于无盘网络正确网络配置建议,减少卡机蓝屏关键(转)
查看>>
交换机及路由器如何才能更加安全?(转)
查看>>
chinaunix
查看>>
bxp读写分离怎么设置(转)
查看>>
复制表结构的通用存储过程(转)
查看>>
Symbian OS SDKs简介(转)
查看>>
[组图]基于Nokia S60的游戏开发之四(转)
查看>>
屡次选错终致项目暴毙(转)
查看>>
WinXP优化 全面消除操作系统的复制乱码(转)
查看>>
symbian 60 开发的一个问题-让左右键都能弹出菜单(转)
查看>>
SQL Server静态页面导出技术(转)
查看>>
黑客软件最常用的连接端口一览(转)
查看>>