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

LeetCode 面试题 10.10. 数字流的秩

文章目录

  • 一、题目
  • 二、C# 题解

一、题目

  假设你正在读取一串整数。每隔一段时间,你希望能找出数字 x 的秩(小于或等于 x 的值的个数)。请实现数据结构和算法来支持这些操作,也就是说:

  实现 track(int x) 方法,每读入一个数字都会调用该方法;

  实现 getRankOfNumber(int x) 方法,返回小于或等于 x 的值的个数。

注意:本题相对原题稍作改动

示例:

输入:
[“StreamRank”, “getRankOfNumber”, “track”, “getRankOfNumber”]
[[], [1], [0], [0]]
输出:
[null,0,null,1]

提示:

  • x <= 50000
  • trackgetRankOfNumber 方法的调用次数均不超过 2000 次

  点击此处跳转题目。

二、C# 题解

  使用数组存储加入的 x,并计算 x 的秩。为了便于计算秩,需要将数组升序排列。因此,插入和查找时都必须保持升序的顺序,可以使用二分进行操作:

public class StreamRank {private class Data{public int x;    // 值public int rank; // x 的秩}private List<Data> datas; // 存储 Data,以 x 的值升序排列public StreamRank() {datas = new List<Data>();}public void Track(int x) {if (!Find(x, out int i)) {                           // 如果没找到 xint num = i > 0 ? datas[i - 1].rank : 0;         // 获取前一个位置的 rankdatas.Insert(i, new Data { x = x, rank = num }); // 在 i 处插入 x}for (int j = i; j < datas.Count; j++) datas[j].rank++; // 更新大于 x 的数的秩}public int GetRankOfNumber(int x) {if (Find(x, out int i)) return datas[i].rank; // 找到有 x,直接返回 x 的秩return i > 0 ? datas[i - 1].rank : 0;         // 未找到,则返回前一个数的秩}// 在 datas 中二分查找 x,返回是否找到,下标存储在 index 中// 若未找到,则 index 被设置为 x 按升序应插入的位置private bool Find(int x, out int index) {int i = 0, j = datas.Count;while (i < j) {int mid = (i + j) / 2;if (x == datas[mid].x) {index = mid;return true;}if (x > datas[mid].x) i = mid + 1;else j = mid;}index = i;return false;}
}/*** Your StreamRank object will be instantiated and called as such:* StreamRank obj = new StreamRank();* obj.Track(x);* int param_2 = obj.GetRankOfNumber(x);*/
  • 时间:108 ms,击败 100.00% 使用 C# 的用户
  • 内存:50.35 MB,击败 100.00% 使用 C# 的用户

相关文章:

LeetCode 面试题 10.10. 数字流的秩

文章目录 一、题目二、C# 题解 一、题目 假设你正在读取一串整数。每隔一段时间&#xff0c;你希望能找出数字 x 的秩(小于或等于 x 的值的个数)。请实现数据结构和算法来支持这些操作&#xff0c;也就是说&#xff1a; 实现 track(int x) 方法&#xff0c;每读入一个数字都会调…...

Vue3项目上线打包优化

之前整理过 Vue2项目上线打包优化&#xff0c;在vue3中&#xff0c;使用vite打包&#xff0c;配置稍微改了改。 1 开启gzip压缩 1.1 安装依赖 npm i vite-plugin-compression -D1.2 vite.config.ts 配置 import viteCompression from vite-plugin-compressionexport defaul…...

【算法题】2525. 根据规则将箱子分类

题目&#xff1a; 给你四个整数 length &#xff0c;width &#xff0c;height 和 mass &#xff0c;分别表示一个箱子的三个维度和质量&#xff0c;请你返回一个表示箱子 类别 的字符串。 如果满足以下条件&#xff0c;那么箱子是 “Bulky” 的&#xff1a; 箱子 至少有一个…...

python字典

字典 字典定义创建字典 字典定义 字典是python语言中唯一的映射类型。这种映射类型由键&#xff08;key&#xff09;和值&#xff08;value&#xff09;组成&#xff0c;是“键值对”的无序可变序列 定义字典时&#xff0c;每个元组的键和值用冒号隔开&#xff0c;相邻元素用…...

thinkphp队列的使用?

1.安装队列依赖 由于框架版本原因可以选择适合的版本 composer require topthink/think-queue 由于我是tp框架5.1的&#xff0c;所以选择了think-queue 1.1.6 composer require topthink/think-queue 1.1.6 判断安装成功 php think queue:work -h image.png 2.配置文件…...

【数据结构】排序--归并排序

目录 一 基本思想 二 代码实现 三 非递归归并排序 一 基本思想 归并排序&#xff08;MERGE-SORT&#xff09;是建立在归并操作上的一种有效的排序算法,该算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用。将已有序的子序列合并&#xff…...

批量修改视频尺寸:简单易用的视频剪辑软件教程

如果你需要批量修改视频尺寸&#xff0c;同时保持高质量的画质&#xff0c;那么“固乔剪辑助手”这款软件是你的不二之选。下面就是如何使用这款软件进行批量修改视频尺寸的详细步骤。 1. 首先&#xff0c;你需要在浏览器中进入“固乔科技”的官网&#xff0c;然后下载并安装“…...

四川云汇优想:短视频矩阵运营方案

短视频矩阵运营方案是为了提高短视频平台的用户黏性和活跃度&#xff0c;从而增强用户粘性和平台的商业价值而制定的。下面四川百幕晟小编将对短视频矩阵运营方案进行详细的介绍和分析。 首先&#xff0c;短视频矩阵运营方案要注重用户精细化运营。通过用户画像和兴趣标签&…...

vue中如何获取到当前位置的天气

要在Vue中获取当前位置的天气&#xff0c;您需要使用浏览器的Geolocation API来获取设备的地理位置&#xff0c;并使用第三方的天气API来获取天气数据。 下面是一般的步骤&#xff1a; 在Vue项目中安装axios库&#xff0c;用于发送HTTP请求。 npm install axios 创建一个新的…...

C++三角函数和反三角函数

当涉及到三角函数和反三角函数时&#xff0c;C提供了一组函数来执行这些计算。以下是C中常用的三角函数和反三角函数的详细解释和示例说明&#xff1a; sin函数&#xff08;正弦函数&#xff09;&#xff1a; 函数原型&#xff1a;double sin(double x);功能&#xff1a;计算给…...

Linux篇 五、Ubuntu与Linux板卡建立NFS服务

Linux系列文章目录 一、香橙派Zero2设置开机连接wifi 二、香橙派Zero2获取Linux SDK源码 三、香橙派Zero2搭建Qt环境 四、Linux修改用户名 文章目录 Linux系列文章目录前言一、连接到局域网互ping测试 二、安装NFS服务配置NFS更新exports配置三、板卡安装NFS客户端四、板卡临时…...

通讯协议学习之路:IrDA协议协议理论

通讯协议之路主要分为两部分&#xff0c;第一部分从理论上面讲解各类协议的通讯原理以及通讯格式&#xff0c;第二部分从具体运用上讲解各类通讯协议的具体应用方法。 后续文章会同时发表在个人博客(jason1016.club)、CSDN&#xff1b;视频会发布在bilibili(UID:399951374) 序、…...

互联网摸鱼日报(2023-10-20)

互联网摸鱼日报(2023-10-20) 博客园新闻 OPPO让折叠机超越直板旗舰成为可能 特斯拉的“大空头”&#xff0c;是马斯克那张嘴 逃避内卷的年轻人&#xff0c;盯上了老年大学的音乐课 理想市值超蔚来1倍&#xff0c;一场属于增程式的胜利 补足折叠屏影像短板&#xff0c;OPPO…...

C/C++ 快速入门

参考&#xff1a;https://blog.csdn.net/gao_zhennan/article/details/128769439 1 下载Visual Studio Code并安装中文插件&#xff0c;此处不再叙述 2 插件安装C/C插件 3 使用快捷键【Ctr ~】打打开终端 验证并未安装编译器 4 我们即将使用【MinGW-64】做为编译器 https:…...

【Git】升级MacOS系统,git命令无法使用

终端执行git命令报错 xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun安装这个东东&#xff0c;&#xff1f;需要42小时 最终解决&#xff1a; 下载安装 https…...

单点登录是什么?

单点登录&#xff08;Single Sign On, SSO&#xff09;是指在同一帐号平台下的多个应用系统中&#xff0c;用户只需登录一次&#xff0c;即可访问所有相互信任的应用系统。 单点登录的本质就是在多个应用系统中共享登录状态。如果用户的登录状态是记录在 Session 中的&#xff…...

面向对象设计原则之依赖倒置原则

目录 定义原始定义进一步的理解 作用实现方法代码示例 面向对象设计原则之开-闭原则 面向对象设计原则之里式替换原则 面向对象设计原则之依赖倒置原则 面向对象设计原则之单一职责原则 定义 依赖倒置原则&#xff08;Dependence Inversion Principle&#xff09;&#xff0c…...

MATLAB——概率神经网络分类问题程序

欢迎关注“电击小子程高兴的MATLAB小屋” %% 概率神经网络 %% 解决分类问题 clear all; close all; P[1:8]; Tc[2 3 1 2 3 2 1 1]; Tind2vec(Tc) %数据类型的转换 netnewpnn(P,T); Ysim(net,P); Ycvec2ind(Y) %转换回来...

微信小程序的OA会议之首页搭建

目录 一.小程序的布局 1.1. flex是什么 1.2. flex布局 1.3.总体布局 二.轮播图 2.1. 组件 2.2. 数据请求 2.3. 页面 三.首页 2.1. 视图 2.2.数据 2.3. 样式 好啦今天就到这里了&#xff0c;希望能帮到你哦&#xff01;&#xff01;&#xff01; 一.小程序的布局 …...

JS初步了解环境对象this

什么是环境对象&#xff1f; 环境对象&#xff1a;指的是函数内部特殊的变量this&#xff0c;它代表着当前函数运行时所处的环境 作用&#xff1a;弄清楚this的指向&#xff0c;可以让我们代码更简洁 在普通函数中&#xff1a; // 每个函数里面都有this 普通函数的this指向wind…...

带爱机出国攻略——大机箱反向升级小机箱C28?

大家好&#xff0c;欢迎来到机械大师频道&#xff0c;这不前几天有位粉丝找到我们&#xff0c;说是打算带着自己的爱机出国&#xff0c;但是奈何自己原本的主机实在太大台了&#xff0c;于是想在显卡和内存都不换的情况下&#xff0c;将其他硬件全换了&#xff0c;并且要求机箱…...

星露谷物语SMAPI模组加载器:终极安装与使用完全指南

星露谷物语SMAPI模组加载器&#xff1a;终极安装与使用完全指南 【免费下载链接】SMAPI The modding API for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/smap/SMAPI 想要为《星露谷物语》安装模组来扩展游戏体验吗&#xff1f;SMAPI模组加载器是官方推…...

从“一次性消耗”到“长效资产”:头部品牌如何用易元AI搭建视频中台

2026年&#xff0c;电商内容竞争已从“数量比拼”升级为“资产价值比拼”。传统视频生产是“一次性消耗”——拍完即弃、素材零散、复用率低&#xff0c;内容投入仅为短期成本&#xff1b;而头部品牌已通过视频资产化与AI内容中台&#xff0c;将内容从“成本项”转为“资产项”…...

你的聊天记忆,应该由你掌控:WeChatMsg数据主权完全指南

你的聊天记忆&#xff0c;应该由你掌控&#xff1a;WeChatMsg数据主权完全指南 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trend…...

用ESP32-S3和百度AI做个会聊天的智能音箱(Arduino+文心一言+语音识别)

用ESP32-S3和百度AI打造会聊天的智能音箱&#xff1a;从硬件组装到语音交互全流程 想象一下&#xff0c;清晨醒来只需对桌上的小盒子说句"今天天气如何"&#xff0c;就能听到温柔的女声播报天气预报&#xff1b;工作时随口问"量子计算是什么"&#xff0c;立…...

用51单片机+Proteus仿真,从零到一复刻一个数码管电子钟(附完整代码和电路图)

从零构建51单片机数码管电子钟&#xff1a;Proteus仿真与实战全解析 数码管电子钟作为单片机入门经典项目&#xff0c;能系统训练定时器、中断、数码管驱动等核心技能。但很多初学者在独立实现时&#xff0c;常遇到仿真效果不稳定、显示闪烁或计时不准等问题。本文将用保姆级教…...

技术无罪,人心可畏 —— 写在 315 “GEO 投毒” 话题之后

2026 年央视 315 晚会&#xff0c;将镜头对准了人工智能领域的灰色地带 ——“AI 投毒” 与 “GEO” 一夜之间成为公众热议的话题。记者虚构了一款名为 “Apollo-9” 的智能手环&#xff0c;借助 “GEO 优化系统” 批量生成虚假内容&#xff0c;短短数小时就让多个主流 AI 大模…...

Pixel Language Portal 快速上手PyCharm:远程开发与模型调试配置详解

Pixel Language Portal 快速上手PyCharm&#xff1a;远程开发与模型调试配置详解 1. 为什么需要PyCharm远程开发 作为一名AI开发者&#xff0c;你可能经常遇到这样的困扰&#xff1a;本地电脑性能有限&#xff0c;跑不动大模型&#xff1b;服务器上开发又不够直观方便。PyCha…...

从入门到精通解析Python Selenium如何模拟浏览器操作

Selenium是一款开源的自动化测试工具&#xff0c;核心优势在于能模拟真实用户操作浏览器&#xff08;如点击、输入、滚动&#xff09;&#xff0c;并渲染动态加载的网页内容&#xff08;解决Requests库无法爬取JS动态数据的问题&#xff09;。 一、Selenium入门准备&#xff1a…...

为什么选全屋定制,不买成品柜

1&#xff09;为什么选全屋定制&#xff0c;不买成品柜&#xff1f;​ 成品柜尺寸固定&#xff0c;苏州很多户型飘窗、梁位、管道多&#xff0c;放进去丑、浪费空间&#xff01;我们定制严丝合缝&#xff0c;顶天立地&#xff0c;收纳多 30%&#xff0c;颜值统一&#xff0c;和…...