找到数据流中的连续整数
给你一个整数数据流,请你实现一个数据结构,检查数据流中最后 k 个整数是否 等于 给定值 value 。
请你实现 DataStream 类:
DataStream(int value, int k) 用两个整数 value 和 k 初始化一个空的整数数据流。
boolean consec(int num) 将 num 添加到整数数据流。如果后 k 个整数都等于 value ,返回 true ,否则返回 false 。如果少于 k 个整数,条件不满足,所以也返回 false 。
- 区分几个概念:参数传递(值传递)中基本数据类型与引用类型。成员变量与局部变量。
/*
* Copyright (c) Huawei Technologies Co., Ltd. 2023-2023. All rights reserved.
*/
package com.huawei.prac;
import java.util.ArrayList;
import java.util.List;
class Solution6th {
public static void main(String[] args) {
// {"DataStream", "consec", "consec", "consec", "consec"};
int[][] num = {{4, 3}, {4}, {4}, {4}, {3}};
DataStream dataStream = new DataStream(num[0][0], num[0][1]);
for (int i = 1; i < num.length; i++) {
System.out.println(dataStream.consec(num[i][0]));
}
}
}
class DataStream {
int value;
int key;
int numVal;
List<Integer> dataList;
/**
* 类 DataStream 的构造方法, datalist 和 numVal 初始化
*
* @param value 给定值
* @param k 后 k 位数字
*/
public DataStream(int value, int k) {
this.value = value;
this.key = k;
dataList = new ArrayList<>();
numVal = 0;
}
/**
* 2526. 找到数据流中的连续整数【简单模拟 + 自定义类】
* 判断数据流中最后 k 个整数是否 等于 给定值 value
*
* @param num 传入流中的整数
* @return 是否满足要求
*/
public boolean consec(int num) {
dataList.add(num);
if (num == value) {
++numVal;
} else {
numVal = 0;
}
if (dataList.size() < this.key) {
return false;
}
return numVal >= key;
}
}
/**
* Your DataStream object will be instantiated and called as such:
* DataStream obj = new DataStream(value, k);
* boolean param_1 = obj.consec(num);
*/