在 C++ 中查詢是否存在和為 0 的子陣列
在這個問題中,我們給定一個大小為 n 的陣列 arr[],其中包含整數值。我們的任務是查詢是否存在和為 0 的子陣列。
我們需要檢查給定陣列是否包含一個子陣列,其中所有元素的和等於 0。
讓我們舉個例子來理解這個問題,
輸入:arr[] = {3, 1, -2, 1, 4, 5}
輸出:是
解釋:
子陣列 {1, -2, 1} 的所有值的和等於 0。
解決方案方法:
透過考慮所有子陣列並檢查所有元素的和是否等於 0 來解決問題的簡單解決方案。
解決問題的另一種方法是使用雜湊。我們需要遍歷陣列,然後找到直到當前索引的和並將其儲存在雜湊表中。
然後在雜湊表中檢查,如果和值與之前遇到的相同,則找到一個和為 0 的子陣列。
如果找到子陣列,則返回True
否則返回False
程式說明我們問題的運作方式,
示例
#include <bits/stdc++.h>
using namespace std;
bool isSubArraySumZero(int arr[], int n) {
unordered_set<int> sumHash;
int currSum = 0;
for (int i = 0 ; i < n ; i++) {
currSum += arr[i];
if (currSum == 0 || sumHash.find(currSum) != sumHash.end())
return true;
sumHash.insert(currSum);
}
return false;
}
int main() {
int arr[] = { 3, 1, -2, 1, 4, 5 };
int n = sizeof(arr)/sizeof(arr[0]);
if (isSubArraySumZero(arr, n))
cout<<"SubArray with sum equal to 0 exists in the array";
else
cout<<"No subarray exists";
return 0;
}輸出
SubArray with sum equal to 0 exists in the array
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP