Python每日一练-----移动零

Python每日一练-----移动零,第1张

🌧(day35)

目录

📝题目:

🚩题目分析:

💡解题思路:

解法一:✏

🌈代码实现

解法二:✏

🌈代码实现


📝题目:

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

⭐示例 1:

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

输出: [1,3,12,0,0]

⭐示例 2:

输入: nums = [0]

输出: [0]

🚩题目分析:

注意保持非零数的相对顺序,即因为0位置的变动其它非零数的索引都会改变。但如果原例表1的位置在2前,那么移动后1依旧要在2前。

💡解题思路: 解法一:✏

对于列表中0元素的移动到末尾,相当于将0元素删除,然后再添加到末尾。

我们可以使用remov()和appebd()方法实现这一过程。

remove()方法用于删除列表中的元素。remove(要删除的元素)

append()方法用于向列表添加的元素。append(要添加的元素)

appen()函数默认将加入的元素放在列表末尾。

🌈代码实现
def moveZeroes(nums):
    for i in range(nums.count(0)):
        nums.remove(0)
        nums.append(0)
    return nums
解法二:✏

使用双指针,通过交换两个指针对应的元素实现将0元素以到末尾。我们可以在列表开头放置两个指针left和right。right指针行移动。

如果遇到非0数那么我们将left指针也向前移动使得left指针和right指针重合,那么交换两个指针对应的元素就是自己和自己交换不会又任何影响。

如果遇到0元素则不移动left指针,但是right指针向前移动。那么left就会在right指针后一个位置。这时候交换两个指针对应的元素那么0元素就会和后一个非0元素互换位置实现0元素的移动。

接着重复这一过程即可。

🌈代码实现
def moveZeroes(nums):
    right = 0
    left = 0
    while right < len(nums):
        if nums[right] != 0:
            nums[left], nums[right] = nums[right], nums[left]
            left += 1
        right += 1

今天就到这,明天见。🚀

❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄end❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/755797.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-30
下一篇 2022-04-30

发表评论

登录后才能评论

评论列表(0条)

保存