【剑指Offer】在排序数组中查找数字 I
发布日期:2022-02-10 08:55:18 浏览次数:29 分类:技术文章

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

题目

统计一个数字在排序数组中出现的次数。

思路

两次二分,先找右边界,再找左边界,最后答案就是右-左-1

代码

class Solution {public:    int search(vector
& nums, int target) { int len = nums.size(); int i = 0; int j = len - 1; int m = 0; while(i <= j){ m = (i + j) / 2; if(nums[m] < target){ i = m+1; }else if(nums[m] > target){ j = m-1; }else{ i = m + 1; } } int right = i; i = 0; j = len - 1; m = 0; while(i <= j){ m = (i + j) / 2; if(nums[m] < target){ i = m+1; }else if(nums[m] > target){ j = m-1; }else{ j = m - 1; } } int left = j; return right - left - 1; }};

 

转载地址:https://blog.csdn.net/hanmin822/article/details/105972833 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【剑指Offer】II. 0~n-1中缺失的数字
下一篇:【剑指Offer】二叉搜索树的第k大节点

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月17日 06时08分14秒