当前位置:   article > 正文

python--力扣2149题按符号重排数组_给你一个下标从 0 开始长度为 偶数 的整数数组 nums 。 只要 nums 不是 空数组,你

给你一个下标从 0 开始长度为 偶数 的整数数组 nums 。 只要 nums 不是 空数组,你

题目:

给你一个下标从 0 开始的整数数组 nums ,数组长度为偶数 ,由数目相等的正整数和负整数组成。

你需要 重排 nums 中的元素,使修改后的数组满足下述条件:

① 任意 连续 的两个整数 符号相反

② 对于符号相同的所有整数,保留 它们在 nums 中的 顺序 。

重排后数组以正整数开头

重排元素满足上述条件后,返回修改后的数组。

例如:

输入:nums = [3,1,-2,-5,2,-4]
输出:[3,-2,1,-5,2,-4]

解题思路:

通过仔细读题,我们可以得出若要满足条件①和③,正数的下标索引要为偶数,负数的下标索引为奇数;若要满足条件②,我们要遍历数组元素,依次把正数放在偶数索引,把负数放在奇数索引。

首先定义一个空数组,用来存放重排后的数组;

然后遍历原来的数组,若元素大于0,依次放到偶数索引位置,若元素小于0,依次放到奇数索引位置;

最后返回重排后数组。

源代码:

  1. def sortofnums(nums):
  2. l=[]
  3. i,j=0,1#奇偶位索引
  4. a=0
  5. while a<len(nums):
  6. if nums[a]>0:
  7. l.insert(i,nums[a])
  8. i=i+2
  9. else:
  10. l.insert(j,nums[a])
  11. j=j+2
  12. a=a+1
  13. return l
  14. nums1=[1,2,3,-1,-2,-3]
  15. nums2=[-1,1]
  16. print('[1,2,3,-1,-2,-3]重排:',sortofnums(nums1))
  17. print('[-1,1]重排:',sortofnums(nums2))

运行结果截图:

本人是python初学者,代码可能有很多不足之处,如果大家有更简洁的算法,欢迎在评论区留言指教!
 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/182478?site
推荐阅读
相关标签
  

闽ICP备14008679号