0%

    2742. 给墙壁刷油漆


    给你两个长度为 n 下标从 0 开始的整数数组 cost 和 time ,分别表示给 n 堵不同的墙刷油漆需要的开销和时间。你有两名油漆匠:

    • 一位需要 付费 的油漆匠,刷第 i 堵墙需要花费 time[i] 单位的时间,开销为 cost[i] 单位的钱。

    • 一位 免费 的油漆匠,刷 任意 一堵墙的时间为 1 单位,开销为 0 。但是必须在付费油漆匠 工作 时,免费油漆匠才会工作。

    请你返回刷完 n 堵墙最少开销为多少。

    示例 1:

    ```txt

    输入:cost = [1,2,3,2], time = [1,2,3,2]

    输出:3

    解释:下标为 0 和 1 的墙由付费油漆匠来刷,需要 3 单位时间。同时,免费油漆匠刷下标为 2 和 3 的墙,需要 2 单位时间,开销为 0 。总开销为 1 + 2 = 3 。

    ```

    示例 2:

    ```txt

    输入:cost = [2,3,4,2], time = [1,1,1,1]

    输出:4

    解释:下标为 0 和 3 的墙由付费油漆匠来刷,需要 2 单位时间。同时,免费油漆匠刷下标为 1 和 2 的墙,需要 2 单位时间,开销为 0 。总开销为 2 + 2 = 4 。

    ```

    提示:

    • 1 <= cost.length <= 500

    • cost.length == time.length

    • 1 <= cost[i] <= 10^6

    • 1 <= time[i] <= 500

阅读全文 »

    1959. K 次调整数组大小浪费的最小总空间


    你正在设计一个动态数组。给你一个下标从 0 开始的整数数组 nums ,其中 nums[i] 是 i 时刻数组中的元素数目。除此以外,你还有一个整数 k ,表示你可以 调整 数组大小的 最多 次数(每次都可以调整成 任意 大小)。

    t 时刻数组的大小 sizet 必须大于等于 nums[t] ,因为数组需要有足够的空间容纳所有元素。t 时刻 浪费的空间 为 sizet - nums[t] , 浪费空间为满足 0 <= t < nums.length 的每一个时刻 t 浪费的空间 之和 。

    在调整数组大小不超过 k 次的前提下,请你返回 最小总浪费空间 。

    注意:数组最开始时可以为 任意大小 ,且 不计入 调整大小的操作次数。

    示例 1:

    ```txt

    输入:nums = [10,20], k = 0

    输出:10

    解释:size = [20,20].

    我们可以让数组初始大小为 20 。

    总浪费空间为 (20 - 10) + (20 - 20) = 10 。

    ```

    示例 2:

    ```txt

    输入:nums = [10,20,30], k = 1

    输出:10

    解释:size = [20,20,30].

    我们可以让数组初始大小为 20 ,然后时刻 2 调整大小为 30 。

    总浪费空间为 (20 - 10) + (20 - 20) + (30 - 30) = 10 。

    ```

    示例 3:

    ```txt

    输入:nums = [10,20,15,30,20], k = 2

    输出:15

    解释:size = [10,20,20,30,30].

    我们可以让数组初始大小为 10 ,时刻 1 调整大小为 20 ,时刻 3 调整大小为 30 。

    总浪费空间为 (10 - 10) + (20 - 20) + (20 - 15) + (30 - 30) + (30 - 20) = 15 。

    ```

    提示:

    • 1 <= nums.length <= 200

    • 1 <= nums[i] <= 10^6

    • 0 <= k <= nums.length - 1

阅读全文 »

    有一个 $n$ 个点 $m$ 条边的无向图,每一对顶点中最多有一条边。

    设 $v_1,v_2$ 是两个不相交的非空子集,当满足下列条件时,$f(v_1,v_2)$ 的值为真:

    • $v_1$ 中的点之间不存在边。

    • $v_2$ 中的点之间不存在边。

    • 对于 $\forall x\in v_1$,$\forall y\in v_2$,$x$ 和 $y$ 之间有边。

    问是否存在三个点集 $v_1,v_2,v_3$,使得 $f(v_1,v_2)$,$f(v_2,v_3)$ 和 $f(v_1,v_3)$ 的值均为真。

    如果是,输出每一个点所在的点集;否则输出 -1

阅读全文 »

    2035. 将数组分成两个数组并最小化数组和的差


    给你一个长度为 2 * n 的整数数组。你需要将 nums 分成 两个 长度为 n 的数组,分别求出两个数组的和,并 最小化 两个数组和之 差的绝对值 。nums 中每个元素都需要放入两个数组之一。

    请你返回 最小 的数组和之差。

    示例 1:

    example-1

    ```txt

    输入:nums = [3,9,7,3]

    输出:2

    解释:最优分组方案是分成 [3,9] 和 [7,3] 。

    数组和之差的绝对值为 abs((3 + 9) - (7 + 3)) = 2 。

    ```

    示例 2:

    ```txt

    输入:nums = [-36,36]

    输出:72

    解释:最优分组方案是分成 [-36] 和 [36] 。

    数组和之差的绝对值为 abs((-36) - (36)) = 72 。

    ```

    示例 3:

    example-3

    ```txt

    输入:nums = [2,-1,0,4,-2,-9]

    输出:0

    解释:最优分组方案是分成 [2,4,-9] 和 [-1,0,-2] 。

    数组和之差的绝对值为 abs((2 + 4 + -9) - (-1 + 0 + -2)) = 0 。

    ```

    提示:

    • 1 <= n <= 15

    • nums.length == 2 * n

    • -10^7 <= nums[i] <= 10^7

阅读全文 »

    805. 数组的均值分割


    给定你一个整数数组 nums

    我们要将 nums 数组中的每个元素移动到 A 数组 或者 B 数组中,使得 A 数组和 B 数组不为空,并且 average(A) == average(B) 。

    如果可以完成则返回true , 否则返回 false  。

    注意:对于数组 arr ,  average(arr) 是 arr 的所有元素的和除以 arr 长度。

    示例 1:

    ```txt

    输入: nums = [1,2,3,4,5,6,7,8]

    输出: true

    解释: 我们可以将数组分割为 [1,4,5,8] 和 [2,3,6,7], 他们的平均值都是4.5。

    ```

    示例 2:

    ```txt

    输入: nums = [3,1]

    输出: false

    ```

    提示:

    • 1 <= nums.length <= 30

    • 0 <= nums[i] <= 10^4

阅读全文 »