ARTS Week 33

Algorithm

本周的算法题为 3151. 特殊数组 I

如果数组的每一对相邻元素都是两个奇偶性不同的数字,则该数组被认为是一个 特殊数组

Aging 有一个整数数组 nums。如果 nums 是一个 特殊数组 ,返回 true,否则返回 false

复制代码
示例 1

输入:nums = [2,1,4]
输出:true
解释:
只有两对相邻元素: (2,1) 和 (1,4),它们都包含了奇偶性不同的数字,因此答案为 true。

实现代码如下:

复制代码
const isArraySpecial = function (nums) {
    for (let i = 0; i < nums.length; i++) {
        if (i !== nums.length - 1 && nums[i] % 2 === nums[i + 1] % 2) {
            return false
        }
    }
    return true
};

解题思路:

一开始想到的方案是:

  1. 如果nums[0] 为偶数时,只要遍历偶数索引,其值如果出现奇数,则返回false
  2. 如果nums[0] 为奇数时,只要遍历偶数索引,其值如果出现偶数,则返回false
  3. 否则,返回true

但是,出现相邻为奇数或偶数时,是不满足条件的,因为两个条件分开判断的,所以,还是把问题想复杂化了,其实处理起来很简单,只需要判断相邻的两个数,只要出现一次奇偶性相同,则为false,否则为true。

但这里,也引申出了一个问题,检查数组边界和和不检查数组边界,哪个效率更高一点?

复制代码
// 检查数组边界
if (i !== nums.length - 1 && nums[i] % 2 === nums[i + 1] % 2) {
   return false
}

// 不检查数组边界
if (nums[i] % 2 === nums[i + 1] % 2) {
   return false
}

一般来说,前者因为有一个比较的操作,所以,会影响到实际代码执行效率,但是,避免了潜在的数组越界错误;后者,没有这个比较操作,但是会有潜在数据越界错误。从健壮性和避免潜在错误的角度考虑,第一个方式是更推荐的写法。

Review

Panama evacuates islanders due to rising sea levels - Breaking News English Lesson

上升的海平面导致巴拿马撤离了其中一个岛屿的居民。位于巴拿马加勒比海岸的小岛加尔迪·苏格杜布的居民正在被重新安置到内陆。然而,一名巴拿马政府官员表示,一些人拒绝撤离他们的祖居。他们将一直留到最后一刻。巴拿马政府表示,加尔迪·苏格杜布是即将发生的事情的一个迹象,因为更多的低洼岛屿正面临被海水吞没的威胁。巴拿马环境部门最近的一项研究估计,该国将失去2.01%的沿海领土。该研究还指出,将有大约38,000人需要搬迁,成本约为12亿美元。

加尔迪·苏格杜布一直是世代居住的古纳族人的家园。这个拥挤的岛屿只有366米长和137米宽,却曾经是将近300个家庭的家园。他们依靠捕鱼和旅游业谋生。24岁的岛民纳丁·莫拉莱斯说:"我们有点难过......但海水一点一点地淹没了这个岛屿。"她补充道:"最近,我发现气候变化产生了重大影响......潮汐的水位比以前更高,而且酷热难当。"莫拉莱斯女士表示,她希望她的社区在新的地点能够繁荣。她的新家将位于距离船只前往加尔迪·苏格杜布的港口两公里处,这是一项价值1200万美元的政府开发项目。

Tip

git 切换分支

  1. git branch 查看当前分支
  2. git branch -r 查看远程仓库的分支列表
  3. git checkout 切换到已存在的分支
  4. git checkout -b 创建并切换到新分支

在切换分支前,确保你的工作目录是干净的(没有未提交的更改)。如果有未提交的更改,可以使用git stash命令将其暂存起来,然后再切换分支。

Share

布利斯定理:用较多的时间为一次工作事前计划,做这项工作所用的总时间就会减少。

  1. 启示1:事前先思考,事后少烦恼。
  2. 启示2:事先做计划,成功概率大。
  3. 启示3:拆分大目标,再各个击破。

凡事预则立,不立则废,好计划是成功的开始。

本文由mdnice多平台发布

相关推荐
香蕉可乐荷包蛋1 小时前
浅入ES5、ES6(ES2015)、ES2023(ES14)版本对比,及使用建议---ES6就够用(个人觉得)
前端·javascript·es6
未来之窗软件服务2 小时前
资源管理器必要性———仙盟创梦IDE
前端·javascript·ide·仙盟创梦ide
西哥写代码3 小时前
基于cornerstone3D的dicom影像浏览器 第十八章 自定义序列自动播放条
前端·javascript·vue
清风细雨_林木木3 小时前
Vue 中生成源码映射文件,配置 map
前端·javascript·vue.js
雪芽蓝域zzs4 小时前
JavaScript splice() 方法
开发语言·javascript·ecmascript
森叶5 小时前
Electron 主进程中使用Worker来创建不同间隔的定时器实现过程
前端·javascript·electron
霸王蟹5 小时前
React 19 中的useRef得到了进一步加强。
前端·javascript·笔记·学习·react.js·ts
霸王蟹5 小时前
React 19版本refs也支持清理函数了。
前端·javascript·笔记·react.js·前端框架·ts
codelxy5 小时前
vue引用cesium,解决“Not allowed to load local resource”报错
javascript·vue.js
程序猿阿伟6 小时前
《社交应用动态表情:RN与Flutter实战解码》
javascript·flutter·react native