ARTS Week 18

Algorithm

本周的算法题为 485. 最大连续 1 的个数

给定一个二进制数组 nums , 计算其中最大连续 1 的个数。

示例 1

输入:nums = [1,1,0,1,1,1]
输出:3
解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.

实现代码如下:

const findMaxConsecutiveOnes = function (nums{
    // 数组转换为字符串
    const str = nums.join('')
    // 如果不存在0,则直接返回数组长度即可
    if (str.indexOf('0') === -1) {
        return nums.length
    }
    // 如果不存在1,则直接返回0
    if (str.indexOf('1') === -1) {
        return 0
    }
    // 通过0切割为各字符串数组
    const arr = nums.join('').split('0')
    // 通过比较字符长度,从长到短排序,然后获取索引为0,即可获取最大连续1的个数的值
    const maxValue = arr.sort(function (a, b{
        return b.length - a.length;
    })[0];
    return maxValue.length
};

解题思路:

首先讲nums数组转换为字符串,然后通过0切割成不同长度全为1的字符串数组,本来一开始打算使用Math.max(...arr)实现的,但是因为Math.max()在执行时,会转换为数字进行比较,而且是number类型,在转换超长字符串111时,丢失精度,最大只能返回8,无法满足解题需求。所以,调整为使用sort来实现,当b.length - a.length时,按照字符串长度从长到短进行排序;当a.length - b.length时,按照字符串长度从短到长进行排序,然后通过索引0获取最大值maxValue,至此,maxValue.length即为所求值。

Review

Cold weather exercise burns more calories

每个人都知道锻炼对保持健康是必不可少的。它可以降低患心脏病的风险,并帮助我们保持健康的体重。它还能减轻压力,让我们更快乐。医生说,在寒冷的天气里锻炼对我们更有好处。在寒冷或寒冷的天气里慢跑甚至游泳对我们的身心健康有额外的好处。原因是寒冷给我们的心脏一个更有活力的锻炼。纽约特殊外科医院的安吉拉·佩德约诺维奇医生解释了原因。她说:“在寒冷的天气里,你的心脏必须更加努力地将血液输送到全身。随着时间的推移,这有助于提高你的耐力。”

佩德约诺维奇博士说,寒冷天气的锻炼可以帮助身体以更快的速度燃烧卡路里。她说:“因为你的身体需要更努力地工作来保持核心温度,所以在寒冷的环境中锻炼实际上会增加卡路里的燃烧。”在低温下进行体育锻炼可以促进我们的新陈代谢,从而帮助我们减肥。在寒冷中,我们的新陈代谢减慢,所以我们可以保存脂肪和保暖。另一个好处是,在自然光下有助于减轻我们的压力。这对于患有季节性情感障碍(S.A.D.)的人来说尤其如此。这是一种由冬季白昼变短、变暗引起的抑郁症。这在远离赤道的人身上更为常见。

注:所以为什么说减肥最佳运动方式是游泳,一方面是上面的原因,另一方面是因为不伤膝盖,但是游完泳很容易饿,这点就很需要克制了,很多人就死在这点上哈哈哈。但是,我游了一两个月之后,发现游泳不一定就是最好的,因为水的阻力,相比慢跑,还是很难持续游起来的,没有强度心率没有达标,燃脂效率很低,效果就不够明显了。有一说一,蝶泳、自由泳这些真是难学,还是慢慢来吧。叔本华也说过保持身体健康的方式,里面就有“每日需运动两小时”和“经常洗冷水浴”。好长一段时间,因为嫌太麻烦了,冬天也是洗冷水澡的,但前提是水量要大,三下五除二就洗完了,不然真受不了。不过这些年都懈怠了,有时也觉得没必要刻意过得苦哈哈的,差不多就行了。不过,不要总是让自己身体和心态处于太安逸的环境,总归是对的。

Tip

为什么Math.max(...[ '', '','' ])的值为0?

这行代码使用扩展运算符将数组 ["", "", "", ""] 展开成参数列表,相当于 Math.max("", "", "", "")。由于 Math.max() 方法会将所有参数转换为数字再比较大小,空字符串会被转换为数字 0,因此最终比较的参数为 Math.max(0, 0, 0, 0)

在 JavaScript 中,空字符串会被转换为数字 0 是因为在进行字符串转换为数字的过程中,如果字符串包含非数字字符(除了符号、小数点等特殊字符),则会被转换为数字 0。当 JavaScript 引擎在转换字符串为数字时,会按照以下规则进行处理:

  1. 如果字符串中包含非数字字符(除了符号、小数点等特殊字符),则转换结果为 NaN(Not-a-Number)。
  2. 如果字符串为空字符串或只包含空格字符,则转换结果为数字 0。
  3. 如果字符串表示整数或浮点数形式的数字(例如 "123"、"3.14"),则会按照对应的数字进行转换。

因此,空字符串会被转换为数字 0 是因为它不包含任何数字字符,符合规则2的转换规则。

Share

代码人生攻略:程序员们如何为自己编织一份明朗未来?— InfoQ精选文章

主要分享了对大模型时代的变革、生成式AI对各技术领域的影响、大模型时代。程序员的“生存法则”变了吗?、巨头碾压,大模型小创企业有核心壁垒吗?从事开源项目的收益问题、互联网公司是否还需要CTO等问题的讨论,值得一看。

本文由 mdnice 多平台发布

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AR7_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值