生日蛋糕蜡烛黑客银行与oug Math.max Javascript



你负责孩子生日的蛋糕。你已经决定,蛋糕将有一支蜡烛,为他们的总年龄的每一年。他们只能吹灭最高的蜡烛。数数有多少支蜡烛是最高的。

示例

蜡烛=[4,4,1,3]蜡烛的最大高度为4个单位高。有2个,所以返回2。

所以基本上,我这样做的方式是从数组的每个位置开始,将每个位置与两个循环进行比较,第二个循环将计算重复的数字,有些人使用Math.max导入的函数,但我在开始寻找答案之前并不知道,我认为这种方式应该有效,但无法找到答案,有什么想法吗?

function birthdayCakeCandles(candles) {
let height=1; 
let b=0;
for (let i=0; i<candles.length; i++)
{
for (b=0; b<candles.length; b++)
{   
if(b!=i && candles[b]===candles[i])
{height++;}

b++;          
}          
}
return height; 

这应该很简单,在数组中迭代找到max,如果max再次存在,则增加count,如果大于max的其他元素将其设置为max并重置count to 1

function findTallestCandleCount(candles){

let max = 0, count = 0

for (let candle of candles) {
if (candle > max) {
max = candle
count = 1
} else if (candle === max){
count++
}
}

return count;
}

我用这种方法解决了

function birthdayCakeCandles(candles) {
let height=0; 
let max=Math.max(...candles);

for (let i=0; i<candles.length; i++)
{
if (candles[i]==max)
{height++;}

}    
return height;
}

我用这个解决了这个挑战

function birthdayCakeCandles(candles) {
const maxVal = Math.max(...candles)
//use an array to save all the biggest/max number
const newArr = []

for(let val of candles){
if(val === maxVal) {
newArr.push(val)
}
}

return newArr.length
}

但若你们不想使用Math.max((,我们必须先找到最大值。我们可以使用of循环来找到最大/最大值,如下所示:

function birthdayCakeCandles(candles) {
let maxVal = 0
//use loop to find the biggest number
for(let val of candles) {
if(val > maxVal) {
maxVal = val
}
if(val < maxVal) {
maxVal = maxVal
}
if(val === maxVal) {
maxVal = maxVal
}
}

//use an array to save all the biggest/max number
const newArr = []

for(let val of candles){
if(val === maxVal) {
newArr.push(val)
}
}

return newArr.length
}

您可以在下面尝试。我使用的逻辑是,首先用cancers[0]和cancers[]数组中的最高数将值存储在newArr[]中。这是因为第一个for循环中使用的逻辑将max_val=cancers[0]与cancers[i]进行比较。因此,当将max_val存储到newArr[]时,它会获取cancers[0]及其比较值(等于或大于cancers[2](以及cancers[]数组中的最大数字。

现在,第二个for((循环基于max_val==newArr[j]过滤值。第一个for((循环中的max_val已经加载了最大值,因此在比较之后,只有最大的数字才会被过滤并存储到resultArr[]中。然后返回具有length属性的函数。

var max_val = candles[0];
var newArr = [];
var resultArr = [];
var resultMax;
for(var i = 0; i < candles.length; i++)
{
if(max_val <= candles[i])
{
max_val = candles[i];
newArr.push(candles[i]);  
}
}
for(var j = 0; j < newArr.length; j++)
{
if(max_val == newArr[j])
{
resultArr.push(newArr[j]);
}
}
var num = resultArr.length;
return num;

它可以很容易地解决,如下所示:

  1. 保持minValue为最小值
  2. 将该值与数组元素进行比较
  3. 如果minValue大于数组元素,则继续比较
  4. 如果minValue小于数组元素,则用minValue交换元素值,并将结果值增加1
  5. 若minValue等于数组元素,则只递增结果
  6. 返回循环外的结果

公共出生日CakeCandles(蜡烛({

int minValue = Integer.MIN_VALUE;
int result = 0;
for (Integer i : candles) {
if (minValue > i) {
continue;
} else if (minValue < i) {
result = 1;
minValue = i;
} else {
result++;
}
}
return result;

}

最新更新