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

DeepSeek LintCode 3706 · 满足条件的数对的数量 public long countValidPairs(int[] nums1, int[] nums2, int dif

这个问题是 LintCode 3706 “满足条件的数对的数量”要求统计满足nums1[i] - nums1[j] nums2[i] - nums2[j] diff其中i j的数对(i, j)的数量。问题理解给定两个数组nums1和nums2以及一个整数diff求满足以下条件的数对(i, j)的数量i jnums1[i] - nums1[j] nums2[i] - nums2[j] diff这个不等式可以变形为nums1[i] - nums2[i] nums1[j] - nums2[j] diff令a[i] nums1[i] - nums2[i]那么条件变为a[i] a[j] diff即a[i] - diff a[j]对于每个j需要统计所有i j且a[i] - diff a[j]的数量。关键思路这是一个典型的顺序统计 二分查找问题预处理得到数组a其中a[i] nums1[i] - nums2[i]遍历j从 0 到 n-1对于当前j需要统计已处理元素中满足a[i] a[j] diff的数量将a[j]插入到有序结构中累加统计结果由于i j的限制我们需要在遍历时动态维护已遍历元素的有序集合并支持插入元素查询小于等于某个值的元素个数方法一离散化 树状数组Fenwick Tree时间复杂度 O(n log n)空间复杂度 O(n)importjava.util.*;publicclassSolution{publiclongcountValidPairs(int[]nums1,int[]nums2,intdiff){intnnums1.length;// 1. 计算 a[i]long[]anewlong[n];for(inti0;in;i){a[i](long)nums1[i]-nums2[i];}// 2. 离散化所有可能的值a[i] 和 a[i] diffTreeSetLongsetnewTreeSet();for(longval:a){set.add(val);set.add(valdiff);}ListLongsortedValsnewArrayList(set);MapLong,IntegerindexMapnewHashMap();for(inti0;isortedVals.size();i){indexMap.put(sortedVals.get(i),i1);// 树状数组从1开始}// 3. 树状数组FenwickTreebitnewFenwickTree(sortedVals.size());longans0;// 4. 遍历 jfor(intj0;jn;j){// 查询所有 i j 且 a[i] a[j] diff 的数量intidxindexMap.get(a[j]diff);ansbit.query(idx);// 将当前 a[j] 插入intposindexMap.get(a[j]);bit.update(pos,1);}returnans;}classFenwickTree{int[]tree;intsize;FenwickTree(intn){sizen;treenewint[n2];}voidupdate(intidx,intdelta){while(idxsize){tree[idx]delta;idxidx-idx;}}intquery(intidx){intsum0;while(idx0){sumtree[idx];idx-idx-idx;}returnsum;}}}方法二归并排序分治法利用归并排序的过程统计满足条件的逆序对数量时间复杂度 O(n log n)publicclassSolution{publiclongcountValidPairs(int[]nums1,int[]nums2,intdiff){intnnums1.length;long[]anewlong[n];for(inti0;in;i){a[i](long)nums1[i]-nums2[i];}returnmergeSortAndCount(a,0,n-1,diff);}privatelongmergeSortAndCount(long[]a,intleft,intright,intdiff){if(leftright)return0;intmidleft(right-left)/2;longcountmergeSortAndCount(a,left,mid,diff)mergeSortAndCount(a,mid1,right,diff);// 统计跨左右区间满足条件的对数// 对于右区间的每个元素 a[j]统计左区间中 a[i] a[j] diff 的数量intileft;for(intjmid1;jright;j){while(imida[i]a[j]diff){i;}count(i-left);}// 归并排序long[]tempnewlong[right-left1];intpleft,qmid1,k0;while(pmidqright){if(a[p]a[q]){temp[k]a[p];}else{temp[k]a[q];}}while(pmid)temp[k]a[p];while(qright)temp[k]a[q];System.arraycopy(temp,0,a,left,temp.length);returncount;}}方法三平衡二叉搜索树TreeMap直接使用 Java 的TreeMap实现代码简洁但效率稍低TreeMap 操作 O(log n) 但常数较大importjava.util.*;publicclassSolution{publiclongcountValidPairs(int[]nums1,int[]nums2,intdiff){intnnums1.length;long[]anewlong[n];for(inti0;in;i){a[i](long)nums1[i]-nums2[i];}// 使用 TreeMap 存储已遍历元素的频次TreeMapLong,IntegercountMapnewTreeMap();longans0;for(intj0;jn;j){// 查询所有 a[j] diff 的元素数量longtargeta[j]diff;// 使用 headMap 获取所有 target 的键值对SortedMapLong,IntegerheadMapcountMap.headMap(target,true);for(intcnt:headMap.values()){anscnt;}// 插入当前元素countMap.put(a[j],countMap.getOrDefault(a[j],0)1);}returnans;}}复杂度分析方法时间复杂度空间复杂度树状数组O(n log n)O(n)归并排序O(n log n)O(n)TreeMapO(n log n)O(n)示例验证输入: nums1 [1,2,3,4], nums2 [2,3,4,5], diff 1计算 a [-1, -1, -1, -1]遍历过程j0: 查询 -110 的数量 0插入 -1j1: 查询 0 的数量 1插入 -1j2: 查询 0 的数量 2插入 -1j3: 查询 0 的数量 3插入 -1结果 0123 6 ✅总结这道题的关键在于将原不等式转化为a[i] a[j] diff的形式其中a[i] nums1[i] - nums2[i]然后使用顺序统计 二分查找的思路解决。树状数组方法需要离散化归并排序方法更简洁且无需离散化推荐使用。

相关文章:

DeepSeek LintCode 3706 · 满足条件的数对的数量 public long countValidPairs(int[] nums1, int[] nums2, int dif

这个问题是 LintCode 3706 “满足条件的数对的数量”&#xff0c;要求统计满足 nums1[i] - nums1[j] < nums2[i] - nums2[j] diff&#xff08;其中 i < j&#xff09;的数对 (i, j) 的数量。 问题理解 给定两个数组 nums1 和 nums2&#xff0c;以及一个整数 diff&#…...

光伏混合储能直流微电网simulink模型 1.直流微电网由锂电池,超级电容,光伏和直流负载组成 2

光伏混合储能直流微电网simulink模型 1.直流微电网由锂电池&#xff0c;超级电容&#xff0c;光伏和直流负载组成 2.光伏采用电导增量法实现最大功率输出 3.锂电池和超级电容采用直流母线电压控制策略&#xff0c;根据直流母线电压高低实现充放电 实现以下目标&#xff1a; 1.光…...

OpenClaw省钱全攻略,掌握这5招,每月少花几百块冤枉钱

手把手教你一键部署OpenClaw&#xff0c;连接微信、QQ、飞书、钉钉等&#xff0c;1分钟全搞定&#xff01; 刚把OpenClaw折腾好&#xff0c;你可能正沉浸在AI秒回代码、自动理任务的神奇体验里&#xff0c;心里直呼过瘾。可还没等新鲜劲过去&#xff0c;一翻后台账单&#xff…...

别只盯着 Claw 了,这波“真香”技能才是真的生产力神器!

手把手教你一键部署OpenClaw&#xff0c;连接微信、QQ、飞书、钉钉等&#xff0c;1分钟全搞定&#xff01; 说白了&#xff0c;各家大厂出的 Claw 产品&#xff0c;核心逻辑就是“AI 大模型 技能插件”。模型是地基&#xff0c;而你用得爽不爽&#xff0c;全看这些技能给不给…...

深夜调车的时候突然发现,Apollo的泊车轨迹优化藏着不少“骚操作“。咱们今天不聊虚的,直接扒开代码看三个核心模块怎么打架...哦不,怎么配合的

apollo 泊车轨迹优化代码 hybridastariaps平滑优化obca平滑优化 第一个图是matlab绘制 后面的图是程序用sdl库绘制先看Hybrid A*这个愣头青。这货生成的轨迹就像刚拿驾照的新手&#xff0c;能避开障碍物但轨迹拧巴得很。看看它扩展节点的代码片段&#xff1a; Node3D* expand(…...

Ruby开发工具JetBrains RubyMine

链接&#xff1a;https://pan.quark.cn/s/6d78ff88b12eJetBrains RubyMine是一个全新的为Ruby 和 Rails开发者准备的代码编辑器 &#xff0c;对于Ruby这种比较新兴的编程语言&#xff0c;如果你是Ruby的爱好者&#xff0c;不妨试试使用它作为你的开发工具。软件是建立在IntellJ…...

Python面向对象:封装、继承、多态

作为Python面向对象编程&#xff08;OOP&#xff09;的三大核心特性&#xff0c;封装、继承、多态是从编程新手进阶到熟练开发者的必备知识。它们不是晦涩的理论&#xff0c;而是能让代码更简洁、复用性更强、扩展性更好的实用工具。 一、什么是面向对象&#xff1f; 在讲三大特…...

COMSOL锂枝晶生长仿真模拟:四场耦合(化学场、浓度场、电场、应力场)

comsol锂枝晶生长仿真模拟-应力耦合。 化学场、浓度场、电场、应力场&#xff0c;四场耦合模拟锂枝晶的生长。锂金属负极在固态电池中总爱搞事情&#xff0c;枝晶刺穿隔膜的戏码天天上演。实验室里做破坏性测试成本太高&#xff0c;数值仿真就成了预判枝晶生长路径的透视眼。CO…...

SecGPT-14B+OpenClaw联调指南:解决模型响应超时问题

SecGPT-14BOpenClaw联调指南&#xff1a;解决模型响应超时问题 1. 问题背景与场景定位 上周在尝试用OpenClaw调用SecGPT-14B分析一份12万字的网络安全报告时&#xff0c;遭遇了令人头疼的响应超时问题。这个场景很典型——当我们需要处理长文本安全分析时&#xff0c;模型推理…...

【Pygame】第15章 游戏人工智能基础、行为控制与寻路算法实现

摘要 人工智能是游戏开发中的重要组成部分&#xff0c;它能够赋予非玩家角色更自然的行为表现&#xff0c;使游戏世界显得更加真实、生动&#xff0c;并且具有挑战性。 在 2D 游戏中&#xff0c;AI 通常并不追求真正意义上的“智能”&#xff0c;而是通过一系列规则、状态和算…...

智力能效:Token之上的竞争

AI软件竞争的本质是智力能效的竞争。 编者按 2025 年初, Anthropic 宣布 Claude API的价格比GPT-4高出50%。原本以为会出现的大量客户流失却在六个月后呈现出截然相反的走向&#xff1a;Claude在企业市场的采用率不仅没有下降&#xff0c;反而上升了。 过去两年&#xff0c;无数…...

【网络安全干货】黑客内网渗透零基础入门,超详细基础知识手把手教学

0x01 内网概述 内网也指局域网&#xff08;Local Area Network&#xff0c;LAN&#xff09;是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的历程安排、电子邮件和传真通信服务等功能。 内…...

从 AI 助手到 ADT 自动化桥梁:全面解析 Vibing Steampunk 的定位、能力边界与典型使用场合

Vibing Steampunk 这个 GitHub Repository,如果只看名字,很容易让人误以为它只是一个面向 Steampunk,也就是 SAP BTP ABAP environment 的小工具。可一旦把 README、架构文档、CLI 指南和相关实现说明读完,你会发现它的真实定位要大得多:它并不是一个普通的 ABAP 示例项目…...

内网渗透零基础入门教程!小白也能轻松搞懂内网渗透基础知识点

内网渗透初探 | 小白简单学习内网渗透 0x01 基础知识 内网渗透&#xff0c;从字面上理解便是对目标服务器所在内网进行渗透并最终获取域控权限的一种渗透。内网渗透的前提需要获取一个Webshell&#xff0c;可以是低权限的Webshell&#xff0c;因为可以通过提权获取高权限。 …...

OpenClaw邮件处理助手:Qwen3-14b_int4_awq分类与自动回复

OpenClaw邮件处理助手&#xff1a;Qwen3-14b_int4_awq分类与自动回复 1. 为什么需要邮件自动化助手 每天早晨打开邮箱&#xff0c;看到堆积如山的未读邮件总是让人头疼。订阅的新闻简报、工作沟通、广告推广混杂在一起&#xff0c;手动分类和回复消耗了大量时间。作为技术从业…...

LN2266 超小型 低电压启动 PWM 控制 升压 DC/DC 电压调整器

■ 产品概述 LN2266 是一款微型、高效率、升压 DC/DC 调整器。电路由电流模 PWM 控制环路&#xff0c;误差放大器&#xff0c;斜波产生电路&#xff0c;比较器和一个功率开关等模块组成。该芯片可在较宽负载范围内高效稳定的工作。低于 1V 的启动电压&#xff0c;可以使用 1-4节…...

PregelProtocol——定义了“LangChain执行体“最小功能集

1. 配置绑定通过前面的内容我们会发现RunnableConfig这个对象几乎时无所不在&#xff0c;我们在调用Pregel对象的时候可以将它作为参数&#xff0c;用来提供用于控制其执行行为&#xff08;比如迭代限制&#xff0c;并发控制等&#xff09;的配置。执行引擎还将它作为容器用来下…...

线程池项目(1)

推荐去看施磊老师的课程 需要课程或者代码的可以评论,看到会回复的,免费的并发与并行定义并发&#xff1a;多个线程在单核上轮流占用 CPU 时间片&#xff0c;物理上串行执行&#xff0c;但由于时间片较短&#xff0c;看起来像是同时执行。并行&#xff1a;多个线程在多核或多 C…...

Klipper固件全攻略:从配置到优化解决3D打印核心难题

Klipper固件全攻略&#xff1a;从配置到优化解决3D打印核心难题 【免费下载链接】klipper Klipper is a 3d-printer firmware 项目地址: https://gitcode.com/GitHub_Trending/kl/klipper 3D打印技术面临精度不足、振动干扰和配置复杂等挑战&#xff0c;Klipper固件通过…...

YOLOv8n-face人脸检测架构:6MB模型实现92%精度与25ms延迟的企业级方案

YOLOv8n-face人脸检测架构&#xff1a;6MB模型实现92%精度与25ms延迟的企业级方案 【免费下载链接】yolov8-face yolov8 face detection with landmark 项目地址: https://gitcode.com/gh_mirrors/yo/yolov8-face YOLOv8n-face是基于YOLOv8架构优化的轻量级人脸检测模型…...

【第五周】关键词解释:稀疏自编码器(Sparse Autoencoder,简称 SAE)

&#x1f9e0; 当我们在谈论"理解"大模型时&#xff0c;我们在谈论什么&#xff1f;今天我们要聊的关键词&#xff0c;可能是2024-2025年大模型可解释性领域最炙手可热的技术之一&#xff1a;稀疏自编码器&#xff08;Sparse Autoencoder&#xff0c;简称 SAE&#x…...

ASTM D4169针刺棉手袋的产品有效期验证方案

针刺棉手袋的产品有效期验证&#xff0c;核心是确定产品在正常使用条件下的使用寿命&#xff08;通常以使用次数或年限表示&#xff09;&#xff0c;而不仅仅是物理保质期。 结合你之前关注医疗器械运输验证的背景&#xff0c;这里需强调&#xff1a;针刺棉手袋的“有效期”验…...

JDK-02 | 我为什么越来越喜欢用 Java 的 Text Blocks

这是专栏第 2 篇。 如果第一篇 record 是在“模型表达”上让我轻松,Text Blocks 则是在“日常编码和代码审查”上让我明显省力。 我先给结论:Text Blocks 不只是少写几个 +,它真正解决的是多行文本在代码中的可读性、可评审性和可回归性。 一、我为什么会认真用这个特性 …...

Linux生产环境性能优化:内存优先策略,彻底规避Swap性能损耗

Linux生产环境性能优化&#xff1a;内存优先策略&#xff0c;彻底规避Swap性能损耗 前言 作为深耕企业级运维与安全领域的从业者&#xff0c;我们在Oracle/SAP HANA数据库、VMware虚拟化、K8s云原生集群、PrometheusELK监控体系的生产运维中&#xff0c;最常遇到的性能痛点之一…...

LLM 是怎么学习的?训练过程大揭秘

系列&#xff1a;大语言模型原理科普&#xff08;5 篇&#xff09; 本篇&#xff1a;第 2 篇 难度&#xff1a;⭐⭐ 零基础 浅显技术 字数&#xff1a;约 9000 字 阅读时间&#xff1a;20 分钟&#x1f4d6; 开篇&#xff1a;LLM 不是生来就懂 想象一下&#xff0c;你刚出生的…...

手撕 Transformer (2):嵌入层和位置编码的实现上篇文章讲过,Transformer 可分为四个部分:输入、输出、编码器、解

嵌入层的作用&#xff1a;为了将文本中词汇的数字表示转换为向量表示&#xff08;语义向量&#xff09;&#xff0c;这样后续神经网络就可以对其进行计算了。 1.1 代码实现 import torchimport torch.nn as nnimport mathfrom torch.autograd import Variableclass Embeddings…...

【数字孪生实战案例】如何给电子地图标记点实现三维点位同款的视角切换效果?~山海鲸可视化

在可视化项目中&#xff0c;常规电子地图标记点仅支持基础点位标注&#xff0c;无法联动视角切换&#xff1b;本文讲解如何为地图标记点复刻三维标记的视角跳转能力&#xff0c;实现点击点位即可一键切换预设场景视角。 1.在左侧组件库添加“GIS电子地图&#xff08;基础&#…...

阿姆智创15.6寸工控一体机厂家,源头智造ODM定制方案,赋能SMT产线及设备场景

阿姆智创15.6寸工业触控工控一体机&#xff0c;以强悍硬件性能、丰富工业接口、稳定系统适配与一站式解决方案&#xff0c;深度服务SMT产线、运动控制、机器视觉等工业场景&#xff0c;为设备厂商与制造企业提供高可靠、可定制、易集成的智能控制终端&#xff0c;助力工业自动化…...

Redis专题(一)

1. 主从部署主从复制主要⽤于实现数据的冗余备份和读分担&#xff0c;并不是真正的高可用。一个主节点&#xff0c;一个或者多个从节点。同步数据的方向&#xff1a;单向 &#xff0c;只能主节点到从节点。作用&#xff1a;数据冗余&#xff1a;除了数据持久化之外的一种数据冗…...

ToClaw全方位介绍:你的第一只“龙虾”AI助手,一分钟轻松领养!

ToClaw全方位介绍&#xff1a;你的第一只“龙虾”AI助手&#xff0c;一分钟轻松领养&#xff01; 一、先来聊聊这只“龙虾”的故事 2026年开年&#xff0c;如果问中文互联网最火爆的技术热词是什么&#xff0c;那一定非「OpenClaw」莫属。这个被大家亲切称为“龙虾”的开源项目…...