【LeetCode:910. 最小差值 II + 模拟 + 思维】

news2024/11/24 20:06:02

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,CSDN-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述

在这里插入图片描述

🍔 目录

    • 🚩 题目链接
    • ⛲ 题目描述
    • 🌟 求解思路&实现代码&运行结果
      • ⚡ 模拟 + 思维
        • 🥦 求解思路
        • 🥦 实现代码
        • 🥦 运行结果
    • 💬 共勉

🚩 题目链接

  • 910. 最小差值 II

⛲ 题目描述

给你一个整数数组 nums,和一个整数 k 。

对于每个下标 i(0 <= i < nums.length),将 nums[i] 变成 nums[i] + k 或 nums[i] - k 。

nums 的 分数 是 nums 中最大元素和最小元素的差值。

在更改每个下标对应的值之后,返回 nums 的最小 分数 。

示例 1:

输入:nums = [1], k = 0
输出:0
解释:分数 = max(nums) - min(nums) = 1 - 1 = 0 。
示例 2:

输入:nums = [0,10], k = 2
输出:6
解释:将数组变为 [2, 8] 。分数 = max(nums) - min(nums) = 8 - 2 = 6 。
示例 3:

输入:nums = [1,3,6], k = 3
输出:3
解释:将数组变为 [4, 6, 3] 。分数 = max(nums) - min(nums) = 6 - 3 = 3 。

提示:

1 <= nums.length <= 104
0 <= nums[i] <= 104
0 <= k <= 104

🌟 求解思路&实现代码&运行结果


⚡ 模拟 + 思维

🥦 求解思路
  1. 先对数组排序,较小的 nums[i] 将增加,较大的 nums[i] 将变小。
  2. 枚举数组中的每个元素,将其分为两部分,一部分加上 k,一部分减去 k,并计算最大值与最小值的差值。最后,取所有差值中的最小值即可。
  3. 有了基本的思路,接下来我们就来通过代码来实现一下。
🥦 实现代码
class Solution {
    public int smallestRangeII(int[] nums, int k) {
        Arrays.sort(nums);
        int n = nums.length;
        int ans = nums[n - 1] - nums[0];
        for (int i = 1; i < n; i++) {
            int mx = Math.max(nums[i - 1] + k, nums[n - 1] - k);
            int mn = Math.min(nums[0] + k, nums[i] - k);
            ans = Math.min(ans, mx - mn);
        }
        return ans;
    }
}
🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2220342.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

html,css,js实现Upload 上传

实现效果&#xff1a; 代码实现&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Docum…

基于Multisim的汽车尾灯控制电路设计与仿真

假设汽车尾部左右量测各有3个指示灯&#xff08;用发光二极管模拟&#xff09;1. 汽车正常运行时指示灯全灭&#xff1b;2.右转弯时&#xff0c;右侧3个指示灯按右循环顺序点亮&#xff1b;.3. 左转弯时&#xff0c;左侧3个指示灯按左循环顺序点亮&#xff1b;4.临时刹车时所有…

【C语言刷力扣】910.最小差值 ||

题目&#xff1a; 解题思路; 由于需要对数组中的每一个进行 k 或 -k 的操作&#xff0c;这时要求最小差值&#xff0c;即对较大的数 -k 对较小的数 k。 需要先对数组进行排序&#xff0c;再枚举对元素的操作。 对 nums[0] 到 nums[i - 1] 的数进行 k对 nums[i] 到 nums[numsS…

Java笔试05

在Java中&#xff0c;final 关键字可以用于修饰类、方法和变量&#xff1a; 修饰类&#xff1a; 被 final 修饰的类不能被继承&#xff0c;即不能有子类。这通常用于工具类或者不希望被扩展的类。 修饰方法&#xff1a; 被 final 修饰的方法不能被子类覆盖。这通常用于确保类…

Yolo目标检测:实时性与准确性的完美结合

在目标检测领域&#xff0c;Yolo&#xff08;You Only Look Once&#xff09;算法无疑是一颗璀璨的明星。自2016年由Joseph Redmon等人提出以来&#xff0c;Yolo凭借其出色的实时性和准确性&#xff0c;迅速在多个应用场景中崭露头角。本文将详细介绍Yolo目标检测的基本原理、优…

Qt学习笔记第21到30讲

第21讲 new/delete关键字 new关键字 在 C 中&#xff0c; new 关键字用于动态分配内存。它是 C 中处理动态内存分配的主要工具之一&#xff0c;允许在程序运行时根据需要分配内存。 用法 ①分配单个对象&#xff1a;使用 new 可以在堆上动态分配一个对象。例如&#xf…

面向对象进阶(上)(JAVA笔记第二十二期)

p.s.这是萌新自己自学总结的笔记&#xff0c;如果想学习得更透彻的话还是请去看大佬的讲解 目录 static修饰符静态变量静态方法 工具类工具类的使用例子第一题第二题 static注意事项继承关系建立继承关系的格式继承的好处及使用场景继承的特点继承体系的设计继承中类的三大要素…

JavaWeb 22.Node.js_简介和安装

有时候&#xff0c;后退原来是向前 —— 24.10.7 一、什么是Node.js Node.js 是一个于 Chrome V8 的 JavaScript 运行时环境&#xff0c;可以使 JavaScript 运行在服务器端。使用 Node.js&#xff0c;可以方便地开发服务器端应用程序&#xff0c;如 Web 应用、API、后端服务&a…

使用Three.js和Force-Directed Graph实现3D知识图谱可视化

先看样式&#xff1a; 在当今信息爆炸的时代&#xff0c;如何有效地组织和展示复杂的知识结构成为一个重要的挑战。3D知识图谱可视化是一种直观、交互性强的方式来呈现知识之间的关系。本文将详细介绍如何使用HTML、JavaScript、Three.js和Force-Directed Graph库来实现一个交互…

基于SpringBoot+Vue+uniapp微信小程序的社区门诊管理系统的详细设计和实现(源码+lw+部署文档+讲解等)

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

解决:YOLOv8训练数据集时P、R、mAP等值均为0的问题

文章目录 问题解决1.匹配pytorch与cuda的版本2.使用 Adam 优化器3.加大训练轮数epoch4. 删除data/labels下的train.cache和val.cache 问题 使用YOLOv8训练自己的数据集时&#xff0c;出现P、R、mAP等值均为0的问题 Model summary (fused): 186 layers, 2,685,733 parameters, …

【 Git 】git push 出现报错 fatal: Could not read from remote repository.

git push 出现报错 fatal: Could not read from remote repository. 问题描述解决方案 问题描述 Connection closed by 198.18.0.xx port xx fatal: Could not read from remote repository.Please make sure you have the correct access rights and the repository exists.解…

【JavaScript】Javascript基础Day04:函数

Javascript——Day04 01. 函数的基本使用02. 函数的参数以及默认参数03. 匿名函数之函数表达式04. 逻辑中断05. 转换为布尔型 01. 函数的基本使用 02. 函数的参数以及默认参数 注意&#xff1a; 03. 匿名函数之函数表达式 函数&#xff1a;匿名函数/具名函数 为什么这个外部…

【wpf】07 后端验证及令牌码获取步骤

由于在用wpf开发应用程序时&#xff0c;从后端获取数据需要用到 Authorization 授权的Bearer令牌&#xff0c;而这个令牌的获取需要登录后台进行获取&#xff0c;这里登录时还涉及到的验证码的操作&#xff0c;所以在获取过程中&#xff0c;需要对后台系统进行登录并拿到这个Be…

【天池比赛】【零基础入门金融风控 Task2赛题理解】【2.3.6】

【天池比赛】【零基础入门金融风控 Task2赛题理解】【2.3.1-2.3.5】 2.3.6 变量分布可视化 2.3.6.1 单一变量分布可视化 对于 pandas.core.series.Series 类型的变量&#xff1a; index&#xff1a;含义&#xff1a;它表示 Series 对象的索引&#xff0c;也就是每个数据点对…

智能手表核心芯片~手表心率监测芯片AFE4900浅析(附一篇智能手表专利推荐)

智能手表核心芯片~手表心率监测芯片AFE4900浅析(附一篇智能手表专利推荐) 本期是平台君和您分享的第89期内容 2024年8月,安徽华米信息技术及美国的智能手表品牌ZEPP公司在美国对深圳思佰特公司提起诉讼,涉及专利、商标和不正当竞争。 起诉书(来源:RPX网站) 看到这则新闻…

面试官:并发时,故意不加锁会怎么样?

感谢Java面试教程关于并发锁的面试分享 在并发编程中&#xff0c;如果不加锁&#xff0c;可能会导致以下问题&#xff1a; 数据不一致&#xff1a;多个线程同时访问和修改共享资源时&#xff0c;如果没有加锁&#xff0c;可能会导致数据竞争&#xff0c;即一个线程在读取数据…

Maven入门到进阶:构建、依赖与插件管理详解

文章目录 一、Maven介绍1、什么是Maven2、Maven的核心功能 二、Maven核心概念1、坐标GAVP1.1、GroupId1.2、ArtifactId1.3、Version1.3.1、版本号的组成 1.4、Packaging 2、POM、父POM和超级POM2.1、POM (Project Object Model)2.1、父POM&#xff08;Parent POM&#xff09;2.…

算法的学习笔记—丑数(牛客JZ49)

&#x1f600;前言 在程序设计和算法竞赛中&#xff0c;丑数问题是一个经典的动态规划题目。丑数&#xff08;Ugly Number&#xff09;定义为只包含质因子 2、3 和 5 的数。举例来说&#xff0c;数字 6&#xff08;因子为 2 和 3&#xff09;、数字 8&#xff08;因子为 2&…

gewechat免费开源微信机器人开发

​聊天机器人&#xff0c;是一种通过自然语言模拟人类进行对话的程序。通常运行在特定的软件平台上&#xff0c;如PC平台或者移动终端设备平台。聊天机器人系统的主要功能是同用户进行基本沟通并自动回复用户有关产品或服务的问题&#xff0c;以实现降低企业客服运营成本、提升…