每日算法4/17

1552. 两球之间的磁力

题目

在代号为 C-137 的地球上,Rick 发现如果他将两个球放在他新发明的篮子里,它们之间会形成特殊形式的磁力。Rick 有 n 个空的篮子,第 i 个篮子的位置在 position[i] ,Morty 想把 m 个球放到这些篮子里,使得任意两球间 最小磁力 最大。

已知两个球如果分别位于 x 和 y ,那么它们之间的磁力为 |x - y| 。

给你一个整数数组 position 和一个整数 m ,请你返回最大化的最小磁力。

示例 1:

输入:position = [1,2,3,4,7], m = 3
输出:3
解释:将 3 个球分别放入位于 1,4 和 7 的三个篮子,两球间的磁力分别为 [3, 3, 6]。最小磁力为 3 。我们没办法让最小磁力大于 3 。

示例 2:

输入:position = [5,4,3,2,1,1000000000], m = 2
输出:999999999
解释:我们使用位于 1 和 1000000000 的篮子时最小磁力最大。

提示:

  • n == position.length
  • 2 <= n <= 10^5
  • 1 <= position[i] <= 10^9
  • 所有 position 中的整数 互不相同 。
  • 2 <= m <= position.length

思路

根据题目可以知道,是从最小中找到最大,答案越小越有可能,越大可能越小,所以答案是单调的,所以这里采用二分答案算法

  • 首先需要将数组有序化才能进行二分查找 
  • 二分答案算法需要一个check函数,根据题目建立check函数,这道题中最小的一定会选,那么计数初始化为1,遍历查找price数组中满足相邻差值大于mid的元素,计数增加,最后如果遍历完计数计数>=k代表有这个组合为真,如果计数<k则不满足为假
  • 二分查找,如果满足check,就放弃右半区间(或左半区间),如果不满足,就放弃左半区间(或右半区间)。一直往复,直至到最终的答案

代码


bool check(int* position, int positionSize, int m, int mid) {int count = 1;int x0 = position[0];for(int j = 0;j<positionSize;j++){if(position[j] >= x0+mid){count++;x0 = position[j];}}return count>=m;
}
int cmp(const void* a,const void* b){return *(int*)a-*(int*)b;
}
int maxDistance(int* position, int positionSize, int m) {qsort(position,positionSize,sizeof(int),cmp);int low = 1, high = position[positionSize - 1];int ans = 0;while (low <= high) {int mid = (low + high) / 2;if (check(position, positionSize, m, mid)) {ans = mid;low = mid + 1;} else {high = mid - 1;}}return ans;
}

 

1748. 唯一元素的和

题目

给你一个整数数组 nums 。数组中唯一元素是那些只出现 恰好一次 的元素。

请你返回 nums 中唯一元素的  。

示例 1:

输入:nums = [1,2,3,2]
输出:4
解释:唯一元素为 [1,3] ,和为 4 。

示例 2:

输入:nums = [1,1,1,1,1]
输出:0
解释:没有唯一元素,和为 0 。

示例 3 :

输入:nums = [1,2,3,4,5]
输出:15
解释:唯一元素为 [1,2,3,4,5] ,和为 15 。

提示:

  • 1 <= nums.length <= 100
  • 1 <= nums[i] <= 100

思路

这里运用哈希解决

  • 先将数组映射到哈希中,索引就是数组元素,索引指向数组的值表示数组元素出现过几次
  • 然后遍历哈希中键值的位置,如果为1(代表着数组元素是唯一元素)那么增加到总数当中。

代码

int sumOfUnique(int* nums, int numsSize) {int hash[101];memset(hash,0,sizeof(hash));for(int i = 0 ;i < numsSize ;i++ ){++hash[nums[i]];}int sum =0;for(int i = 0;i<numsSize;i++){if(hash[nums[i]] == 1){sum+=nums[i];}}return sum;
}

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

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

相关文章

【面试经典 150 | 链表】分隔链表

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;模拟 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到的数据结构等内容进行回顾…

Springboot集成JWT token实现权限验证

紧接着上一次的博客&#xff0c;我们现在来给这个项目添加一个jwt的权限验证功能&#xff0c;上一次的博客如下&#xff1a;springboot结合vue实现登录和注册功能-CSDN博客 1.后端 1.1.导入依赖 <dependency><groupId>com.auth0</groupId><artifactId&g…

2021年全国大学生电子设计竞赛D题——基于互联网的摄像测量系统(一)

01 D题实现效果演示 视频参考微信原文&#xff1a;2021年全国大学生电子设计竞赛D题——基于互联网的摄像测量系统&#xff08;一&#xff09; 02 D题任务要求 &#xff08;D题原文件参见本文附录&#xff09; 设计并制作一个图中所示的基于互联网的摄像测量系统。图中边长…

【Python】异常处理结构

文章目录 1.python异常2.try_except异常处理结构3.try... 多个except异常处理4.try_except_else异常处理结构5.try_except_finally异常处理结构6.常见报错类型 在运行代码时&#xff0c;总是遇到各种异常&#xff0c;且出现异常时&#xff0c;脚本就会自动的的停止运行&#xf…

就业班 第三阶段(nginx) 2401--4.17 day1 nginx1

负载均衡集群 1、集群是什么&#xff1f; 1 集群&#xff08;cluster&#xff09;技术是一种较新的技术&#xff0c;通过集群技术&#xff0c;可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益&#xff0c;其任务调度则是集群系统中的核心技术。 …

FinalShell 远程连接 Linux(Ubuntu)系统

Linux 系列教程&#xff1a; VMware 安装配置 Ubuntu&#xff08;最新版、超详细&#xff09;FinalShell 远程连接 Linux&#xff08;Ubuntu&#xff09;系统Ubuntu 系统安装 VS Code 并配置 C 环境 ➡️➡️➡️提出一个问题&#xff1a;为什么使用 FinalShell 连接&#xff0…

初识ansible服务及ansible主机清单配置

目录 1、什么是自动化批量管理 2、自动化工具ansible架构 3、ansible服务专用术语对照表 4、设置主机清单&#xff08;inventory&#xff09; 4.1实验环境准备 4.2配置主机清单 4.2.1分组基本格式 4.2.2指定用户名&#xff0c;密码。端口 4.2.3子组 4.3查看 4.3.1看…

LeetCode———144—— 二叉树的前序遍历

目录 ​编辑 1.题目 2.解答 1.首先计算二叉树的节点个数&#xff1a; 2.以先序遍历&#xff08;Preorder Traversal&#xff09;的方式遍历一个二叉树&#xff0c;并将遍历到的节点的值存储在一个整数数组中 3.最终代码 1.题目 . - 力扣&#xff08;LeetCode&#xff09; 给…

双碳目标下基于“遥感+”集成技术的碳储量、碳排放、碳循环、温室气体等多领域监测与模拟

以全球变暖为主要特征的气候变化已成为全球性环境问题&#xff0c;对全球可持续发展带来严峻挑战。2015年多国在《巴黎协定》上明确提出缔约方应尽快实现碳达峰和碳中和目标。2019年第49届 IPCC全会明确增加了基于卫星遥感的排放清单校验方法。随着碳中和目标以及全球碳盘点的现…

[stm32]DMA使用

自动重装和M2M(软件trig)不能一起使用&#xff0c;否则会停不下来 void MyDMA_Init(uint32_t AddrA,uint32_t AddrB,uint16_t Size){RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);DMA_InitTypeDef DMA_InitStructure;DMA_InitStructure.DMA_PeripheralBaseAddrAddrA;//外…

爬楼梯(c)

文章目录 描述分析思路关键代码运行结果 描述 给定一个整数数组 cost &#xff0c;其中 cost[i]是从楼梯第i 个台阶向上爬需要支付的费用&#xff0c;下标从0开始。-旦你支付此费用&#xff0c;即可选择向上爬一个或者两个台阶 要求&#xff1a;请你计算并返回达到楼梯顶部的…

在使用lombok的@Slf4j时,启动项目报错。java:找不到符号

问题背景&#xff1a; 在使用lombok的Slf4j时&#xff0c;启动项目报错。 java&#xff1a;找不到符号符号&#xff1a; 方法info(java.lang.String,java.lang.String)位置&#xff1a; 类型为org.apache.ibatis.logging.Log的变量 log解决方式&#xff1a; 在如图所示位置加…

在线预约家政服务小程序上门服务源码系统 带完整的安装代码包以及搭建教程

随着互联网的快速发展&#xff0c;家政服务行业也逐渐向线上化、智能化转型。为了满足广大用户的需求&#xff0c;罗峰给大家分享一款在线预约家政服务小程序上门服务源码系统。该系统不仅功能完善&#xff0c;而且操作简单&#xff0c;是您打造高效、便捷的家政服务平台的首选…

MySql 表中的id突然变很大,如何给id重新排序

目录 一、场景 二、解决方法 一、场景 我们在开发过程中&#xff0c;难免遇到id突然增大的情况。 由于id突然增大很多&#xff0c;我们重新增加数据时候id会默认加1 那么如何让id 重新从1按顺序排序呢 二、解决方法 点击编辑表&#xff0c;然后新建一个字段id2&#xff0c;将…

探索分布式系统监控zabbix-------------监控Windows

扩展windows 10 server2012 server2016 server2019 监控 一、在虚拟机中安装zabbix的客户端 下载网站 Download and install Zabbix 安装系统一直托不进虚拟机中&#xff1b;因为没安装Tools组件 点击虚拟机&#xff0c;选择安装VMware Tools 查看主机名 二、在web页…

每天五分钟计算机视觉:基于卷积操作完成滑动窗口的图片分类?

本文重点 我们前面学习了使用不同大小的滑动窗口来滑动图片,然后切分成许多小的图片,然后依次应用到我们已经训练好的图像分类模型中,但是这种方式效率太低了,本节课程我们学习一种新的方式,来看一下如何并行识别这些剪切的图片。 原始结构 首先我们先来看一下,如何把…

InCopy2024安装包(亲测可用)

目录 一、软件简介 二、软件下载 一、软件简介 InCopy是一种专业的文字处理软件&#xff0c;由Adobe公司开发。它通常与Adobe InDesign一起使用&#xff0c;主要用于协作式工作流程中的文本编辑和校对。通过与InDesign的集成&#xff0c;InCopy实现了文本编辑和设计分离&#…

初步了解InnoDB存储引擎的架构设计

1. 更新语句在MySQL中是如何执行的&#xff1f; 之前我们已经分析了MySQL架构上的整体设计原理&#xff0c;现在对一条SQL语句从我们的系统层面发送到MySQL中&#xff0c;然后一步一步执行这条SQL的流程&#xff0c;都有了一个整体的了解。 我们已经知道了&#xff0c;MVSQL最…

Springboot 初始化操作

在使用Springboot过程中&#xff0c;或多或少我们会遇到在Springboot启动时要初始化类&#xff0c;或者加载文件之类的一些操作。关于初始化&#xff0c;主要分为两类&#xff0c;一类是在程序启动后的执行初始化操作&#xff0c;另一类是Bean实例化时执行初始化操作&#xff0…

3D Tiles 规范(一概述)

3D Tiles 专为流式传输和渲染大量 3D 地理空间内容而设计&#xff0c;例如摄影测量、3D 建筑、BIM/CAD、实例化要素和点云。它定义了分层数据结构和一组提供可渲染内容的Tile格式。3D Tiles 没有定义内容可视化的明确规则&#xff1b;客户可以根据自己认为合适的方式可视化 3D …