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

学院网站建设报价给网站首页图片做外网超链接_为什么会弹出一个服务器登录窗口

学院网站建设报价,给网站首页图片做外网超链接_为什么会弹出一个服务器登录窗口,哪些网站可以做视频搬运,五莲县财源建设网站#左耳听风 ARST 打卡活动重启# 目录 一、问题 二、解题方法一 三、解题方法二 四、两种方法的区别 关于 ARTS 的释义 —— 每周完成一个 ARTS: ● Algorithm: 每周至少做一个 LeetCode 的算法题 ● Review: 阅读并点评至少一篇英文技术文章 ● Tips: 学习至少一…

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

目录

一、问题

二、解题方法一

三、解题方法二

 四、两种方法的区别


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

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


一、问题

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

示例 1:

输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]


示例 2:

输入: nums = [0]
输出: [0]

二、解题方法一

def moveZeroes(nums):left, right = 0, len(nums) - 1while left < right:# 如果左边的元素是 0,则将左边的指针向右移动一位if nums[left] == 0:left += 1# 如果右边的元素是 0,则将右边的指针向左移动一位elif nums[right] == 0:right -= 1else:# 否则交换左右两个指针所指向的元素nums[left], nums[right] = nums[right], nums[left]left += 1right -= 1

这段代码实现了一个函数 `moveZeroes`,用于将数组中的所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

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

首先,我们定义两个指针 `left` 和 `right`,分别指向数组的开头和结尾。然后,我们使用一个 while 循环来遍历数组中的每个元素。在每次循环中,我们检查左右两个指针所指向的元素是否都是 0。如果是,则说明这两个元素可以交换位置,因此我们将左边的指针向右移动一位,将右边的指针向左移动一位;否则,我们将左边的指针所指向的元素与右边的指针所指向的元素交换位置,并将左边的指针向右移动一位,将右边的指针向左移动一位。

最后,当所有的 0 都被移动到了数组的末尾时,循环结束,此时数组中的所有非零元素都已经按照原来的顺序排列好了。

三、解题方法二

除了双指针法,还有一种解题方法是使用一次遍历。具体来说,我们可以定义一个变量 `index` 来表示非零元素的位置,初始值为 0。然后,我们从左到右遍历数组中的每个元素,并检查当前元素是否为 0。如果是,则说明当前元素需要被移动到数组的末尾,我们需要将 `index` 向右移动一位;否则,我们需要将 `index` 向右移动一位。

具体来说,我们可以使用一次遍历来实现这个算法。首先,我们将 `index` 初始化为 0,然后从左到右遍历数组中的每个元素 `nums[i]`。如果当前元素为 0,则说明它需要被移动到数组的末尾,我们需要将 `index` 向右移动一位;否则,我们需要将 `index` 向右移动一位。最后,我们可以将数组中的所有元素依次放到 `index` 之前的位置上即可。

这种方法的时间复杂度同样为 O(n),其中 n 为数组的长度。

def moveZeroes(nums):index = 0for num in nums:if num != 0:nums[index] = numindex += 1for i in range(len(nums) - 1, index, -1):nums[i] = 0

 四、两种方法的区别

这两种方法的主要区别在于实现的思路和时间复杂度上。

双指针法的基本思路是:从数组的两端开始遍历,如果左指针指向的元素为 0,则将左指针向右移动一位;如果右指针指向的元素为 0,则将右指针向左移动一位;否则交换左右两个指针所指向的元素。这样可以保证在一次遍历中找到所有需要被移动到末尾的 0,并且只移动了一次数组中的元素。因此,双指针法的时间复杂度为 O(n)。

而一次遍历的方法的基本思路是:从数组的第一个元素开始遍历,如果当前元素不为 0,则将其放到数组的前面一个位置上;否则说明当前元素为 0,需要将其放到数组的末尾。这样可以保证在一次遍历中找到所有需要被移动到末尾的 0,并且只移动了一次数组中的元素。但是,这种方法需要使用额外的空间来记录非零元素的位置 `index`,因此时间复杂度为 O(n),空间复杂度为 O(1)。

综上所述,双指针法的时间复杂度更低,但是需要使用额外的空间来记录指针的位置;而一次遍历的方法不需要使用额外的空间,但是时间复杂度略高一些。

http://www.yayakq.cn/news/495928/

相关文章:

  • 陕西恒立建设集团网站wordpress个性
  • 网站内容页怎么做的外贸流程全步骤英文
  • 网站开发的工作对象wordpress伪静态设置方法
  • 萍乡的电子商务网站建设公司邢台做移动网站的地方
  • 移动4G网站建设网站制作的一般步骤
  • 网站建设产品经理职责资源网站不好找了
  • wps如何做网站wordpress如何添加商桥
  • 修改网站图标泰安市最新消息
  • 简单大气的网站漯河网站推广哪家好
  • 上住房和城乡建设部网站有什么做门窗展厅的设计网站
  • 渭南网站建设远景单页面个人网站
  • 做网站用js的好处网站模板样式修改
  • 商城微网站建设多少钱网站在百度的图标显示不正常
  • 学校网站建设客户需求调查问卷皖icp合肥网站开发公司
  • 德州网站开发公司新手怎么开始做微商
  • 温州网站建设(首选国鼎网络)服装企业营销网站建设
  • 微信软文范例宁波网站推广优化公司
  • 网站建设和推广需要多少费用无锡百度信息流
  • 关键词搜索工具好站网商务推广
  • 网站的弹窗对话框怎么做引擎搜索对人类记忆的影响
  • 网站改版模版源码之家打不开
  • 做炒作的网站网站推广的内涵
  • flashxml网站模板网站修改标题有影响吗
  • 北方明珠网站建设医院咨询
  • 建设部网站最新消息凡科商城小程序怎么样
  • 台州cms建站系统wordpress微信公众号开发教程
  • 建设项目竣工环保验收公示网站网站分析总结
  • 求个没封的w站2021软件营销型网站建设首选
  • 哪个网站可以做创意短视频wordpress 开店
  • 连云港企业做网站做淘宝客导购网站推广