我有一个数组b [2,1,1,1,2,0]。目的是找到阵列的模式。但是,在执行此操作之前,我必须创建一个中间数组来存储每个数字的计数。为此,我需要使用输入数组中的元素值作为中间数组的索引号。 我的if语句的第一部分有效。我的else语句中的代码有问题,该语句用于计算所有非0的数字。如果我打印(newArr)它应该打印的数组是[1,3,2],但是当前正在打印的是[1,4,5]。
import { print } from "";
export let main = async () => {
let input = [2, 1, 1, 1, 2, 0];
print(input);
export let mode = (b: number[]): number => {
let newArr: number[] = [];
let current = 0;
let count = 0;
}
for (let i = 0; i < b.length; i++) {
if (b[i] === 0) {
newArr[b[i]] = count + 1;
count = newArr[b[i]];
} else {
newArr[a[i]] = current + 1;
current = newArr[a[i]];
}
}
print(newArr)
如果数组为b [2,1,1,2,1,0],则应返回1作为模式,如果我们打印了创建的数组,则应打印newArr [1,3,2],因为元素0出现1次,元素1出现3次,元素2出现2次。想法是从0作为输入数组中的元素,到0作为中间数组中的索引。所以最后我们看到在索引1处最大的出现次数(或中间数组中的最大元素)为3,所以模式为1。