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

leetcode 困难题 1521. 找到最接近目标值的函数值

Problem: 1521. 找到最接近目标值的函数值

布尔操作&的性质是越来越小,一个数字a不停的&,a &= c;结果是a越来越小,所以只需要找到 a <= target的时刻,以及这个时刻的上一个a也就是pre = a’,这两者是最靠近target数字的

首先去重的,将连续且相等的数字变成一个数字,然后遍历数组,拿到一个数字的最小值mi,拿到最大值

若最大值mx小于 < target,那么数组的所有数字不管怎么&,结果只会越来越小,所以最靠近target数字的就是最大值mx,直接返回就行

两重循环的,第一重循环,若数字a = arr[i]小于 < target,则直接跳过,不停&越来越小导致越来越远离target

第二重循环,只考虑一种时刻 a <= target || j == n-1,此时才计算最小值,单调的结果a只有当a<=target时刻的当前值a和上一个值pre最靠近target

Code

class Solution { public: int closestToTarget(vector<int>& arr, int target) { int n = arr.size(), a, pre, c, di, mi = INT_MAX; vector<int> now{arr[0]}; for(int i = 1; i < n; i++) { a = arr[i]; if(now.back()!=a) now.push_back(a); } arr = std::move(now); n = arr.size(); int mx = -1; for(int i = 0; i < n; i++) { a = arr[i]; mi = min(abs(target - a), mi); if( mx < a ) mx = a; if(mi == 0) return mi; } if(target > mx) return abs(target - mx); for(int i = 0; i < n; i++) { a = arr[i]; if(a < target) continue; for(int j = i + 1; j < n; j++) { // c = arr[j]; a &= arr[j]; if(a <= target || j == n-1) { mi = min({abs(target - a), mi, abs(pre - target)}); if(a == target) return 0; if(mi == 1) return 1; break; } pre = a; } } return mi; } };
http://www.cnnetsun.cn/news/1522717.html

相关文章:

  • 避坑指南:Wan2.1模型部署常见的7个报错解决方案(含CUDA版本冲突/依赖项缺失/权重下载失败)
  • 掌握Web AR开发:从痛点到实战的AR.js技术指南
  • 高密度PCB贴装实战:如何用模块化治具解决0.3mm间距元件定位难题
  • 【双足机器人(2)】从轨道能量到捕获点:动态步态规划的Python实践
  • 【实践指南】从零上手CompressAI:端到端图像压缩模型部署与效果实测
  • MovieLens数据集深度解析:从数据字段到用户画像的实战指南(附Python代码)
  • 路侧3D检测翻车实录:Rope3D数据集标签里的航向角坑,我是怎么填上的
  • 【算法对抗】打穿查重黑盒!论文降AI太难?8个实测有效策略与高性价比工具
  • 宝塔面板下phpMyAdmin导入大文件报错?三步搞定Incorrect format parameter问题
  • COCO2014数据集下载与使用指南:从镜像加速到实战应用
  • 如何用Python模拟光的多普勒效应?从零开始实现相对论可视化
  • Qt串口通信实战:用QSerialPort从零搭建一个串口调试助手(附完整源码)
  • 当古壁画遇上AI:我是如何用MindSpore 1.8让破损文物重获新生的
  • Postman环境变量进阶玩法:除了Token还能这样用(含URL动态配置技巧)
  • 不止是聊天:我用Python+Flask把企业微信机器人变成了内部工具‘中枢’
  • 别再只会用图形界面了!Windows自带FTP命令行工具,5分钟搞定文件批量上传下载
  • 5分钟搭建视频增强环境:PyTorch-2.x镜像+MMagic指南
  • FDTD仿真区域设置全攻略:PML边界条件选择与光源监视器放置技巧
  • Poppler Windows版:零配置PDF处理的轻量级解决方案
  • Visual Studio 2022配置bits/stdc++.h全指南:从手动添加到CMake项目集成
  • 深入解析FOC电机控制:从理论到实践的无传感器实现
  • 联想ThinkPad声卡驱动安装避坑指南:从E470到X1 Carbon的通用解法
  • GLM-OCR场景应用:教育资料数字化、商务文档信息抽取实战
  • 从VTK到PyVista:为什么这个库能让3D可视化变得如此简单?
  • 手把手教你为Linux内核新增一个LSM模块:以自定义文件访问控制为例
  • 【仿真】Carla跨平台部署指南:从零到一,附ROS2与Autoware.auto连接实战
  • 少走弯路:高效论文写作全流程AI论文软件推荐(2026 最新)
  • 基于IMU和GPS的ESKF融合组合导航C语言、卡尔曼滤波、数据融合(复现)
  • 财务效率革命:printPDF免费电子发票批量打印工具深度解析
  • 用ECharts树图打造家族关系可视化:从JSON数据到移动端适配全攻略