iT邦幫忙

2021 iThome 鐵人賽

DAY 28
0
自我挑戰組

每日LeetCode解題紀錄系列 第 28

LeetCode解題 Day28

922. Sort Array By Parity II

https://leetcode.com/problems/sort-array-by-parity-ii/


題目解釋

你會得到一組全是數字的陣列nums,其中一半是奇數,另外一半是偶數

請把陣列重新排列使nums的奇數項是奇數,偶數項是偶數,回傳任一個符合條件的就可以

example

https://i.imgur.com/Ctlvhtt.png


解法

用兩個變數odd, even分別記錄奇數和偶數的起始位置,再建立一個大小剛好的陣列ans

接著用迴圈讀取陣列的每個數字,如果數字是奇數,就把奇數放到ans[odd],並且把odd加二,代表下個放奇數的位置;偶數是一樣的判斷

程式碼

class Solution:
    def sortArrayByParityII(self, nums: List[int]) -> List[int]:
        even = 0
        odd = 1
        ans = [0] * len(nums)
        
        for num in nums:
            if num % 2 == 0:
                ans[even] = num
                even += 2
            else:
                ans[odd] = num
                odd += 2
        return ans

上一篇
LeetCode解題 Day27
下一篇
LeetCode解題 Day29
系列文
每日LeetCode解題紀錄30

尚未有邦友留言

立即登入留言