给你一个下标从 0 开始的整数数组 nums ,判断是否存在 两个 长度为 2 的子数组且它们的和相等。注意,这两个子数组起始位置的下标必须 不相同 。
如果这样的子数组存在,请返回 true,否则返回 false 。
子数组 是一个数组中一段连续非空的元素组成的序列。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/find-subarrays-with-equal-sum
题目给出的三个例子
这两个子数组起始位置的下标必须 不相同
那我们怎么用代码实现呢??
注意题中的一句话: 子数组 是一个数组中一段连续非空的元素组成的序列。
这两个子数组起始位置的下标必须 不相同 (所以j = i + 1)
重点是连续的,从这里入手
我们利用两个循环
第一组(第一个数和第二个数)相加和 和 后面一组一组比较
然后第二组(第二个数和第三个数)………
画个图
代码
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
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;
}
文章出处登录后可见!
已经登录?立即刷新