2395. 和相等的子数组(详解+代码)

给你一个下标从 0 开始的整数数组 nums ,判断是否存在 两个 长度为 2 的子数组且它们的和相等。注意,这两个子数组起始位置的下标必须 不相同 。

如果这样的子数组存在,请返回 true,否则返回 false 。

子数组 是一个数组中一段连续非空的元素组成的序列。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/find-subarrays-with-equal-sum

题目给出的三个例子 

 

2395. 和相等的子数组(详解+代码)_第1张图片 

这两个子数组起始位置的下标必须 不相同 

2395. 和相等的子数组(详解+代码)_第2张图片 那我们怎么用代码实现呢??

 注意题中的一句话: 子数组 是一个数组中一段连续非空的元素组成的序列。

                                   这两个子数组起始位置的下标必须 不相同  (所以j = i + 1)

重点是连续的,从这里入手

2395. 和相等的子数组(详解+代码)_第3张图片

 我们利用两个循环

第一组(第一个数和第二个数)相加和 和 后面一组一组比较

然后第二组(第二个数和第三个数).........

画个图

2395. 和相等的子数组(详解+代码)_第4张图片 

 代码

#define _CRT_SECURE_NO_WARNINGS 1
#include
char findSubarrays(int nums[], int num)
{
	int i = 0;
	for (i = 0; i < num; i++)
	{
		int j = 0;
		for (j = i + 1; j < num - 1; j++)
		{
			if ((nums[i] + nums[i + 1]) == (nums[j] + nums[j + 1]))
			{
				return true;
			}
		}
	}
	return false;
}

你可能感兴趣的:(力扣刷题---剑指,Offer,(c语言解题),算法,数据结构,c++)