zoukankan      html  css  js  c++  java
  • leetcode324 Wiggle Sort II

     1 """
     2 Given an unsorted array nums, reorder it such that nums[0] < nums[1] > nums[2] < nums[3]....
     3 Example 1:
     4 Input: nums = [1, 5, 1, 1, 6, 4]
     5 Output: One possible answer is [1, 4, 1, 5, 1, 6].
     6 Example 2:
     7 Input: nums = [1, 3, 2, 2, 3, 1]
     8 Output: One possible answer is [2, 3, 1, 3, 1, 2].
     9 """
    10 """
    11 先排序,再折半拆成两个子数组,再归并
    12 但本题的关键是需要对两个子数组由后向前取元素
    13 """
    14 class Solution:
    15     def wiggleSort(self, nums):
    16         """
    17         Do not return anything, modify nums in-place instead.
    18         """
    19         l = sorted(nums)
    20         mid = (len(l)+1)//2
    21         l1 = l[:mid]
    22         l2 = l[mid:]
    23         k, i, j = 0, len(l1)-1, len(l2)-1 #!!!逆着合并 测试[4, 5, 5, 6]
    24         while i >= 0 or j >= 0: #bug 写成了i>0
    25             if i >= 0:
    26                 nums[k] = l1[i]
    27                 i -= 1
    28                 k += 1
    29             if j >= 0:
    30                 nums[k] = l2[j]
    31                 j -= 1
    32                 k += 1
    33 if __name__ == '__main__':
    34     nums = [1,3,2,2,3,1]
    35     ans = Solution()
    36     res = ans.wiggleSort(nums)
  • 相关阅读:
    android 3dmax
    android 源码
    android 获取 图片 缩略图
    android 导入 3d 场景
    TSQL查询进阶理解SQL SERVER中的分区表
    android 画直接2
    sqlServer 加速
    android 动态壁纸
    sqlServer 2000 唯一 索引
    视频网站
  • 原文地址:https://www.cnblogs.com/yawenw/p/12431885.html
Copyright © 2011-2022 走看看