Algorithm

本周的算法题为 1014. 最佳观光组合

给你一个正整数数组 values,其中 values[i] 表示第 i 个观光景点的评分,并且两个景点 ij 之间的 距离j - i

一对景点(i < j)组成的观光组合的得分为 values[i] + values[j] + i - j ,也就是景点的评分之和 减去 它们两者之间的距离。

返回一对观光景点能取得的最高分。

示例 1

输入values = [8,1,5,2,6]
输出11
解释i = 0, j = 2, values[i] + values[j] + i - j = 8 + 5 + 0 - 2 = 11

实现代码如下:

const maxScoreSightseeingPair = function (values) {
    let maxValue = 0
    let maxPrev = values[0] // 记录前面位置能够得到的最大得分

    for (let i = 1; i < values.length; i++) {
        maxValue = Math.max(maxValue, maxPrev + values[i] - i) // 计算当前位置的得分
        maxPrev = Math.max(maxPrev, values[i] + i) // 更新前面位置能够得到的最大得分
    }
    return maxValue
}

解题思路:

一开始我以为使用两个for循环然后通过Math.max()比较一下取最大值就解出来,然后提交到力扣后,提示超出时间限制。

为了解决这个问题,可以使用动态规划来优化算法以避免重复计算,通过调整计算公式为values[i] + i + (values[j] - j),可以将当前位置的值加上索引值,再加上下一个位置的值减去索引值,然后取最大值。因此,可以将values[i] + ivalues[j] - j分别都取最大值,然后再比较两者的和,从而得到观光景点能取得的最高分。

Review

Human speech is 8 times older than we thought - Breaking News English Lesson

研究人员表示,他们已经找到了人类开始说话的可能历史时期。考古学家、史前史专家史蒂文·米森博士认为,基础语言形成于大约160万年前。这比许多科学家之前认为的时间早了八倍。进化学专家先前认为,人类口头语言始于大约20万年前。米森表示,他的研究显示,第一种人类语言要么在东非,要么在南非发展起来的。他说,说话的能力促进了进化。他说,语言“无疑是使随后大部分人类身体和文化进化成为可能的关键”。

米森博士在他的新书《语言之谜》(The Language Puzzle)中解释了他认为人类语言是如何在如此久远的过去发展起来的。他说,我们的大脑在大约150万年前迅速增大。这种增长改变了我们大脑的结构。一个称为额叶的区域发展了起来,这是大脑产生语言的部分。另一个重要的变化是我们声道的发育,这是我们产生声音,因此得以说话的地方。米森说,语言让人类得以传播到世界各地。这意味着人类可以做三件重要的事情。他们可以考虑和计划未来的行动,他们还可以传授知识。米森说,语言“深刻地改变了人类的故事”。

Tip

打算将自己博客使用的PaperMod主题更新一下,然后放弃本地的修改,因为使用git pull时提示了本地有变动的部分,需要先处理才行,我觉得不是很重要,就打算放弃本地修改,强制更新,使用如下命令:

git fetch --all					
git reset --hard origin/master
git clean -f -d

三个命令解释如下:

  1. git fetch --all:从远程仓库获取最新的内容。
  2. git reset --hard origin/master:将本地仓库的内容重置为与远程仓库相同,包括放弃任何本地修改。
  3. git clean -f -d:清除工作目录中未跟踪的文件和目录。

Share

抓而不紧,等于不抓。