首页 > 其他分享 >3194. 最小元素和最大元素的最小平均值

3194. 最小元素和最大元素的最小平均值

时间:2024-10-16 10:35:46浏览次数:1  
标签:5.5 nums res 元素 list 最小 3194 averages

你有一个初始为空的浮点数数组 averages。另给你一个包含 n 个整数的数组 nums,其中 n 为偶数。

你需要重复以下步骤 n / 2 次:

从 nums 中移除 最小 的元素 minElement 和 最大 的元素 maxElement。
将 (minElement + maxElement) / 2 加入到 averages 中。
返回 averages 中的 最小 元素。

示例 1:

输入: nums = [7,8,3,4,15,13,4,1]

输出: 5.5

解释:

步骤 nums averages
0 [7,8,3,4,15,13,4,1] []
1 [7,8,3,4,13,4] [8]
2 [7,8,4,4] [8,8]
3 [7,4] [8,8,6]
4 [] [8,8,6,5.5]
返回 averages 中最小的元素,即 5.5。
示例 2:

输入: nums = [1,9,8,3,10,5]

输出: 5.5

解释:

步骤 nums averages
0 [1,9,8,3,10,5] []
1 [9,8,3,5] [5.5]
2 [8,5] [5.5,6]
3 [] [5.5,6,6.5]
示例 3:

输入: nums = [1,2,3,7,8,9]

输出: 5.0

解释:

步骤 nums averages
0 [1,2,3,7,8,9] []
1 [2,3,7,8] [5]
2 [3,7] [5,5]
3 [] [5,5,5]

提示:

2 <= n == nums.length <= 50
n 为偶数。
1 <= nums[i] <= 50

解题思路:
1.先根据数组进行排序
2.使用list添加数据,每次取前后两条数据
3.对计算结果取最小的值

完整代码:
    class Solution {
      public double minimumAverage(int[] nums) {
          Arrays.sort(nums);
          List<Integer> list = new ArrayList<>();
          List<Double> resultList = new ArrayList<>();
          for (int num : nums) {
              list.add(num);
          }
          double res = Integer.MAX_VALUE;
          while (!list.isEmpty()) {
              Integer min = list.get(0);
              Integer max = list.get(list.size()-1);
              res =  Math.min(res,(min + max) / 2.0);
              list.remove(0);
              list.remove(list.size()-1);
          }

          return res;
      }
  }

既然数组都已经是排序的了,那么只需要每次取头尾两条数据就可以了,那么只需要遍历数组的一半位置就能得出结论

完整代码:
    class Solution {
      public double minimumAverage(int[] nums) {
          // 对数组进行排序,以便后续比较
          Arrays.sort(nums);
          // 获取数组长度
          int n = nums.length;
          // 初始化最小平均值为最大双精度值,以便后续比较
          double res = Double.MAX_VALUE;
          // 遍历数组的前半部分,因为数组已经排序,这样可以保证同时访问到两端的元素
          for (int i = 0; i < n / 2; i++) {
              // 计算当前两端元素的平均值,并更新最小平均值
              res = Math.min(res, (nums[i] + nums[n - 1 - i]) / 2.0);
          }
          // 返回计算得到的最小平均值
          return res;
      }
  }

标签:5.5,nums,res,元素,list,最小,3194,averages
From: https://www.cnblogs.com/java-cheng/p/18469287

相关文章

  • 基于网格搜索优化最小二乘向量机(GS-LSSVM)的数据多变量回归预测 Matlab代码(多输入单
    基于网格搜索优化最小二乘向量机(GS-LSSVM)的数据多变量回归预测Matlab代码(多输入单输出)程序已经调试好,无需更改代码替换数据集即可运行!!!数据格式为excel!网格搜索GS优化参数为:sigma、gamma1.购买前GS可以更换为其他的优化算法!需要其他算法的都可以定制!注:1️⃣、运行环境要......
  • CSS伪元素详解
    CSS伪元素详解一、引言在CSS中,伪元素是一个非常强大的工具,它允许我们为元素的特定部分添加样式,而无需修改HTML结构。这不仅提高了样式的灵活性,还有助于保持代码的整洁和可维护性。本文将深入探讨CSS伪元素的使用方法和一些实用技巧。二、伪元素的基本概念1、伪元素的定......
  • 基于prim算法求出网络最小生成树实现网络社团划分和规划
    1.程序功能描述路线制定1,将算法得到的各社团的需充电节点数量排序,将其视为节点权值2,利用prim算法求出最小生成树,即完成了整个网络规划。2.测试软件版本以及运行结果展示MATLAB2022a版本运行Tttttttttt123453.核心程序%节点权值W=[];Xz=[];Yz=[];Ridx=0;for......
  • Leetcode 1489. 找到最小生成树里的关键边和伪关键边
    1.题目基本信息1.1.题目描述给你一个n个点的带权无向连通图,节点编号为0到n-1,同时还有一个数组edges,其中edges[i]=[fromi,toi,weighti]表示在fromi和toi节点之间有一条带权无向边。最小生成树(MST)是给定图中边的一个子集,它连接了所有节点且没有环,而且这些边......
  • Java 列表元素自定义排序
    在Java开发过程中,有时会遇到需要对列表中元素进行自定义的排序。这样的排序往往不能由元素本身的特性(比如字符串长度、首字母顺序)判断,需要自己指定顺序。比如对汉字的数字进行排序,他们的字符串长度都为1,首字母顺序也不能得到预期的结果,因此需要自定义排序。以下是示例代码:p......
  • Delphi 自定义窗体(最大化、最小化、关闭、窗体的移动)
    UsesShellAPI;1、//最小化procedureTForm1.btn1Click(Sender:TObject);varI,J,X,Y:Word;begin//第一种:最小化在屏幕的左下角,不是常见的最小化//WindowState:=wsMinimized;//第儿种:最小化在任务栏里面,是常见的最小化postmessage(Self.Handle,WM_SYSCOMMAN......
  • 最小生成树&最短路杂题
    contestlinkA与cheaprobot是一个题,就是跑多元最短路之后\(dis_u+dis_v+w(u,v)\)赋权跑Kruskal重构树即可B注意到是网格图,那么\(u,v\)不连通也就是以其为源点/汇点存在一个割。转对偶图之后也就是判环,那么在删除\((u,v)\)之前对偶图里其对应点已经连通就NIE,否则TAK......
  • 代码随想录训练营第62天|最小生成树
    53.寻宝#include<iostream>#include<vector>#include<climits>usingnamespacestd;intmain(){intv,e;intx,y,k;cin>>v>>e;//填一个默认最大值,题目描述val最大为10000vector<vector<int>>grid(v+1......
  • 图论 MST(最小生成树) prim
    #include<bits/stdc++.h>usingnamespacestd;constintP=1e6+7;constintinf=1e9;typedeflonglongll;intmp[1010][1010];intn,m;intd[1010];//从已选点到i的min权值intvis[1010];//选或没选voidprim(){ for(inti=1;i<=n;i++) d[i]=inf......
  • java中如何在集合遍历过程中删除元素(5种方法对比、案例、常见的错误及其后果)
    在Java开发中,集合遍历过程中删除元素是一个常见但容易出错的操作。不同的集合类型(如ArrayList、HashSet)有不同的处理方式,而错误使用则可能导致ConcurrentModificationException异常。本文将全面分析该问题的根源,提供最佳实践、对比不同方法,并通过案例展示具体实现。一、问......