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

java练习(41)

ps:题目来自力扣

最接近的三数之和

给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。

返回这三个数的和。

假定每组输入只存在恰好一个解。

import java.util.Arrays;class Solution {public int threeSumClosest(int[] nums, int target) {// 首先对数组进行排序,方便后续使用双指针法Arrays.sort(nums);int n = nums.length;// 初始化最接近的和为数组前三个元素的和int closestSum = nums[0] + nums[1] + nums[2];// 遍历数组,固定第一个数for (int i = 0; i < n - 2; i++) {int left = i + 1;int right = n - 1;while (left < right) {// 计算当前三个数的和int currentSum = nums[i] + nums[left] + nums[right];// 如果当前和等于目标值,直接返回该和if (currentSum == target) {return currentSum;}// 比较当前和与目标值的距离和之前最接近和与目标值的距离if (Math.abs(currentSum - target) < Math.abs(closestSum - target)) {closestSum = currentSum;}// 根据当前和与目标值的大小关系移动指针if (currentSum < target) {left++;} else {right--;}}}return closestSum;}
}

代码解释

本题要求从给定的整数数组 nums 中选出三个整数,使它们的和与目标值 target 最接近,并返回这三个数的和。我们可以采用排序加双指针的方法来解决。

具体步骤

  1. 数组排序
    • 使用 Arrays.sort(nums) 对数组进行排序,这样便于后续使用双指针法调整元素组合。
  2. 初始化最接近的和
    • 把 closestSum 初始化为数组前三个元素的和,后续会不断更新它。
  3. 遍历数组固定第一个数
    • 通过 for 循环遍历数组,直到倒数第三个元素,固定 nums[i] 作为三个数中的第一个数。
  4. 双指针查找另外两个数
    • 初始化左指针 left 为 i + 1,右指针 right 为数组的最后一个元素。
    • 在 while 循环中,只要 left 小于 right 就继续:
      • 计算当前三个数的和 currentSum
      • 如果 currentSum 等于 target,直接返回 currentSum
      • 比较 currentSum 与 target 的距离和 closestSum 与 target 的距离,若 currentSum 更接近,则更新 closestSum
      • 根据 currentSum 与 target 的大小关系移动指针:
        • 若 currentSum 小于 target,将 left 指针右移以增大和。
        • 若 currentSum 大于 target,将 right 指针左移以减小和。
  5. 返回结果
    • 遍历结束后,closestSum 即为最接近目标值的三个数的和,将其返回。

相关文章:

java练习(41)

ps&#xff1a;题目来自力扣 最接近的三数之和 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数&#xff0c;使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 import java.util.Arrays;class Solut…...

关于CanvasRenderer.SyncTransform触发调用的机制

1&#xff09;关于CanvasRenderer.SyncTransform触发调用的机制 2&#xff09;小游戏Spine裁剪掉帧问题 3&#xff09;Dedicated Server性能问题 4&#xff09;.mp4视频放入RT进行渲染的性能分析闭坑指南 这是第421篇UWA技术知识分享的推送&#xff0c;精选了UWA社区的热门话题…...

【计算机网络】OSI模型、TCP/IP模型、路由器、集线器、交换机

一、计算机网络分层结构 计算机网络分层结构 指将计算机网络的功能划分为多个层次&#xff0c;每个层次都有其特定的功能和协议&#xff0c;并且层次之间通过接口进行通信。 分层设计的优势&#xff1a; 模块化&#xff1a;各层独立发展&#xff08;如IPv4→IPv6&#xff0c…...

PDF扫描档智能方向识别:多模型投票机制的实践测试 救活古典书籍

2025-02-22 20:10物联全栈123 尊敬的诸位&#xff01;我是一名物联网工程师。关注我&#xff0c;持续分享最新物联网与AI资讯和开发实战。期望与您携手探寻物联网与 AI 的无尽可能 RAG知识库搭建的过程中&#xff0c;扫描档pdf的支持和准确率一直是个大家都不愿主动提起的事情…...

java23种设计模式-桥接模式

桥接模式&#xff08;Bridge Pattern&#xff09;学习笔记 &#x1f31f; 定义 桥接模式属于结构型设计模式&#xff0c;将抽象部分与实现部分分离&#xff0c;使它们可以独立变化。通过组合代替继承的方式&#xff0c;解决多维度的扩展问题&#xff0c;防止类爆炸。 &#x…...

【11】RUST使用cargo组织crate

文章目录 使用cargo组织crate重导出编译文档生成测试 cargo组织工作空间 TODOcrate.io账号 TODO暂时不看发布crate 使用cargo组织crate 重导出 在模块顶部使用pub use self::重导出&#xff0c;方便使用模块时候直接使用use mod_X::xxx。从而隐藏crate内部模块的结构。方便向…...

springboot 引入前端

前端 打包 npm run build vue.config.js 文件 publicPath 默认建议保持 / publicPath: ‘/’ 后端 目录 粘贴下面目录之一&#xff1a; src/main/resources/static/ src/main/resources/public/ 补充&#xff08;用的少&#xff09; server:servlet:context-path: /thirdAdm…...

ubuntu20.04 使用nmcli 连接wifi,并且设置永久连接

在 Ubuntu 20.04 中&#xff0c;你可以使用 nmcli 命令行工具来连接 WiFi 并设置为永久连接。以下是具体步骤&#xff1a; 1. 查看可用的 WiFi 网络 首先&#xff0c;使用以下命令查看可用的 WiFi 网络&#xff1a; nmcli dev wifi 这将列出所有可用的 WiFi 网络及其 SSID。…...

Android-创建mipmap-anydpi-v26的Logo

利用 Android Studio 自动创建 创建新项目&#xff1a;打开 Android Studio&#xff0c;点击 “Start a new Android Studio project” 创建新项目。在创建项目的过程中&#xff0c;当设置Target SDK Version为 26 或更高版本时&#xff0c;Android Studio 会在项目的res目录下…...

轻松搭建:使用Anaconda创建虚拟环境并在PyCharm中配置

一、使用Anaconda创建虚拟环境 1. 安装Anaconda 2..conda常用的命令 3. 创建虚拟环境-以搭建MachineVision为例 4. 激活虚拟环境 5. 安装依赖包 二、PyCharm配置环境 在进行Python项目开发时&#xff0c;合理的环境管理是必不可少的&#xff0c;特别是当你在多个项目中…...

驱动开发系列39 - Linux Graphics 3D 绘制流程(二)- 设置渲染管线

一:概述 Intel 的 Iris 驱动是 Mesa 中的 Gallium 驱动,主要用于 Intel Gen8+ GPU(Broadwell 及更新架构)。它负责与 i915 内核 DRM 驱动交互,并通过 Vulkan(ANV)、OpenGL(Iris Gallium)、或 OpenCL(Clover)来提供 3D 加速。在 Iris 驱动中,GPU Pipeline 设置 涉及…...

结构型模式 - 代理模式 (Proxy Pattern)

结构型模式 - 代理模式 (Proxy Pattern) 代理模式是一种结构型设计模式&#xff0c;它允许通过代理对象来控制对另一个对象&#xff08;目标对象&#xff09;的访问。代理对象充当目标对象的接口&#xff0c;客户端通过代理对象间接访问目标对象。 分为两大类 静态代理&#…...

Ubuntu 24.04 登录禁用用户列表

Ubuntu 24.04 登录禁用用户列表 得到登录用户列表状态禁用登录用户列表 得到登录用户列表状态 gsettings get org.gnome.login-screen disable-user-list禁用登录用户列表 gsettings get org.gnome.login-screen disable-user-list true...

MinIO整合SpringBoot实现文件上传、下载

文章目录 配置1. 部署MinIO服务2. 整合SpringBoot 功能实现1. 文件上传2. 文件下载 总结 配置 1. 部署MinIO服务 这里以docker为例&#xff1a; 安装minio命令docker run -p 9000:9000 -p 9001:9001 \ --name minio \ -v /path/to/data:/data \ -e "MINIO_ROOT_USERmin…...

【Python爬虫(90)】以Python爬虫为眼,洞察金融科技监管风云

【Python爬虫】专栏简介&#xff1a;本专栏是 Python 爬虫领域的集大成之作&#xff0c;共 100 章节。从 Python 基础语法、爬虫入门知识讲起&#xff0c;深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑&#xff0c;覆盖网页、图片、音频等各类数据爬取&#xff…...

FreeRTOS(3)列表List

在 FreeRTOS 的源码中大量地使用了列表和列表项&#xff0c;因此想要深入学习 FreeRTOS&#xff0c;列表和列表项是必备的基础知识。这里所说的列表和列表项&#xff0c;是 FreeRTOS 源码中 List 和 List Item 的 直译&#xff0c;事实上&#xff0c; FreeRTOS 中的列表和列表项…...

C++和OpenGL实现3D游戏编程【连载23】——几何着色器和法线可视化

欢迎来到zhooyu的C++和OpenGL游戏专栏,专栏连载的所有精彩内容目录详见下边链接: 🔥C++和OpenGL实现3D游戏编程【总览】 1、本节实现的内容 上一节课,我们在Blend软件中导出经纬球模型时,遇到了经纬球法线导致我们在游戏中模型光照显示问题,我们在Blender软件中可以通过…...

Harmony开发笔记(未完成)

一、感想 作为一名拥有11年经验的Android开发者&#xff0c;我亲历了Android从高速发展到如今面临“僧多粥少”的过程。技术的世界瞬息万变&#xff0c;没有一种技术能够让人依赖一辈子。去年初&#xff0c;我自学了鸿蒙系统&#xff0c;并顺利通过了鸿蒙官方的初级和高级认。…...

【Java面试】创建线程有哪几种方式

目录 1.继承Thread类 2.实现Runnable接口 3.实现Callable接口和FutureTask 4.使用Executor框架&#xff08;线程池&#xff09; Java并发编程中不同接口和类之间的关系 总结 1.继承Thread类 优点&#xff1a; 简单直观。直接继承Thread类&#xff0c;可以方便地使用Threa…...

在Linux环境下利用MTCNN进行人脸检测(基于ncnn架构)

概述 本文将详细介绍如何在Linux环境下部署MTCNN模型进行人脸检测&#xff0c;并使用NCNN框架进行推理。 1. CMake的安装与配置 下载CMake源码 前往CMake官网下载&#xff0c;找到适合您系统的最新版本tar.gz文件链接&#xff0c;或者直接通过wget下载&#xff1a;CMake官方…...

AI数字人系统源码部署解决方案!!!

一、开场白 如今&#xff0c;科技的步伐越来越快&#xff0c;数字人已经从想象中走进了我们的现实生活。它们在娱乐、教育、医疗等多个领域大放异彩。了解数字人的代码开发技术&#xff0c;能让我们更好地理解其工作原理&#xff0c;为那些想在这一领域大展拳脚或者用数字人技…...

W803|联盛德|WM IoT SDK2.X测试|(1)开箱:开发板及说明

前几天关注的联盛德微电子新推出了WM IoT SDK2.X&#xff0c;正式发布后&#xff0c;邀请用户参加“免费试用&#xff0c;赢千元大礼”活动&#xff0c;填写信息&#xff0c;等待统一发送&#xff0c;很快收到了板子。 活动地址&#xff1a;联盛德微电子WM IoT SDK2.X正式发布…...

003 SpringBoot集成Kafka操作

4.SpringBoot集成Kafka 文章目录 4.SpringBoot集成Kafka1.入门示例2.yml完整配置3.关键配置注释说明1. 生产者优化参数2. 消费者可靠性配置3. 监听器高级特性4. 安全认证配置 4.配置验证方法5.不同场景配置模板场景1&#xff1a;高吞吐日志收集场景2&#xff1a;金融级事务消息…...

2.✨java练习1(熟悉“类”)

1. A B - AcWing题库 问题描述 输入两个整数&#xff0c;求这两个整数的和是多少。 输入格式 输入两个整数A,B&#xff0c;用空格隔开 输出格式 输出一个整数&#xff0c;表示这两个数的和 数据范围 0≤A,B≤1e8 C #include <iostream> // 包含标准输入输出库 using n…...

基本网络安全的实现

基本网络安全的实现 一 &#xff1a;AAA AAA 是Authentication&#xff0c;Authorization and Accounting&#xff08;认证、授权和计费&#xff09;的简 称&#xff0c;它提供了一个用来对认证、授权和计费这三种安全功能进行配置的一致性框架&#xff0c; 它是对网络安全…...

快手前端通用静态托管服务KFX演进历程:从崎岖土路到平坦高速

快手静态部署托管服务&#xff08;KFX&#xff09;历经四年发展&#xff0c;经历了三个阶段&#xff0c;一步步从勉强能行车的“崎岖土路”到现在多车道并行的“平坦高速”&#xff0c;这一转变极大地提升了资源利用率和效率&#xff0c;满足业务的实际需要。本文将带你了解其背…...

登录逻辑结合redis

1. 用户登录 用户访问登录页面&#xff0c;输入用户名和密码&#xff0c;提交表单。 服务端验证用户名和密码&#xff1a; 如果验证成功&#xff0c;生成 ticket&#xff0c;并将 ticket 和用户 ID 存储在缓存中&#xff08;如 Redis&#xff09;。 将 ticket 放入 Cookie 中…...

Locale+Jackson导致Controller接口StackOverflowError异常解决

问题 由于参与的项目有出海需求&#xff0c;即需要给外国人使用&#xff0c;即&#xff1a;需要支持i18n&#xff08;Internationalization的缩写&#xff0c;共20个字母&#xff0c;除去首尾两个字母&#xff0c;中间有18个&#xff0c;故简称i18n&#xff09;。 本来是好的…...

安卓工控平板电脑在环境监测设备中的运用

安卓工控平板电脑在环境监测设备中的运用主要体现在以下几个方面&#xff1a; 一、耐用性与可靠性 安卓工控平板电脑通常具有坚固耐用的外壳设计&#xff0c;如铝合金面板和镀锌钢板箱体结构&#xff0c;能够抵抗高温、低温、湿度、震动等恶劣的工作环境。这种耐用性和可靠性…...

【洛谷排序算法】P1012拼数-详细讲解

洛谷 P1012 拼数这道题本身并非单纯考察某种经典排序算法&#xff08;如冒泡排序、选择排序、插入排序、快速排序、归并排序等&#xff09;的实现&#xff0c;而是在排序的基础上&#xff0c;自定义了排序的比较规则&#xff0c;属于自定义排序类型的题目。不过它借助了标准库中…...