2023年10月11日 星期三

10/10 每日一題(重新排序數組按照偶奇的順序)

 Given an array of integers nums, half of the integers in nums are odd, and the other half are even.

Sort the array so that whenever nums[i] is odd, i is odd, and whenever nums[i] is even, i is even.

Return any answer array that satisfies this condition.

 

Example 1:

Input: nums = [4,2,5,7]
Output: [4,5,2,7]
Explanation: [4,7,2,5], [2,5,4,7], [2,7,4,5] would also have been accepted.

Example 2:

Input: nums = [2,3]
Output: [2,3]

 

Constraints:

  • 2 <= nums.length <= 2 * 104
  • nums.length is even.
  • Half of the integers in nums are even.
  • 0 <= nums[i] <= 1000

 

Follow Up: Could you solve it in-place?



class Solution:
    def sortArrayByParityII(self, nums: List[int]) -> List[int]:

        res=[0]*len(nums)
        l,r=0,1
        for i in nums:
            if i %2==0:
                res[l]=i
                l+=2
            else:
                res[r]=i
                r+=2
        return res
------------------
class Solution:
    def sortArrayByParityII(self, nums: List[int]) -> List[int]:
        i = 0
        for j in range(len(nums)):
            if nums[j]%2==0:
                nums[j], nums[i] = nums[i], nums[j]
                i+=1
        
        j, i = int(len(nums)/2), 1
        if j%2!=0:
            j+=1
        
        print(j)
        for k in range(j, len(nums), 2):
            nums[k], nums[i] = nums[i], nums[k]
            i+=2

        return nums
       

標籤:

0 個意見:

張貼留言

訂閱 張貼留言 [Atom]

<< 首頁