那个网站做h5不要钱,wordpress页面侧边栏没了,一个小程序制作价格,wordpress建站时间给你一个长度为 n 的二维整数数组 groups #xff0c;同时给你一个整数数组 nums 。
你是否可以从 nums 中选出 n 个 不相交 的子数组#xff0c;使得第 i 个子数组与 groups[i] #xff08;下标从 0 开始#xff09;完全相同#xff0c;且如果 i 0 #xff0c;那么…给你一个长度为 n 的二维整数数组 groups 同时给你一个整数数组 nums 。
你是否可以从 nums 中选出 n 个 不相交 的子数组使得第 i 个子数组与 groups[i] 下标从 0 开始完全相同且如果 i 0 那么第 (i-1) 个子数组在 nums 中出现的位置在第 i 个子数组前面。也就是说这些子数组在 nums 中出现的顺序需要与 groups 顺序相同
如果你可以找出这样的 n 个子数组请你返回 true 否则返回 false 。
如果不存在下标为 k 的元素 nums[k] 属于不止一个子数组就称这些子数组是 不相交 的。子数组指的是原数组中连续元素组成的一个序列。
示例 1 输入 groups [[1,-1,-1],[3,-2,0]], nums [1,-1,0,1,-1,-1,3,-2,0] 输出 true 解释 你可以分别在 nums 中选出第 0 个子数组 [1,-1,0,1,-1,-1,3,-2,0] 和第 1 个子数组 [1,-1,0,1,-1,-1,3,****-2,0] 。 这两个子数组是不相交的因为它们没有任何共同的元素。 示例 2 输入 groups [[10,-2],[1,2,3,4]], nums [1,2,3,4,10,-2] 输出 false 解释 选择子数组 [1,2,3,4,10,-2] 和 [1,2,3,4,10,-2] 是不正确的因为它们出现的顺序与 groups 中顺序不同。 [10,-2] 必须出现在 [1,2,3,4] 之前。 示例 3 输入 groups [[1,2,3],[3,4]], nums [7,7,1,2,3,4,7,7] 输出 false 解释 选择子数组 [7,7,1,2,3,4,7,7] 和 [7,7,1,2,3,4,7,7] 是不正确的因为它们不是不相交子数组。 它们有一个共同的元素 nums[4] 下标从 0 开始。 提示
groups.length n1 n 10^31 groups[i].length, sum(groups[i].length) 10^31 nums.length 10^3-10^7 groups[i][j], nums[k] 10^7
思路
本题可以使用双指针遍历求解。我们用i作为下标遍历nums用j作为下标遍历groups设groups[j]的长度为n我们需要比较以nums[i]到nums[i n - 1]是否和groups[j]中每个元素都相等
如果相等i i n j j 1如果不相等i i 1
进行同样的比较直到nums遍历完或groups遍历完如果groups遍历完返回true否则返回false代码如下。
解题
/*** param {number[][]} groups* param {number[]} nums* return {boolean}*/
var canChoose function (groups, nums) {const m groups.length;const n nums.length;let i 0;let j 0;while (i n j m) {let k 0;while (k groups[j].length) {if (groups[j][k] ! nums[i k]) {break;} else {k;}}if (k groups[j].length) {i groups[j].length;j;} else {i;}}return j m;
}; 最后
最近还整理一份JavaScript与ES的笔记一共25个重要的知识点对每个知识点都进行了讲解和分析。能帮你快速掌握JavaScript与ES的相关知识提升工作效率。 有需要的小伙伴可以点击下方卡片领取无偿分享