当前位置: 首页 > news >正文

图解LeetCode——剑指 Offer 53 - I. 在排序数组中查找数字 I

一、题目

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

二、示例

示例 1

【输入】nums = [5,7,7,8,8,10], target = 8
【输出】2

示例 2:

【输入】nums = [5,7,7,8,8,10], target = 6
【输出】0

提示:

  • 0 <= nums.length <= 10^5
  • -10^9 <= nums[i] <= 10^9
  • nums 是一个 非递减 数组
  • -10^9 <= target <= 10^9

三、解题思路

首先,根据题目描述,我们可以得知题目给我们的数组nums是一个有序的数组,那么针对这个特性我们可以得出结论,即:相同的数字会紧密的排列在一起。所以,根据这个结论,我们可以采用双指针来解决这个问题,步骤如下所示:

步骤1】通过头指针head,从数组的第一个元素开始向后遍历对比,如果发现nums[head]等于target,则停止遍历。
步骤2】通过尾指针tail,从数组的最后一个元素开始向前遍历对比,如果发现nums[tail]等于target,则停止遍历。
步骤3】最后,通过 tail - head + 1 计算,就可以统计一个数字在排序数组中出现的次数

解题思路如上所述,那么我们以入参: nums = [5,7,7,8,8,10], target = 8为例,演示一下具体的处理流程,请见下图所示:

四、代码实现

class Solution {public int search(int[] nums, int target) {int head = 0, tail = nums.length - 1;while (head < nums.length && nums[head] < target) head++;while (tail >= 0 && nums[tail] > target) tail--;return (head > tail) ? 0 : (tail - head + 1);}
}

 今天的文章内容就这些了:

写作不易,笔者几个小时甚至数天完成的一篇文章,只愿换来您几秒钟的 点赞 & 分享 。

更多技术干货,欢迎大家关注公众号“爪哇缪斯” ~ \(^o^)/ ~ 「干货分享,每天更新」

http://www.lryc.cn/news/3209.html

相关文章:

  • python 实现热门音乐分析 附代码+数据 +论文
  • 【2335. 装满杯子需要的最短总时长】
  • 再不跳槽,就晚了
  • Java 内存结构解密
  • ROS小车研究笔记2/11/2023:使用ssh远程登录小车
  • koa ts kick off 搭建项目的基本架子
  • h2database源码解析-查询优化器原理
  • 2月11日,30秒知全网,精选7个热点
  • vue组件的构成 <template> <script> <style>节点的使用 <
  • windows + vscode + rust
  • 二十九、异常处理
  • RTOS之二环境搭建初识RTOS
  • 【Java】 JAVA Notes
  • Java笔记-volatile和AtomicInteger
  • [标准库]STM32F103R8T6 高级定时器--PWM输出和带死区互补PWM输出
  • Camtasia2023最新版电脑视频录屏记录编辑软件
  • 管理用户安全性
  • 分享113个JS菜单导航,总有一款适合您
  • RuoYi-Cloud 部署
  • DockerFile文件详解
  • Java程序运行机制
  • LeetCode刷题------字符串
  • 区块链技术与应用2——BTC-数据结构
  • BiseNet v1论文及其代码详解
  • (超详细)Navicat的安装和激活,亲测有效
  • JDY-31蓝牙模块使用指南
  • 【2023】华为OD机试真题Java-题目0211-租车骑绿道
  • leetcode: 3Sum
  • 【Python学习笔记】26.Python3 输入和输出(2)
  • vue项目第二天