0%

    有一个 $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

阅读全文 »

    1755. 最接近目标值的子序列和


    给你一个整数数组 nums 和一个目标值 goal

    你需要从 nums 中选出一个子序列,使子序列元素总和最接近 goal 。也就是说,如果子序列元素和为 sum ,你需要 最小化绝对差 abs(sum - goal)

    返回 abs(sum - goal) 可能的 最小值

    注意,数组的子序列是通过移除原始数组中的某些元素(可能全部或无)而形成的数组。

    示例 1:

    ```txt

    输入:nums = [5,-7,3,5], goal = 6

    输出:0

    解释:选择整个数组作为选出的子序列,元素和为 6 。

    子序列和与目标值相等,所以绝对差为 0 。

    ```

    示例 2:

    ```txt

    输入:nums = [7,-9,15,-2], goal = -5

    输出:1

    解释:选出子序列 [7,-9,-2] ,元素和为 -4 。

    绝对差为 abs(-4 - (-5)) = abs(1) = 1 ,是可能的最小值。

    ```

    示例 3:

    ```txt

    输入:nums = [1,2,3], goal = -7

    输出:7

    ```

    提示:

    • 1 <= nums.length <= 40

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

    • -10^9 <= goal <= 10^9

阅读全文 »

    956. 最高的广告牌


    你正在安装一个广告牌,并希望它高度最大。这块广告牌将有两个钢制支架,两边各一个。每个钢支架的高度必须相等。

    你有一堆可以焊接在一起的钢筋 rods。举个例子,如果钢筋的长度为 123,则可以将它们焊接在一起形成长度为 6 的支架。

    返回 广告牌的最大可能安装高度 。如果没法安装广告牌,请返回 0 。

    示例 1:

    ```txt

    输入:[1,2,3,6]

    输出:6

    解释:我们有两个不相交的子集 {1,2,3} 和 {6},它们具有相同的和 sum = 6。

    ```

    示例 2:

    ```txt

    输入:[1,2,3,4,5,6]

    输出:10

    解释:我们有两个不相交的子集 {2,3,5} 和 {4,6},它们具有相同的和 sum = 10。

    ```

    示例 3:

    ```txt

    输入:[1,2]

    输出:0

    解释:没法安装广告牌,所以返回 0。

    ```

    提示:

    1. 0 <= rods.length <= 20

    2. 1 <= rods[i] <= 1000

    3. sum(rods[i]) <= 5000

阅读全文 »

    494. 目标和


    给你一个整数数组 nums 和一个整数 target

    向数组中的每个整数前添加 '+''-' ,然后串联起所有整数,可以构造一个 表达式

    • 例如,nums = [2, 1] ,可以在 2 之前添加 '+' ,在 1 之前添加 '-' ,然后串联起来得到表达式 "+2-1"

    返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目。

    示例 1:

    ```txt

    输入:nums = [1,1,1,1,1], target = 3

    输出:5

    解释:一共有 5 种方法让最终目标和为 3 。

    -1 + 1 + 1 + 1 + 1 = 3

    +1 - 1 + 1 + 1 + 1 = 3

    +1 + 1 - 1 + 1 + 1 = 3

    +1 + 1 + 1 - 1 + 1 = 3

    +1 + 1 + 1 + 1 - 1 = 3

    ```

    示例 2:

    ```txt

    输入:nums = [1], target = 1

    输出:1

    ```

    提示:

    • 1 <= nums.length <= 20

    • 0 <= nums[i] <= 1000

    • 0 <= sum(nums[i]) <= 1000

    • -1000 <= target <= 1000

阅读全文 »