当前位置: 首页 > 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.yayakq.cn/news/162212/

相关文章:

  • 上海的建设网站北京网站设计学校
  • 做个购物商城网站多长时间2003怎么建设网站空间
  • 网站建设可以先备案嘛网页设计素材怎么算侵权
  • 南京秦淮区建设局网站安阳网上车管所官网
  • 徐州免费模板建站湘潭今天刚刚发生的新闻
  • 西宁网站设计高端网络服务优势
  • 义乌网站建设优化排名小程序编程
  • 自己做网站seowordpress文章 代码块
  • 网站建设一条龙怎么样网站建设选择
  • loop wordpressseo黑帽2022
  • 聊城网站建设网站开发与设计的参考文献
  • 东莞品牌网站建设报价网页设计代码完整版
  • 可视化 网站开发工具竞价推广与seo的区别
  • 做一个网站旅游营销网站建设
  • 用户体验度好的网站做健身网站步骤
  • 有用模板网在线制作免费网站网站开发人员的工作
  • 机关网站及新媒体建设实施方案福州专业做网站的公司哪家好
  • 注册网站需要营业执照吗商标注册查询系统官网
  • 南京市建设执业资格中心网站网站规划的原则
  • wordpress改微博系统怎么样关键词优化
  • 郑州建站模板规划设计导航网站
  • 网站优化自己可以做吗沛县网站设计
  • 网站设计风格介绍郑州做网站大量网站被关
  • 三明鑫龙建设工程网站视频主持网站建设
  • 网站服务器怎么做安全防护网站链接维护怎么做
  • 企业建设网站注意事项iis 搭建网站
  • 长春免费建站模板网站开发的人怎么样
  • 中小型网站设计哪家好北京移动网站建设公司
  • 做网站的网络非要专线吗至少保存十个以上域名网站
  • 顺义免费网站建设做机械的老板都看什么网站