leetcode124,LeetCode--283--移動0

 2023-11-05 阅读 26 评论 0

摘要:問題描述: leetcode124。給定一個數組 nums,編寫一個函數將所有 0 移動到數組的末尾,同時保持非零元素的相對順序。 示例: 輸入: [0,1,0,3,12] 輸出: [1,3,12,0,0] 說明: 必須在原數組上操作,不能拷貝額外的數組。盡量減少操作次數。方法1:

問題描述:

leetcode124。給定一個數組 nums,編寫一個函數將所有 0 移動到數組的末尾,同時保持非零元素的相對順序。

示例:

輸入: [0,1,0,3,12]
輸出: [1,3,12,0,0]

說明:

  1. 必須在原數組上操作,不能拷貝額外的數組。
  2. 盡量減少操作次數。

方法1:檢測到為0紀錄0的個數,不為0時進行賦值運算nums[i - k] = nums[i]

    最后將檢測到的0補到nums的最后

 1 class Solution(object):
 2     def moveZeroes(self, nums):
 3         """
 4         :type nums: List[int]
 5         :rtype: void Do not return anything, modify nums in-place instead.
 6         """
 7         if len(nums) == 2:
 8             if nums[0] == 0:
 9                 nums[0],nums[1] = nums[1],nums[0]
10                 return
11             else:
12                 return
13         k = 0
14         for i in range(len(nums)):
15             if nums[i] == 0:
16                 k += 1
17             elif nums[i] != 0 :
18                 nums[i - k] = nums[i]
19         for j in range(len(nums) - k,len(nums)):
20             nums[j] = 0

方法2:每次將元素等于0的位置變成[]。

 1 class Solution(object):
 2     def moveZeroes(self, nums):
 3         """
 4         :type nums: List[int]
 5         :rtype: void Do not return anything, modify nums in-place instead.
 6         """
 7         i = 0
 8         length = len(nums)
 9         while i < len(nums):
10             while nums != [] and nums[i] == 0:
11                 nums[i:i+1] = []
12                 if i == len(nums):
13                     break
14             i += 1
15         nums += (length - len(nums))*[0]

將方法1改進:

 1 class Solution(object):
 2     def moveZeroes(self, nums):
 3         """
 4         :type nums: List[int]
 5         :rtype: void Do not return anything, modify nums in-place instead.
 6         """
 7         length = len(nums)
 8         i = 0
 9         n = 0
10         while i + n < length:
11             if nums[i] == 0:
12                 n += 1
13                 del nums[i]
14             else:
15                 i += 1
16         nums += [0]*n

2018-09-23?09:07:49

轉載于:https://www.cnblogs.com/NPC-assange/p/9691993.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/166367.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息