LeetCode 658. Find K Closest Elements 二分+双指针
Given a sorted integer array arr
, two integers k
and x
, return the k
closest integers to x
in the array. The result should also be sorted in ascending order.
An integer a
is closer to x
than an integer b
if:
|a - x| < |b - x|
, or|a - x| == |b - x|
anda < b
Solution
先用二分确定 x
的位置,然后用双指针来确定左右范围
点击查看代码
class Solution: def findClosestElements(self, arr: List[int], k: int, x: int) -> List[int]: def left_bound(arr, x): left = 0 right = len(arr) while left<right: mid = left+int((right-left)/2) if arr[mid]==x: right=mid elif arr[mid]<x: left=mid+1 elif arr[mid]>x: right=mid return left right = left_bound(arr,x) left = right-1 print(right, left) for _ in range(k): if left<0: right+=1 elif right>=len(arr): left-=1 else: if x-arr[left]<=arr[right]-x: left-=1 else: right+=1 return arr[left+1:right]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2022-07-15 LeetCode Largest Rectangle in Histogram 思维
2022-07-15 LeetCode Longest Increasing Path in a Matrix 记忆化搜索+DP [Hard]