小工具知识网

当前位置: 首页 > 行业知识 > 【动态规划】【中位数贪心】【C++算法】1478. 安排邮筒

行业知识

【动态规划】【中位数贪心】【C++算法】1478. 安排邮筒

2026-11-02 21:41:48 来源:互联网转载

# 作者推荐

【���度优先搜索】【树】【图论】2973. 树中每个节点放置的金币数目

本文涉及知识点

动态规划汇总

LeetCode1478. 安排邮筒

给你一个房屋数组houses 和一个整数 k ,其中 houses[i] 是第 i 栋房子在一条街上的位置,现需要在这条街上安排 k 个邮筒。

请你返回每栋房子与离它最近的邮筒之间的距离的 最小 总和。

答案保证在 32 位有符号整数范围以内。

示例 1:

输入:houses = [1,4,8,10,20], k = 3

输出:5

解释:将邮筒分别安放在位置 3, 9 和 20 处。

每个房子到最近邮筒的距离和为 |3-1| + |4-3| + |9-8| + |10-9| + |20-20| = 5 。

示例 2:

输入:houses = [2,3,5,12,18], k = 2

输出:9

解释:将邮筒分别安放在位置 3 和 14 处。

每个房子到最近邮筒距离和为 |2-3| + |3-3| + |5-3| + |12-14| + |18-14| = 9 。

示例 3:

输入:houses = [7,4,6,1], k = 1

输出:8

示例 4:

输入:houses = [3,6,14,10], k = 4

输出:0

提示:

n == houses.length

1 左边及本身的房子数小于右边的房子数,右移动。右边及本身的房子数小于左边的房子数,左移动。​ → \rightarrow → 稳定状态下,必须= i1 \rightarrow abs(i1-i2)i1=i2,i1=i2,i2+1>=i1→abs(i1−i2)public:int minDistance(vectorm_c = houses.size();sort(houses.begin(), houses.end());vector{int iDis = 0;for (int i = center, j = center; (i = 0) && (j

上一篇:宝塔面板SSH连接指南,服务器操作手册

下一篇:Python魔法之旅-魔法方法(05)