LEETCODE 1522. Diameter of N-Ary Tree 解题思路分析

题目大意:

Given a root of an N-ary tree, you need to compute the length of the diameter of the tree.

The diameter of an N-ary tree is the length of the longest path between any two nodes in the tree. This path may or may not pass through the root.

(Nary-Tree input serialization is represented in their level order traversal, each group of children is separated by the null value.)

继续阅读
发表在 leetcode | 标签为 , , , | 留下评论

LEETCODE 1525. Number of Good Ways to Split a String 解题思路分析

题目大意:

字符串的好分割数目

给你一个字符串 s ,一个分割被称为 「好分割」 当它满足:将 s 分割成 2 个字符串 p 和 q ,它们连接起来等于 s 且 p 和 q 中不同字符的数目相同。

请你返回 s 中好分割的数目。

继续阅读
发表在 leetcode | 标签为 , , , | 留下评论

LEETCODE 1524. Number of Sub-arrays With Odd Sum 解题思路分析

题目大意:

和为奇数的子数组数目

给你一个整数数组 arr 。请你返回和为 奇数 的子数组数目。

由于答案可能会很大,请你将结果对 10^9 + 7 取余后返回。

继续阅读
发表在 leetcode | 标签为 , , , | 留下评论

LEETCODE 1534. Count Good Triplets 解题思路分析

题目大意:

统计好三元组

给你一个整数数组 arr ,以及 a、b 、c 三个整数。请你统计其中好三元组的数量。

如果三元组 (arr[i], arr[j], arr[k]) 满足下列全部条件,则认为它是一个 好三元组 。

  • 0 <= i < j < k < arr.length
  • |arr[i] – arr[j]| <= a
  • |arr[j] – arr[k]| <= b
  • |arr[i] – arr[k]| <= c

其中 |x| 表示 x 的绝对值。

返回 好三元组的数量 。

继续阅读
发表在 leetcode | 标签为 , , , | 留下评论

LEETCODE 1535. Find the Winner of an Array Game 解题思路分析

题目大意:

找出数组游戏的赢家

给你一个由 不同 整数组成的整数数组 arr 和一个整数 k 。

每回合游戏都在数组的前两个元素(即 arr[0] 和 arr[1] )之间进行。比较 arr[0] 与 arr[1] 的大小,较大的整数将会取得这一回合的胜利并保留在位置 0 ,较小的整数移至数组的末尾。当一个整数赢得 k 个连续回合时,游戏结束,该整数就是比赛的 赢家 。

返回赢得比赛的整数。

题目数据 保证 游戏存在赢家。

继续阅读
发表在 leetcode | 标签为 , , | 留下评论

LEETCODE 1536. Minimum Swaps to Arrange a Binary Grid 解题思路分析

题目大意:

排布二进制网格的最少交换次数

给你一个 n x n 的二进制网格 grid,每一次操作中,你可以选择网格的 相邻两行 进行交换。

一个符合要求的网格需要满足主对角线以上的格子全部都是 0 。

请你返回使网格满足要求的最少操作次数,如果无法使网格符合要求,请你返回 -1 。

主对角线指的是从 (1, 1) 到 (n, n) 的这些格子。

继续阅读
发表在 leetcode | 标签为 , , | 留下评论

LEETCODE 1537. Get the Maximum Score 解题思路分析

题目大意:

最大得分

你有两个 有序 且数组内元素互不相同的数组 nums1 和 nums2 。

一条 合法路径 定义如下:

选择数组 nums1 或者 nums2 开始遍历(从下标 0 处开始)。
从左到右遍历当前数组。
如果你遇到了 nums1 和 nums2 中都存在的值,那么你可以切换路径到另一个数组对应数字处继续遍历(但在合法路径中重复数字只会被统计一次)。

得分定义为合法路径中不同数字的和。

请你返回所有可能合法路径中的最大得分。

由于答案可能很大,请你将它对 10^9 + 7 取余后返回。

继续阅读
发表在 leetcode | 标签为 , , , | 留下评论

LEETCODE 1533. Find the Index of the Large Integer 解题思路分析

题目大意:

找出大数的下标

给你一个整数数组arr,其中只有一个数字大于其他所有数字,另外的数字都相同。你不能直接访问该数组,只能使用ArrayReader 类的API,它具有以下方法:

  1. int compareSub(int l, int r, int x, int y): 其中0 <= l, r, x, y < ArrayReader.length()l <= r 并且 x <= y. 这个函数用来比较子区间 arr[l..r]内数字和 与子区间 arr[x..y]内数字和的大小关系,返回结果为:
    • 1 当arr[l]+arr[l+1]+...+arr[r] > arr[x]+arr[x+1]+...+arr[y]时.
    • 0 当arr[l]+arr[l+1]+...+arr[r] == arr[x]+arr[x+1]+...+arr[y]时.
    • -1 当if arr[l]+arr[l+1]+...+arr[r] < arr[x]+arr[x+1]+...+arr[y]时.
  2. int length(): 返回数组长度

你最多只能调用compareSub方法20次,另外上述两个方法的时间复杂度均为O(1)。

请找出数组中最大数的下标。

继续阅读
发表在 leetcode | 标签为 , , | 留下评论

LEETCODE 1521. Find a Value of a Mysterious Function Closest to Target 解题思路分析

题目大意:

找到最接近目标值的函数值

Winston 构造了一个如上所示的函数 func 。他有一个整数数组 arr 和一个整数 target ,他想找到让 |func(arr, l, r) – target| 最小的 l 和 r 。

请你返回 |func(arr, l, r) – target| 的最小值。

请注意, func 的输入参数 l 和 r 需要满足 0 <= l, r < arr.length 。

继续阅读
发表在 leetcode | 留下评论

LEETCODE 1526. Minimum Number of Increments on Subarrays to Form a Target Array 解题思路分析

题目大意:

形成目标数组的子数组最少增加次数

给你一个整数数组 target 和一个数组 initial ,initial 数组与 target  数组有同样的维度,且一开始全部为 0 。

请你返回从 initial 得到  target 的最少操作次数,每次操作需遵循以下规则:

  • 在 initial 中选择 任意 子数组,并将子数组中每个元素增加 1 。

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

继续阅读
发表在 leetcode | 标签为 , , , , | 留下评论