当前位置: 首页 > news >正文

天津市工程建设交易管理中心网站网络优化工具

天津市工程建设交易管理中心网站,网络优化工具,校园网站网络文明建设,大连模板建站定制网站#左耳听风 ARST 打卡活动重启# 目录 一、题目 二、解题方法一 三、解题方法二 关于 ARTS 的释义 —— 每周完成一个 ARTS: ● Algorithm: 每周至少做一个 LeetCode 的算法题 ● Review: 阅读并点评至少一篇英文技术文章 ● Tips: 学习至少一个技术技巧 ● Share:…

#左耳听风 ARST 打卡活动重启#

目录

 一、题目

二、解题方法一

三、解题方法二


 关于 ARTS 的释义 —— 每周完成一个 ARTS:
● Algorithm: 每周至少做一个 LeetCode 的算法题
● Review: 阅读并点评至少一篇英文技术文章
● Tips: 学习至少一个技术技巧
● Share: 分享一篇有观点和思考的技术文章

希望通过此次活动能聚集一波热爱技术的人,延续好奇、探索、实践、分享的精神。
 


 一、题目

给你一个长度为 n 的整数数组 nums ,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。

我们是这样定义一个非递减数列的: 对于数组中任意的 i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]。

示例 1:

输入: nums = [4,2,3]
输出: true
解释: 你可以通过把第一个 4 变成 1 来使得它成为一个非递减数列。


示例 2:

输入: nums = [4,2,1]
输出: false
解释: 你不能在只改变一个元素的情况下将其变为非递减数列。

二、解题方法一

def checkPossibility(nums):for i in range(len(nums) - 1):if nums[i] > nums[i + 1]:# 如果当前元素比下一个元素大,则需要将当前元素减小或将下一个元素增大# 为了只改变一个元素,我们可以将当前元素减小到比下一个元素小的最小值# 或者将下一个元素增大到比当前元素大的最小值# 因此,我们只需要找到这两个数中的最小值即可return min(nums[i], nums[i + 1]) < max(nums[i], nums[i + 1])# 如果所有元素都满足非递减的条件,则返回 Truereturn True

这段代码实现了一个函数 `checkPossibility`,用于判断在最多改变 1 个元素的情况下,给定的整数数组是否能变成一个非递减数列。

函数的输入参数为一个整数数组 `nums`。

首先,我们使用一个循环遍历数组中的每个元素 `i`,并检查当前元素 `nums[i]` 是否比下一个元素 `nums[i + 1]` 大。如果是,则说明当前元素需要被修改,以使得整个数组能够变成非递减数列。

为了只改变一个元素,我们可以将当前元素 `nums[i]` 减小到比下一个元素 `nums[i + 1]` 小的最小值,或者将下一个元素 `nums[i + 1]` 增大到比当前元素 `nums[i]` 大的最小值。因此,我们只需要找到这两个数中的最小值即可。

具体来说,我们可以使用 Python 内置函数 `min()` 来找到两个数中的最小值。如果这个最小值小于等于另一个数,则说明它们可以相等,即不需要进行任何操作;否则,我们需要将较小的那个数减小到等于较大的那个数。

最后,如果所有元素都满足非递减的条件,则返回 True;否则,返回 False。

三、解题方法二

另一种解决方法是使用双指针法。具体来说,我们可以定义两个指针 `left` 和 `right`,分别指向数组的开头和结尾。然后,我们从左到右遍历数组中的每个元素,并检查当前元素是否小于等于右边的元素。如果是,则说明当前元素需要被修改,以使得整个数组能够变成非递减数列。

为了只改变一个元素,我们可以将当前元素 `nums[i]` 减小到比右边的元素 `nums[j]` 小的最小值,或者将右边的元素 `nums[j]` 增大到比当前元素 `nums[i]` 大的最小值。因此,我们只需要找到这两个数中的最小值即可。

具体来说,我们可以使用双指针法来实现这个算法。首先,我们将 `left` 指针指向数组的第一个元素,将 `right` 指针指向数组的最后一个元素。然后,我们从左到右遍历数组中的每个元素 `i`,并检查当前元素是否小于等于右边的元素 `nums[j]`。如果是,则说明当前元素需要被修改,我们需要移动 `left` 指针到下一个位置,并更新左边的最小值;否则,我们需要移动 `right` 指针到前一个位置,并更新右边的最小值。最后,如果所有元素都满足非递减的条件,则返回 True;否则,返回 False。

这个算法的时间复杂度为 O(n),其中 n 为数组的长度。

def checkPossibility(nums):left, right = 0, len(nums) - 1for i in range(len(nums)):while left < right and nums[left] > nums[i]:# 如果左边的元素比当前元素大,则将左边的指针向右移动一位left += 1while left < right and nums[right] < nums[i]:# 如果右边的元素比当前元素小,则将右边的指针向左移动一位right -= 1if left >= right:# 如果左边的指针已经到达了数组的末尾,说明无法通过修改元素使得整个数组变成非递减数列return False# 将当前元素修改为左边和右边中的最小值,以满足非递减的条件nums[i] = min(nums[left], nums[right])return True

http://www.cotm.com.cn/news/429.html

相关文章:

  • 自己可以学着做网站吗找资源的关键词有哪些
  • 宁波公司网站建设网站的推广
  • 河南省招生网站服务平台西安百度网站快速排名
  • 网站设计酷站知乎怎么申请关键词推广
  • 做网站的费用入账10000个免费货源网站
  • 江苏省建设集团有限公司网站惠州百度seo
  • b2c开通手机网站多少钱网络营销的作用
  • 网站评估怎么做网络媒体有哪些
  • 南昌建网站做优化公司网址查询
  • 建瓯网站制作查网站域名
  • 用ae做模板下载网站北京seo排名服务
  • 青海省住房和城乡建设局网站友情链接买卖
  • 网站建设综合训练爱站seo工具
  • 专业网站网店运营工资一般多少
  • 可以做彩票广告的网站天津seo培训机构
  • 上海企业工商查询宁波品牌网站推广优化公司
  • 南京建设交易中心网站软文兼职10元一篇
  • 网站建设与应用百度指数数据分析平台官网
  • 外贸建站注意事项seo北京公司
  • 网站seo合同查关键词排名网
  • 宿迁网站推广近期时事新闻10条
  • 贵阳最新消息今天网站推广怎么优化
  • 专门做狗猫配套网站有什么意思国内seo服务商
  • 深圳网站建设网页制作百度金融
  • 在上阿里云做网站晋城今日头条新闻
  • 青岛工程建设监理公司网站上海十大营销策划公司
  • 厦门+外贸公司做网站四种营销策略
  • 建设专业网站价格云服务器免费
  • 烟台专业做网站公司哪家好关键词分类哪八种
  • wordpress 锚文本seo人人网