赞
踩
给你一个下标从 0 开始的整数数组 nums ,数组长度为偶数 ,由数目相等的正整数和负整数组成。
你需要 重排 nums 中的元素,使修改后的数组满足下述条件:
① 任意 连续 的两个整数 符号相反
② 对于符号相同的所有整数,保留 它们在 nums 中的 顺序 。
③ 重排后数组以正整数开头。
重排元素满足上述条件后,返回修改后的数组。
例如:
输入:nums = [3,1,-2,-5,2,-4]
输出:[3,-2,1,-5,2,-4]
通过仔细读题,我们可以得出若要满足条件①和③,正数的下标索引要为偶数,负数的下标索引为奇数;若要满足条件②,我们要遍历数组元素,依次把正数放在偶数索引,把负数放在奇数索引。
首先定义一个空数组,用来存放重排后的数组;
然后遍历原来的数组,若元素大于0,依次放到偶数索引位置,若元素小于0,依次放到奇数索引位置;
最后返回重排后数组。
- def sortofnums(nums):
- l=[]
- i,j=0,1#奇偶位索引
- a=0
- while a<len(nums):
- if nums[a]>0:
- l.insert(i,nums[a])
- i=i+2
- else:
- l.insert(j,nums[a])
- j=j+2
- a=a+1
- return l
- nums1=[1,2,3,-1,-2,-3]
- nums2=[-1,1]
- print('[1,2,3,-1,-2,-3]重排:',sortofnums(nums1))
- print('[-1,1]重排:',sortofnums(nums2))
运行结果截图:
本人是python初学者,代码可能有很多不足之处,如果大家有更简洁的算法,欢迎在评论区留言指教!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。