Дан массив целых чисел nums и целое число k, вернуть общее количество подмассивов, сумма которых равна k.
Подмассив - это непрерывная непустая последовательность элементов внутри массива.
Пример:
Input: nums = [1,1,1], k = 2
Output: 2
C# решение
сопоставлено/оригиналpublic class Solution {
public int SubarraySum(int[] nums, int k) {
int count = 0;
for (int start = 0; start < nums.Length; start++) {
for (int end = start + 1; end <= nums.Length; end++) {
int sum = 0;
for (int i = start; i < end; i++) {
sum += nums[i];
}
if (sum == k) {
count++;
}
}
}
return count;
}
}
C++ решение
auto-draft, проверить перед отправкой#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
public int SubarraySum(vector<int>& nums, int k) {
int count = 0;
for (int start = 0; start < nums.size(); start++) {
for (int end = start + 1; end <= nums.size(); end++) {
int sum = 0;
for (int i = start; i < end; i++) {
sum += nums[i];
}
if (sum == k) {
count++;
}
}
}
return count;
}
}
Java решение
сопоставлено/оригиналpublic class Solution {
public int subarraySum(int[] nums, int k) {
int count = 0;
for (int start = 0; start < nums.length; start++) {
for (int end = start + 1; end <= nums.length; end++) {
int sum = 0;
for (int i = start; i < end; i++) {
sum += nums[i];
}
if (sum == k) {
count++;
}
}
}
return count;
}
}
JavaScript решение
сопоставлено/оригиналclass Solution {
subarraySum(nums, k) {
let count = 0;
for (let start = 0; start < nums.length; start++) {
for (let end = start + 1; end <= nums.length; end++) {
let sum = 0;
for (let i = start; i < end; i++) {
sum += nums[i];
}
if (sum == k) {
count++;
}
}
}
return count;
}
}
Python решение
сопоставлено/оригиналclass Solution:
def subarraySum(self, nums: List[int], k: int) -> int:
count = 0
for start in range(len(nums)):
for end in range(start + 1, len(nums) + 1):
sum_ = sum(nums[start:end])
if sum_ == k:
count += 1
return count
Go решение
сопоставлено/оригиналfunc subarraySum(nums []int, k int) int {
count := 0
for start := 0; start < len(nums); start++ {
for end := start + 1; end <= len(nums); end++ {
sum := 0
for i := start; i < end; i++ {
sum += nums[i]
}
if sum == k {
count++
}
}
}
return count
}
Algorithm
Самый простой метод - рассмотреть каждый возможный подмассив данного массива nums.
Найти сумму элементов каждого из этих подмассивов и проверить равенство полученной суммы с заданным k.
Всякий раз, когда сумма равна k, увеличить счетчик, используемый для хранения необходимого результата.
😎
Вакансии для этой задачи
Показаны активные вакансии с пересечением по тегам задачи.
Активных вакансий пока нет.