【发布时间】:2017-04-18 02:41:42
【问题描述】:
问题是“灯泡是通过电线连接的。每个灯泡都有一个与之关联的开关,但是由于接线错误,开关也会改变当前灯泡右侧所有灯泡的状态。给定一个初始所有灯泡的状态,找出打开所有灯泡所需按下的最少开关数。您可以多次按下同一个开关。
我在网上找到了这个答案,但我不能 100% 确定三元运算符在循环中做了什么。 var initial 和 var current 在做什么?
function bulbs(arr){
var switched = 0;
for(var i = 0; i < arr.length; i++){
var initial = arr[i] === 1,
current = (switched % 2 === 1)? !initial:initial;
if(current === false){
switched++;
}
}
return switched;
}
【问题讨论】:
-
initial等于arr[i]的值等于 1 的布尔返回值。current为真或假(因为initial是布尔值)。如果switched的当前值除以 2 得到的余数为 1,它将与initial相同,否则为逻辑非运算符,或者!将布尔值更改为相反的值。 -
但是为什么要使用模数并寻找余数呢?
-
switched %2 如何帮助实际更改数据?我正在寻找它在循环中的使用方式,而不是模数的通用定义
-
这显然是一些课程/学校的问题。我认为使用这个网站是作弊。如果您自己进行研究,您将了解更多信息!
标签: javascript algorithm