news 2026/3/13 6:28:37

D.二分查找-进阶——658. 找到 K 个最接近的元素

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
D.二分查找-进阶——658. 找到 K 个最接近的元素

题目链接:658. 找到 K 个最接近的元素(中等)

算法原理:

解法一:排序

19ms击败13.08%

时间复杂度O(NlogN)

这个解法其实挺暴力的,直接用把arr全扔链表里,然后按照题目要求把链表排序,最后取出前K个即可,别忘了返回前排个序

解法二:双指针+二分查找

3ms击败100.00%

时间复杂度O(NlogN)

利用题目给的arr已升序排序的条件,可根据x把arr分成两部分,前一部分都<x,后一部分都≥x,我们可以只用一次二分查找即可,先确定right,那么left就是right-1,确定right用到求最左端点模型👇

优选算法-二分:18.在排序数组中查找元素的第一个和最后一个位置

然后通过移动left和right确定一个[left+1,right-1]区间,这个区间内的元素即答案

如何移动呢?👇

如果left越界:left<0,只能right++

如果right越界:right>=arr.length,只能left--

都不越界就按题意来移动:

如果x和left的差<=x和right的差,就left--,因为差值相同时,题目规定取小的

如果x和left的差>x和right的差,就right++

Java代码:

class Solution { //解法一:排序 public List<Integer> findClosestElements(int[] arr, int k, int x) { List<Integer> list=new ArrayList<>(); for(int a:arr) list.add(a); Collections.sort(list,new Comparator<Integer>(){ @Override public int compare(Integer a,Integer b){ if(Math.abs(x-a)!=Math.abs(x-b)) return Math.abs(x-a)-Math.abs(x-b); else return a-b; } }); List<Integer> ret=list.subList(0,k); Collections.sort(ret); return ret; } }
class Solution { //解法二:双指针+二分查找 public List<Integer> findClosestElements(int[] arr, int k, int x) { int right=binarySearch(arr,x); int left=right-1; //维护[left,right]作为结果区间 while(k-->0){ if(left<0) right++; else if(right>=arr.length) left--; else if(x-arr[left]<=arr[right]-x) left--; else right++; } List<Integer> ret=new ArrayList<>(); for(int i=left+1;i<right;i++) ret.add(arr[i]); return ret; } public int binarySearch(int[] arr,int x){ //最左端点模型 int left=0,right=arr.length-1; while(left<right){ int mid=left+(right-left)/2; if(arr[mid]<x) left=mid+1; else right=mid; } return left; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/12 3:11:20

Meta-Llama-3-8B-Instruct性能对比:不同硬件

Meta-Llama-3-8B-Instruct性能对比&#xff1a;不同硬件 1. 技术背景与选型动机 随着大语言模型在消费级硬件上的部署逐渐成为可能&#xff0c;如何在有限算力条件下实现高效推理成为开发者关注的核心问题。Meta-Llama-3-8B-Instruct 作为 Llama 3 系列中兼顾性能与成本的中等…

作者头像 李华
网站建设 2026/3/12 19:11:26

通义千问3-4B-Instruct-2507中文处理优势:C-Eval评测部署教程

通义千问3-4B-Instruct-2507中文处理优势&#xff1a;C-Eval评测部署教程 1. 引言 随着大模型向端侧下沉趋势的加速&#xff0c;轻量化、高性能的小参数模型成为边缘计算和本地部署场景的关键突破口。通义千问 3-4B-Instruct-2507&#xff08;Qwen3-4B-Instruct-2507&#xf…

作者头像 李华
网站建设 2026/3/12 22:26:16

GPT-OSS-20B-WEBUI操作手册:管理员后台管理功能

GPT-OSS-20B-WEBUI操作手册&#xff1a;管理员后台管理功能 1. 概述与部署准备 随着开源大模型生态的快速发展&#xff0c;GPT-OSS-20B作为OpenAI社区推动的重要项目之一&#xff0c;凭借其强大的语言理解与生成能力&#xff0c;正在被广泛应用于研究、教育及企业级推理服务场…

作者头像 李华
网站建设 2026/3/13 0:46:39

用PyTorch-2.x-Universal-Dev镜像轻松实现AI模型训练与微调

用PyTorch-2.x-Universal-Dev镜像轻松实现AI模型训练与微调 1. 镜像环境概述与核心价值 1.1 PyTorch-2.x-Universal-Dev-v1.0 镜像特性解析 PyTorch-2.x-Universal-Dev-v1.0 是一款基于官方 PyTorch 底包构建的通用深度学习开发镜像&#xff0c;专为简化 AI 模型训练与微调流…

作者头像 李华
网站建设 2026/3/13 1:59:10

Z-Image-Turbo多模态融合:文本+图像联合推理场景构建

Z-Image-Turbo多模态融合&#xff1a;文本图像联合推理场景构建 1. 引言&#xff1a;高效文生图时代的到来 随着生成式AI技术的快速发展&#xff0c;文本到图像&#xff08;Text-to-Image&#xff09;模型在内容创作、设计辅助和视觉表达等领域展现出巨大潜力。然而&#xff…

作者头像 李华
网站建设 2026/3/12 23:22:20

BERT填空置信度不准?模型微调部署优化实战案例解析

BERT填空置信度不准&#xff1f;模型微调部署优化实战案例解析 1. 引言&#xff1a;BERT 智能语义填空服务的落地挑战 随着自然语言处理技术的发展&#xff0c;基于预训练语言模型的智能语义理解应用逐渐走向工程化落地。其中&#xff0c;BERT&#xff08;Bidirectional Enco…

作者头像 李华