【算法专题训练】38、二分查找算法

二分查找原理与Python高效实践:从算法本质到生产级优化 二分查找是一种基于有序序列的对数时间复杂度搜索算法,其核心原理是通过每次比较排除一半候选空间,实现O(log₂n)的稳定性能。相比线性扫描的O(n),它在大规模数据场景下具备显著的性能优势和可预测性,成为数据库索引、内存搜索、科学计算等领域的底层支撑技术。在Python中,bisect模块、NumPy的searchsorted及ORM查询均深度集成该算法,但正确使用需严格满足‘全局有序’前提,并规避重复元素、浮点精度、边界越界等典型陷阱。本文结合电商价格搜索等真实案例,详解手写实现要点、生态工具选型与压测调 阅读详情

1、二分查找

  • 在一个长度为n的数组中要查找一个数字,逐一扫描数组中的每个数字,需要O(n)的时间
  • 如果数组是排序的,那么可以采用二分查找算法进行优化,采用分治思想,将将数组分为三个区域,判断中间值是否命中,如果没命中,继续在其中的一个区域继续进行分治查询

2、LCR 068. 搜索插入位置

题目信息:

  • https://leetcode.cn/problems/N6YdxV/description/
给定一个排序的整数数组 nums 和一个整数目标值 target ,请在数组中找到 target ,并返回其下标。如果目标值不存在于数组中,
返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。

示例 1:
输入: nums = [1,3,5,6], target = 5
输出: 2

示例 2:
输入: nums = [1,3,5,6], target = 2
输出: 1

示例 3:
输入: nums = [1,3,5,6], target = 7
输出: 4

示例 4:
输入: nums = [1,3,5,6], target = 0
输出: 0

示例 5:
输入: nums = [1], target = 0
输出: 0

提示:
1 <= nums.length <= 104
-104 <= nums[i] <= 104
nums 为无重复元素的升序排列数组
-104 <= target <= 104

解题思路:

  • 1、审题:
  • 输入一个升序排序的整数数组和一个目标值target,要求在数组中查找是否存在目标值,如果存在返回该目标值在数组中的下标位置,
    • 如果不存在,返回插入该数值应该所在的位置
  • 2、解题:题目要求使用二分查找法
  • 使用左右指针left,right分别标记查找范围,取中间值mid
  • 如果mid下标值等于目标值,则返回mid
  • 如果mid值大于目标值,且mid-1小于目标值,则查找到插入位置,如果mid已经是小标0了,也直接返回
  • 如果mid值小于目标值,继续在后半部分查找, left = mid + 1
  • 如果还是没有找到,说明数组中所有元素都大小目标值,应该插入到数组最末尾端

代码实现:

int searchInsert(vector<int> &nums, int target)
{
    int left = 0;
    int right = nums.size() - 1;
    int mid = 0;

    while (left <= right)
    {
        mid = left + (right - left) / 2;
        if (nums[mid] == target)
        {
            return mid;
        }

        if (nums[mid] > target)
        {
            if (mid == 0 || nums[mid - 1] < target)
            {
                return mid;
            }
            right = mid - 1;
        }
        else
        {
            left = mid + 1;
        }
    }
    return nums.size();
}

3、LCR 069. 山脉数组的峰顶索引

题目信息:

  • https://leetcode.cn/problems/B1IidL/description/
符合下列属性的数组 arr 称为 山峰数组(山脉数组) :
arr.length >= 3
存在 i(0 < i < arr.length - 1)使得:
arr[0] < arr[1] < ... arr[i-1] < arr[i]
arr[i] > arr[i+1] > ... > arr[arr.length - 1]
给定由整数组成的山峰数组 arr ,返回任何满足 arr[0] < arr[1] < ... arr[i - 1] < arr[i] > arr[i + 1] > ... > arr[arr.length - 1] 的下标 i ,即山峰顶部。

示例 1:
输入:arr = [0,1,0]
输出:1

示例 2:
输入:arr = [1,3,5,4,2]
输出:2

示例 3:
输入:arr = [0,10,5,2]
输出:1

示例 4:
输入:arr = [3,4,5,1]
输出:2

示例 5:
输入:arr = [24,69,100,99,79,78,67,36,26,19]
输出:2

提示:
3 <= arr.length <= 104
0 <= arr[i] <= 106
题目数据保证 arr 是一个山脉数组

进阶:很容易想到时间复杂度 O(n) 的解决方案,你可以设计一个 O(log(n)) 的解决方案吗?

解题思路:

  • 1、审题:输入一个山峰数组,就是数据前半部分排序不断升高,后半部分不断降低,要求找出这个山峰的封顶位置
  • 2、解题:
  • 普通解法:遍历整个数组元素,峰顶元素肯定是比前后两个元素都大的数据,需要O(n)算法复杂度
  • 二分查找解法:使用两个指针left,right标记数组的前后两个元素位置,不断计算得出中间元素位置mid
  • 如果mid下标元素,比前后两个元素都大,则命中
  • 如果mid下标元素,比前一个元素大,处于升序部分,则峰顶元素在数组后半部分,反之峰顶元素在前半部分
  • 山峰数组最后有三个元素组成,left与right可以从第二个位置元素开始遍历查找

代码实现:

int peakIndexInMountainArray(vector<int> &arr)
{
    int left = 1;
    int right = arr.size() - 2;
    int mid;
    while (left <= right)
    {
        mid = left + (right - left) / 2;
        if (arr[mid - 1] < arr[mid] && arr[mid] > arr[mid + 1])
        {
            return mid;
        }
        // 升序部分
        if (arr[mid - 1] < arr[mid])
        {
            left = mid + 1;
        }
        else
        {
            right = mid - 1;
        }
    }
    return -1;
}

4、LCR 070. 有序数组中的单一元素

题目信息:

  • https://leetcode.cn/problems/skFtm2/description/
给定一个只包含整数的有序数组 nums ,每个元素都会出现两次,唯有一个数只会出现一次,请找出这个唯一的数字。

示例 1:
输入: nums = [1,1,2,3,3,4,4,8,8]
输出: 2

示例 2:
输入: nums =  [3,3,7,7,10,11,11]
输出: 10

提示:
1 <= nums.length <= 105
0 <= nums[i] <= 105
进阶:采用的方案可以在 O(log n) 时间复杂度和 O(1) 空间复杂度中运行吗?

解题思路:

  • 二分查找解法
  • 使用异或操作的解法时间复杂度为O(n),没有使用有序数组的特性
  • 将数组元素从最开始位置,两两合在一起判断,查找其中的两个元素是否相等,如果相同则不同的元素在后面
  • 如果不同,需要判断是否是第一组不相同的数组组合,如果不是则继续遍历前面的组合,前面的数组组合刚好两个元素相同则命中。

代码实现:

int singleNonDuplicate(vector<int> &nums)
{
    int res = nums[0];
    int left = 0;
    int right = nums.size() - 1;
    if (right == 0)
    {
        return res;
    }
    while (left <= right)
    {
        int mid = left + (right - left) / 2;
        mid = (mid / 2) * 2;

        if (mid == 0 && nums[mid] != nums[mid + 1])
        {
            return nums[mid];
        }
        if (nums[mid] != nums[mid + 1] && nums[mid - 2] == nums[mid - 1])
        {
            return nums[mid];
        }
        if (nums[mid] == nums[mid + 1])
        {
            left = mid + 2;
        }
        else
        {
            right = mid - 2;
        }
    }
    return res;
}

5、LCR 071. 按权重随机选择

题目信息:

  • https://leetcode.cn/problems/cuyjEf/description/
给定一个正整数数组 w ,其中 w[i] 代表下标 i 的权重(下标从 0 开始),请写一个函数 pickIndex ,它可以随机地获取下标 i,选取下标 i 的概率与 w[i] 成正比。
例如,对于 w = [1, 3],挑选下标 0 的概率为 1 / (1 + 3) = 0.25 (即,25%),而选取下标 1 的概率为 3 / (1 + 3) = 0.75(即,75%)。
也就是说,选取下标 i 的概率为 w[i] / sum(w) 。

示例 1:
输入:
inputs = ["Solution","pickIndex"]
inputs = [[[1]],[]]
输出:
[null,0]
解释:
Solution solution = new Solution([1]);
solution.pickIndex(); // 返回 0,因为数组中只有一个元素,所以唯一的选择是返回下标 0。

示例 2:
输入:
inputs = ["Solution","pickIndex","pickIndex","pickIndex","pickIndex","pickIndex"]
inputs = [[[1,3]],[],[],[],[],[]]
输出:
[null,1,1,1,1,0]
解释:
Solution solution = new Solution([1, 3]);
solution.pickIndex(); // 返回 1,返回下标 1,返回该下标概率为 3/4 。
solution.pickIndex(); // 返回 1
solution.pickIndex(); // 返回 1
solution.pickIndex(); // 返回 1
solution.pickIndex(); // 返回 0,返回下标 0,返回该下标概率为 1/4 。

由于这是一个随机问题,允许多个答案,因此下列输出都可以被认为是正确的:
[null,1,1,1,1,0]
[null,1,1,1,1,1]
[null,1,1,1,0,0]
[null,1,1,1,0,1]
[null,1,0,1,0,0]
......
诸若此类。

提示:
1 <= w.length <= 10000
1 <= w[i] <= 10^5
pickIndex 将被调用不超过 10000 次

解题思路:

  • 1、审题: 输入一个整数数组,他有一个pickIndex方法,要求该方法返回数组中的一个下标,返回数组下标的概率和该下标对应元素的值在整个数组中的占比成正比
  • 也就是说,该数组元素值越大,那么返回该元素下标的比例也越高
  • 2、解题:
  • 将上面的问题转换成累加和数组,新数组的元素值表示能够承接的元素范围
  • 使用变量total表示所有数组元素的累加和,根据该total值计算他的随机数,以随机数作为基准值取新的累加数组中获取对应的下标值
  • 要求在新数组中寻找第一个比基准值大的元素,并返回该下标,使用二分法查询方式来解题

代码实现:

class Solution
{
public:
    Solution(vector<int> &w)
    {
        for (auto num : w)
        {
            total += num;
            nums.push_back(total);
        }
    }
    static int genRandomNum(int total)
    {
        // 随机数引擎(生成器)
        std::random_device rd;
        std::mt19937 gen(rd());

        // 定义分布范围
        std::uniform_int_distribution<> dis(0, total - 1);

        // 生成随机数
        int random_num = dis(gen);
        return random_num;
    }

    int pickIndex()
    {
        // 生成随机数
        int p = genRandomNum(total);
        int left = 0;
        int right = nums.size() - 1;
        while (left <= right)
        {
            int mid = left + (right - left) / 2;
            if (nums[mid] > p)
            {
                if (mid == 0 || nums[mid - 1] <= p)
                {
                    return mid;
                }
                right = mid - 1;
            }
            else
            {
                left = mid + 1;
            }
        }
        return nums.size() - 1;
    }

private:
    int total = 0;
    std::vector<int> nums;
};

6、总结

  • 使用二分查找算法的前提是数组要求有序
  • 二分查找的核心思想都是将原有的有序数组分成三个区域,mid中间位置,和前后两个区域,如果没命中mid中间值,根据判断条件缩小查询范围,直接while循环结束
【算法康复训练③】剑指offer P3 文章目录 复习次数(0) 35. 包含min函数的栈 36. 字符串的排列 37. 二叉搜索树与双向链表 38. 0~n-1中缺失的数字 阅读详情

相关推荐

LeetCode面试经典150题刻意训练指南

算法与数据结构是计算机科学的核心基础,其中LeetCode作为技术面试的重要准备工具,其经典150题系列覆盖了数组、链表、二叉树等高频考点。通过刻意练习和系统化的训练方法,可以有效提升算法思维和编码能力。本文重点解析如何利用三刷进阶法、解题框架模板和知识图谱构建,最大化这150题的训练价值。特别适用于准备秋招的在校生和需要巩固基础的开发者,内容涵盖滑动窗口、动态规划等热门前端面试题型,并提供了可量化的进度管理方案。

weixin_33888907的博客 439

PAT 基础编程题目集(编程题1-38)核心算法与实战精讲

本文深入解析PAT基础编程题目集(编程题1-38)的核心算法与实战技巧,涵盖模拟类题目、数论问题、二分查找、DFS算法及高精度计算等关键内容。通过详细的题解和代码示例,帮助编程初学者和算法爱好者掌握解题思路,提升编程能力。特别适合准备PAT考试或希望夯实算法基础的学习者。

weixin_30580341的博客 221

力扣高效刷题指南:从环境配置到面试实战

算法能力是程序员的核心竞争力之一,而力扣(LeetCode)作为全球知名的算法练习平台,其题目设计遵循计算机科学基本原理,如时间复杂度和空间复杂度的权衡。通过系统化的刷题训练,开发者可以掌握动态规划、DFS/BFS等经典算法思想,这些技术在数据处理、机器学习等领域有广泛应用。本文重点分享如何利用浏览器插件优化刷题效率,以及通过专题训练法快速提升解题能力。针对大厂面试高频考点如二维矩阵DFS、链表双指针等题型,提供了具体的调试技巧和性能优化方案,帮助开发者在技术面试中展现扎实的算法功底。

weixin_30899023的博客 343

算法训练阶段总结

系统开启刷题的姿势,对数据结构有了基本的认识,但很多操作还不够熟练,保持练习。对题目有了一般性的思考,还不够敏感,需要积累,坚持刷题,希望秋招下来能刷300道(截止到20230828的刷题量,偶尔会参加周赛做个签到题)。

dannky_Z的博客 9121

海康威视 2DC 系列球机手机直连实用教程

海康威视2DC系列球机手机直连教程:首先确认设备支持直连功能并下载官方"海康互联"App;通过网线连接球机与路由器,使用SADP软件调整IP至同一网段;在App中添加设备并激活,完成调试即可远程查看监控画面。常见问题包括部分型号需远程解锁、网络连接异常等,可通过检查网络环境、联系客服等方式解决。本教程提供从准备到连接的完整指引,助您轻松实现手机监控管理。

海康威视技术支持 5406

FlowPic实战:从流量到图像的端到端加密应用识别

本文深入解析了FlowPic技术如何将网络流量转化为图像,并利用CNN模型进行端到端加密应用识别。该方法通过分析数据包大小和时序信息生成流量图像,有效绕过加密内容,实现对视频、聊天、文件传输等应用的精准分类。文章提供了从流量抓取、图像生成到轻量级CNN模型设计与训练的完整实战指南,并探讨了在VPN、Tor等复杂场景下的应用与挑战。

weixin_29046035的博客 151

二分查找介绍

二分查找是一种在排序数组中查找目标值位置的搜索算法。它通过反复将搜索区间一分为二来实现,直到找到目标值或搜索区间为空。二分查找利用数组已排序的特性,将时间复杂度降低到 O(log N)。

qq_52010229的博客 639

Android Camera性能优化概述

做camera性能优化方面的工作有几年了,想写一篇文章简单介绍一下其中涉及到的具体技术,这篇文章会大概介绍一下涉及到的技术。

weixin_42136255的博客 4023

代码随想录算法训练营第1天 | 704.二分查找、27.去除元素

关键1:当target<nums[middle]时,目标值在二分后的左边时,需要将右边界进行更新,需要注意right=middle-1,因为right=middle的条件已在target=nums[middle]中讨论过。关键2:同上,当target>nums[middle]时,目标值在二分后的右边时,需要将左边界进行更新,需要注意left=middle+1,因为left=middle的条件已在target=nums[middle]中讨论过,因此,边界应该往右移动一格left=middle+1。

lian12345689的博客 448

【时时三省】vector cast (vcast) 集成测试使用教程

山不在高,有仙则名。水不在深,有龙则灵。----优快云 时时三省。

时时三省的博客 708

【PPS便携式移动电源】如何透彻了解便携式移动电源,仅需要十分钟阅读即可

PPS 便携式储能电源的发展前景广阔,受益于户外经济爆发、应急备灾需求提升及 “双碳” 政策支持,全球市场规模预计持续增长,2025 年出货量将达 2380 万台,未来将向大功率大容量、光充一体化、智能化方向发展,还会拓展家庭储能、移动医疗等新场景,同时钠离子电池应用、双向逆变技术升级将进一步推动行业发展。

昔时扬尘处 272

算法训练营:分组

分组 描述 有n个正整数排成一排,你要将这些数分成m份(同一份中的数字都是连续的,不能隔开),同时数字之和最大的那一份的数字之和尽量小。 输入 输入的第一行包含两个正整数n,m。 接下来一行包含n个正整数。 输出 输出一个数,表示最优方案中,数字之和最大的那一份的数字之和。 样例1输入 5 2 2 1 2 2 3 ...

aixigua9729的博客 449

SAP ABAP CO核心扩展-为企业定制ZCKM3N物料价格分析增强(CKM3 CKM3N CKM8N)

这篇文章,将为大家讲述物料价格分析扩展增强(ZCKM3N)的方法和原理,并基于CKM3N的视图之一“CV成本组件”,教大家如何一步步实现批量输出多工厂物料的物料价格分析报表。

SAP李斌,本人承诺所有原创文章均不使用任何AI生成技术,请大家放心阅读。 3985

代码随想录算法训练营

代码随想录一刷打卡记录!

Catherinemin的博客 1258

AI编程工具到底是初学者的绊脚石还是垫脚石?

现在是AI时代,我们要做的,是学会拥抱AI、使用AI,成为AI的驾驭者,如果你因为害怕使用AI学不到东西,那么大可不必,因为AI必然是今后的趋势,相信会用AI在今后的求职面试中也会有很大的占比。另外我之前写了多篇有关AI编程开发工具Trae的使用技巧和教程,需要的话你可以关注公众号后通过菜单栏获取。另外我也把所有Trae相关的文章整合到了腾讯ima知识库,感兴趣的可以关注公众号以后回复。

cpp加油站的专栏 184

Python爬虫实战【房产刚需专属】:爬取链家/贝壳完整房源数据,精准筛选刚需房源【房价+户型+地段+面积+装修】

本次爬虫的核心亮点就是刚需专属筛选,我已经把刚需买房的主流筛选逻辑封装为独立函数,你只需要修改筛选参数,就能精准匹配你的需求无需懂Python语法,直接改数字/文字即可!本次爬虫是刚需买房+Python爬虫实战的完美结合。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1824

算法

0.极客大学算法训练营 百度网盘 (baidu.com) 目录 百度脑图-数据结构 数据结构 百度脑图-算法 进度:百度网盘 - 视频播放 (baidu.com)1.1-002-算法时间复杂度分析_哔哩哔哩_bilibili 2.基础数据结构-001-二分查找-算法描述_哔哩哔哩_bilibili 3.iOS大厂面试分析(上)_哔哩哔哩_bilibili 4.iOS大厂面试分析(下)_...

科技区软件类AI博主 🔍 专注 AI 工具测评 / 前沿产品深度拆解 / 行业趋势预判 🚫 拒绝科技玄学,只讲人话干货 —— 从工具使用到商业落地,搭建可复用的 AI 应用框架 518

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

编程训练——二分查找报错Thread 1: EXC_BAD_ACCESS (code=2, address=0x7ffeef3ffff8)的案例和正确代码

【输入输出样例】 样例一 Input 10 1 2 3 4 5 6 7 8 9 10 5 Output 4 说明:输入5,输出5在数组中的下标4 样例二 Input 10 2 4 7 10 19 22 23 38 56 100 20 Output -1 Then Input 23 Output 6 输入20,没找到,返回-1;输入23,返回其下标6。 【代码实现】 (错误代码和错因分析...

umbrellalalalala的博客 1万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

我的算法学习之路

xWp6Vqu94的博客 764

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

数据结构之算法基础

算法基础一、基础概念(1)定义(2)算法的特性(3)评价算法好坏的方法二、时间复杂度计算三、排序和查找3.1 排序3.2 查找 一、基础概念 (1)定义 算法(Algorithm)是一个有穷规则(或语句、指令)的有序集合。它确定了解决某一问题的一个运算序列。对于问题的初始输入,通过算法有限步的运行,产生一个或多个输出。 数据的逻辑结构与存储结构密切相关: 算法设计: 取决于选定的逻辑结构 算法实现: 依赖于采用的存储结构 (2)算法的特性 有穷性 —— 算法执行的步骤(或规则)是有限的; 确定性 ——

weixin_43520450的博客 606

Phi-3-mini-4k-instruct效果惊艳:算法题解生成+时间复杂度分析同步输出

本文介绍了如何在星图GPU平台自动化部署【ollama】Phi-3-mini-4k-instruct镜像,实现高效的算法题解生成和时间复杂度分析。该镜像能够快速生成准确代码并提供专业性能分析,适用于算法学习、技术面试准备和代码优化等场景,显著提升开发者的编程效率和理解深度。

weixin_29092787的博客 76

LeetCode经典150题:算法面试通关指南

算法是计算机科学的核心基础,其本质是通过特定步骤解决问题的方法论。从数据结构到算法设计,理解时间复杂度和空间复杂度等核心概念是每个程序员的必修课。在技术面试场景中,LeetCode题库已成为评估候选人算法能力的事实标准,其中经典150题浓缩了数组、链表、动态规划等高频考点。掌握双指针、滑动窗口等解题范式,配合三遍刷题法和错题管理系统,能显著提升面试通过率。无论是准备校招还是社招,系统性地攻克这些代表性问题,都是构建算法思维体系的有效路径。

weixin_30394981的博客 323

如何 10 分钟跑通 ACE-Step 1.5 本地音乐生成:新手完整安装指南

在网页里输入「轻快的夏日电子流行,女声,BPM 120」,一分钟就能拿到一首带人声的完整歌曲——这不是在线服务,而是跑在你自己电脑上的开源本地音乐生成模型 ACE-Step 1.5。本文带你从零完成安装、启动到产出第一首歌,4GB 显存的显卡就能起步。 ## 装完你能干这些事 装好后打开浏览器,你可以用一句话生成完整歌曲,也能做翻唱生成、局部重绘、人声转伴奏,时长从 10 秒 Loop 到 1

gitblog_00770的博客 511

C语言算法题大全

本文汇总C语言涉及到的众多类型的算法题,并对其进行深度讲解...

shylyly_的博客 425

训练部队--全国模拟(三)

[编程题] 训练部队 时间限制:1秒 空间限制:32768K 小牛牛是牛牛王国的将军,为了训练出精锐的部队,他会对新兵进行训练。部队进入了n个新兵,每个新兵有一个战斗力值和潜力值,当两个新兵进行决斗时,总是战斗力值高的获胜。获胜的新兵的战斗力值就会变成对手的潜力值 + 自己的战斗力值 - 对手的战斗力值。败者将会被淘汰。若两者战斗力值一样,则会同归于尽,双双被淘汰(除了考察的那个新兵之外,其...

weixin_30691871的博客 241

2024牛客暑期多校训练营9 I Interesting Numbers

题解

qq_73746764的博客 1312
上一篇: 【算法专题训练】37、前缀树&二叉树
下一篇: 【C++】001、引用与指针的区别
Tim_10
博客等级 码龄2年 162粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值