Acwing 104. 货仓选址

Problem: Acwing 104. 货仓选址

思路

这是一个经典的中位数问题。在一维空间中,使得所有点到某一点的距离之和最小,那个点应该选择所有点的中位数。如果有偶数个点,那么中位数是中间两个数的平均值。

解题方法

首先,我们需要读取所有商店的位置,并将它们排序。然后,我们找到中位数。如果商店的数量是偶数,那么中位数是中间两个数的平均值。否则,中位数就是中间的那个数。最后,我们计算所有商店到中位数的距离之和。

复杂度

时间复杂度:

O ( n l o g n ) O(n log n) O(nlogn),主要是排序的时间复杂度。

空间复杂度:

O ( n ) O(n) O(n),需要存储所有商店的位置。

Code

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.util.Arrays;

public class Main {
	static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
	static PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
	static StreamTokenizer sr = new StreamTokenizer(in);
	static int n;
	static int MAXN = 100010;
	static int[] arr = new int[MAXN];

	public static void main(String[] args) throws IOException {
		n = nextInt();
		for (int i = 1; i <= n; i++) {
			arr[i] = nextInt();
		}
		Arrays.sort(arr, 1, n + 1);
		int x = 0;
		if (n % 2 == 0) {
			x = (arr[n / 2] + arr[n / 2 + 1]) / 2;
		} else {
			x = arr[(n + 2 - 1) / 2];
		}
		long res = 0;
		for (int i = 1; i <= n; i++) {
			res += Math.abs(arr[i] - x);
		}
		out.println(res);
		out.flush();

	}

	static int nextInt() throws IOException {
		sr.nextToken();
		return (int) sr.nval;
	}

}

相关推荐

  1. Acwing 104. 选址

    2024-03-23 20:08:04       41 阅读
  2. Acwing154滑动窗口

    2024-03-23 20:08:04       53 阅读
  3. 面试100

    2024-03-23 20:08:04       33 阅读
  4. 阿里云大数据ACAACP复习题(81~100)

    2024-03-23 20:08:04       36 阅读
  5. 阿里云大数据ACAACP复习题(101~120)

    2024-03-23 20:08:04       46 阅读
  6. 阿里云大数据ACAACP复习题(121~140)

    2024-03-23 20:08:04       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-23 20:08:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-23 20:08:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-23 20:08:04       87 阅读
  4. Python语言-面向对象

    2024-03-23 20:08:04       96 阅读

热门阅读

  1. MySQL 中的事务和存储引擎

    2024-03-23 20:08:04       37 阅读
  2. 基于单片机的机电控制实训平台设计

    2024-03-23 20:08:04       42 阅读
  3. git -- 提交规范

    2024-03-23 20:08:04       40 阅读
  4. ECS Fargate 上部署 SkyWalking UI 并通过 ALB 提供服务

    2024-03-23 20:08:04       35 阅读
  5. 如何从小白,到掌握Python

    2024-03-23 20:08:04       38 阅读
  6. 【MySQL】巧解客户连续递增交易

    2024-03-23 20:08:04       38 阅读
  7. HttpURLConnection的使用

    2024-03-23 20:08:04       34 阅读
  8. 如何把容器直接迁移到另一个环境上

    2024-03-23 20:08:04       34 阅读
  9. linux下使用 tar 来压缩和解压 tar.gz 和 tar.xz 文件

    2024-03-23 20:08:04       36 阅读