gpt4 book ai didi

javascript - 在 Javascript 中获取统计模式而不使用关联数组

转载 作者:行者123 更新时间:2023-11-28 01:58:34 27 4
gpt4 key购买 nike

尽管我是一名艺术家,但我发现需要从数字数组中返回统计模式。我希望该函数避免使用关联数组(因为我需要在 JavaScript 和 Maxscript 中运行版本,并且最好使用相同的代码库) Maxscript 不使用关联数组;遗憾的是this是一个相当不错的解决方案。

下面的代码在第一个示例中有效,但在第二个示例中无效。据猜测,我会说数组需要预先排序,但这不起作用(并且我已从代码中省略了它)谁能指出我哪里出错了?谢谢。

var textArr = new Array();

arrOne = [0,1,0,2,3,10,10]
arrTwo = [1,2,3,1,1,1]

mode_without_associative_arrays(arrOne) // works fine
mode_without_associative_arrays(arrTwo) // doesn't work

function mode_without_associative_arrays(arr)
{
if(arr.length == 0)
return null;

var collectArr = []; // array
var countArr = [] // array to hold the count of each element in collectArr
collectArr[0] = arr[0]
countArr[0] = 1
var mode = arr[0]
maxCount = 1;

for(var i = 0; i < arr.length; i++)
{
var ele = arr[i];

for(var j = 0; j < collectArr.length; j++)
{
var addMe = false;
if (collectArr[j] != ele) addMe = true
}

if (addMe == true)
{
collectArr.push(ele)
countArr.push(1)
}
else
{
// count it up
countArr[j]+=1
if (countArr[j] > maxCount)
{
maxCount = countArr[j]
mode = ele
}
}
}

alert("Mode is " + mode + " which appears " + maxCount + " times!")
return mode;
}

最佳答案

如果没有关联数组,我认为最佳算法是:

  1. 对数组进行排序 - O(n log n)
  2. 线性扫描数组,计算连续出现的次数 - O(n)

对于步骤 2,将当前元素与前一个元素进行比较。如果相同,则增加计数器。如果计数器超过当前最大值,请记住当前元素的值(即当前模式)。如果元素不同,请将计数器重置回 1。

关于javascript - 在 Javascript 中获取统计模式而不使用关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18742238/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com