Algorithm
本周的算法题为 1822. 数组元素积的符号
已知函数 signFunc(x)
将会根据 x
的正负返回特定值:
-
如果 x
是正数,返回1
。 -
如果 x
是负数,返回-1
。 -
如果 x
是等于0
,返回0
。
给你一个整数数组 nums
。令 product
为数组 nums
中所有元素值的乘积。
返回 signFunc(product)
。
示例 1:
输入:nums = [-1,-2,-3,-4,3,2,1]
输出:1
解释:数组中所有值的乘积是 144 ,且 signFunc(144) = 1
实现代码如下:
let arraySign = function (nums) {
let product = 1
nums.forEach(n => {
if (n === 0) {
product = 0
return
}
product = product * n
});
return signFunc(product)
function signFunc(p) {
if (p > 0) {
return 1
} else if (p < 0) {
return -1
} else {
return 0
}
}
}
解题思路:
题目很简单。
Review
Nature can reduce anxiety and boost mental health - Breaking News English Lesson
我们都知道,置身于大自然中对我们有好处。新的研究表明,在自然界中仅 10 分钟就有助于我们的心理健康。该研究还表示,在自然环境中与他人共度时光有助于建立人际关系。即使在城市公园和园艺中也可以有所作为。香港城市大学的一项研究发现,大自然增加了我们将他人视为“完全的人”的方式。研究人员表示,这使我们更多地帮助和合作他人。我们变得更善于交际。这让我们对自己感觉更好。我们感觉更积极,因此我们的心理健康得到了改善。帮助他人也可以减轻我们的压力和焦虑。
心理健康是一个在世界范围内日益增长的问题。越来越多的人患有焦虑、抑郁和其他心理障碍。美国全国精神疾病联盟报告称,五分之一的美国人有心理健康问题。该研究包含关于大自然如何帮助解决这些问题的好建议。它说,在树上或田野里度过的时间与更好的睡眠和注意力的提高有关。日本千叶大学的一项研究发现,即使是鲜花也对心理健康有积极影响。研究人员发现,办公桌上放着一瓶玫瑰的员工在短短四分钟后就变得更加平静,压力也减轻了。
Tip
在维护部门内部的API库时,出现执行命令报错,如下所示:
node:internal/errors:477
ErrorCaptureStackTrace(err);
^
Error: Command failed with ENOENT: npm run clean
spawn npm run clean ENOENT
at Process.ChildProcess._handle.onexit (node:internal/child_process:283:19)
at onErrorNT (node:internal/child_process:478:16)
at processTicksAndRejections (node:internal/process/task_queues:83:21) {
errno: -2,
code: 'ENOENT',
syscall: 'spawn npm run clean',
path: 'npm run clean',
spawnargs: [],
originalMessage: 'spawn npm run clean ENOENT',
shortMessage: 'Command failed with ENOENT: npm run clean\nspawn npm run clean ENOENT',
command: 'npm run clean',
exitCode: undefined,
signal: undefined,
signalDescription: undefined,
stdout: '',
stderr: '',
failed: true,
timedOut: false,
isCanceled: false,
killed: false
}
从报错信息可知,代码在执行到npm run clean
命令时报错了,提示找不到这个命令,但是我复制命令在终端运行是成功的,在windows10系统是没问题的,但我在mac系统上运行就报错了,执行代码如下所示:
await execa('npm run clean')
初步猜测,可能execa用法在mac环境中不生效。将其注释,没有提示报错,所以,接着就要研究如何在mac环境中使用execa了。只需将
execa('npm run clean')
改写为
execa('npm', ['run', 'clean'], { shell: true })
即可,这时,我们就会想知道这两种用法有什么区别呢?
execa
是一个用于执行shell
命令的Node.js
模块,它可以将命令作为参数传递给它,并返回一个Promise
,以便在命令执行完成之后处理。根据报错提示没有找到npm
命令,很有可能是execa模块无法正确识别到环境变量。
所以将npm run clean
拆分为npm
和run clean
两个参数,并将 shell 选项设置为true
,以便在子进程中运行命令的时候使用默认的shell
,这样可以正确找到npm
命令并且识别环境变量,找到npm
命令。
Share
“上兵伐谋,其次伐交,其次伐兵,其下攻城。”
本文由 mdnice 多平台发布