华为OD机试 - 多段线数据压缩(Java & JS & Python & C & C++)
    		       		warning:
    		            这篇文章距离上次修改已过438天,其中的内容可能已经有所变动。
    		        
        		                
                题目描述:
给定一个由无符号整数组成的数组,数组中的值构成一个数字流。写一个函数,如果数字流中存在连续的三个数值,它们的和为0,则返回true。
解决方案:
这个问题可以通过遍历数组并检查每三个连续的数值来解决。如果它们的和为0,则返回true。否则,继续遍历直到找到一组符合条件的数值或遍历结束。
以下是各种语言的解决方案:
Java:
public class Main {
    public static void main(String[] args) {
        int[] data = {1, -2, 3, -4, 5};
        System.out.println(containsZeroSumTriplet(data));
    }
 
    public static boolean containsZeroSumTriplet(int[] data) {
        for (int i = 0; i < data.length - 2; i++) {
            for (int j = i + 1; j < data.length - 1; j++) {
                if ((data[i] + data[j] + data[j + 1]) == 0) {
                    return true;
                }
            }
        }
        return false;
    }
}JavaScript:
function containsZeroSumTriplet(data) {
    for (let i = 0; i < data.length - 2; i++) {
        for (let j = i + 1; j < data.length - 1; j++) {
            if ((data[i] + data[j] + data[j + 1]) === 0) {
                return true;
            }
        }
    }
    return false;
}
 
let data = [1, -2, 3, -4, 5];
console.log(containsZeroSumTriplet(data));Python:
def contains_zero_sum_triplet(data):
    for i in range(len(data) - 2):
        for j in range(i + 1, len(data) - 1):
            if data[i] + data[j] + data[j + 1] == 0:
                return True
    return False
 
data = [1, -2, 3, -4, 5]
print(contains_zero_sum_triplet(data))C:
#include <stdio.h>
 
int containsZeroSumTriplet(int data[], int length) {
    for (int i = 0; i < length - 2; i++) {
        for (int j = i + 1; j < length - 1; j++) {
            if (data[i] + data[j] + data[j + 1] == 0) {
                return 1;
            }
        }
    }
    return 0;
}
 
int main() {
    int data[] = {1, -2, 3, -4, 5};
    printf("%d\n", containsZeroSumTriplet(data, 5));
    return 0;
}C++:
#include <iostream>
#include <vector>
 
bool containsZeroSumTriplet(const std::vector<int>& data) {
    for (size_t i = 0; i < data.size() - 2; i++) {
        for (size_t j = i + 1; j < data.size() - 1; j++) {
            if ((data[i] + data[j] + data[j + 1]) == 0) {
                return
评论已关闭