首页 > 其他分享 >【LeetCode】二分法--剑指 Offer 53 - I. 在排序数组中查找数字 I

【LeetCode】二分法--剑指 Offer 53 - I. 在排序数组中查找数字 I

时间:2022-12-12 22:23:55浏览次数:70  
标签:target helper nums -- Offer 二分法 int 查找 low

点击直达

题目内容

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

示例

示例 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 <= 105
-109 <= nums[i] <= 109
nums 是一个非递减数组
-109 <= target <= 109

思路

最初只想到了顺序查找
看评论题解发现大家都用的二分。启发:有序的时候要想着用二分。
这个代码很妙,把cnt加入,便于进行查找计数。

class Solution {
        int cnt = 0;    // 计数器count
    public int search(int[] nums, int target) {
        // 初始化low = 0, high = nums.length - 1
        helper(nums, target, 0, nums.length - 1);
        return cnt;
    }

    // 根据算法设计分3种情况
    public void helper(int[] nums, int target, int low, int high) {
        if (low <= high) {  
            int mid = (high - low) / 2 + low;
            if (nums[mid] == target) {
                cnt++;      // 计数一次
                helper(nums, target, low, mid - 1);     
                helper(nums, target, mid + 1, high);    
            } else if (nums[mid] > target) {
                helper(nums, target, low, mid - 1);
            } else {
                helper(nums, target, mid + 1, high);
            }
        }
    }
}

标签:target,helper,nums,--,Offer,二分法,int,查找,low
From: https://www.cnblogs.com/DXD-blog/p/16977274.html

相关文章

  • C语言中合法的数值常量知识点记录
    1.八进制常量:开头必须是0,且八进制是0-7之间组成的数,例如,029就是错误的八进制表示方式。2.十六进制常量:0X开头,包含字母ABCDEF,不区分大小写,例如0x与0X一样,0Xaa与0xAA,都是......
  • 链接-从链接到目标文件
    读<<程序员的自我修改--链接,装载与库>>和<<深入理解java虚拟机>>前阵子复习了一下final,然后发现final有一个知识点和JMM有关,然后又想起了JVM相关的知识......
  • Vue Demi是如何让你的库同时支持Vue2和Vue3的
    VueDemi是什么如果你想开发一个同时支持Vue2和Vue3的库可能想到以下两种方式:1.创建两个分支,分别支持Vue2和Vue32.只使用Vue2和Vue3都支持的API这两种方式都有缺点,第一......
  • .net做一个基于ChatGpt的微信机器人吧~[全教程]
    最近这个ChatGPT很火啊,看了B站上很多视频,自己非常手痒,高低自己得整一个啊,很多人都是把ChatGPT和微信结合在一起,正巧我是Wechaty框架的.netsdk贡献者,这不是一应俱全了吗?目......
  • asp.net web mvc form表单提交
    1、指定action<formaction="/control/action1"method="post"><inputtype="submit"value="保存"/></form>publicstringaction1(FormCollectionform){}//......
  • P2762 太空飞行计划问题
    P2762太空飞行计划问题如果我的钱全部都流过去了,那不就相当于没有挣钱吗#include<bits/stdc++.h>usingnamespacestd;constintinf=1e9;constintN=155;consti......
  • SQL*Loader使用
    SQL*Loader1.数据载入方法默认是常规加载,如果要使用直接路径加载,只需要将控制文件添加direct=true即可。2.控制文件写法loaddatainfile'test.dat'--指定加载的......
  • 第40周 Linux调优与架构调优 Zabbix和Prometheu 没用
                 ......
  • 肺出血伴肾小球肾炎
    Goodpasturesyndrome肺出血伴肾小球肾炎又称抗基膜性肾小球肾炎、Goodpasture综合征或Goodpasture病。它是由抗基膜抗体导致的肾小球和肺泡壁基膜的严重损伤,临床表现为肺......
  • FreeSWITCH学习笔记:模块
    本文更新于2022-12-12,使用FreeSWITCH1.10.7。目录applicationsars_ttscodecsdialplansdirectoriesendpointsevent_handlersformatslanguagesloggersSaytimersxml_int官......