当前位置:网站首页>2149. 按符号重排数组
2149. 按符号重排数组
2022-08-02 23:56:00 【Mr Gao】
2149. 按符号重排数组
给你一个下标从 0 开始的整数数组 nums ,数组长度为 偶数 ,由数目相等的正整数和负整数组成。
你需要 重排 nums 中的元素,使修改后的数组满足下述条件:
任意 连续 的两个整数 符号相反
对于符号相同的所有整数,保留 它们在 nums 中的 顺序 。
重排后数组以正整数开头。
重排元素满足上述条件后,返回修改后的数组。
示例 1:
输入:nums = [3,1,-2,-5,2,-4]
输出:[3,-2,1,-5,2,-4]
解释:
nums 中的正整数是 [3,1,2] ,负整数是 [-2,-5,-4] 。
重排的唯一可行方案是 [3,-2,1,-5,2,-4],能满足所有条件。
像 [1,-2,2,-5,3,-4]、[3,1,2,-2,-5,-4]、[-2,3,-5,1,-4,2] 这样的其他方案是不正确的,因为不满足一个或者多个条件。
示例 2:
输入:nums = [-1,1]
输出:[1,-1]
解释:
1 是 nums 中唯一一个正整数,-1 是 nums 中唯一一个负整数。
所以 nums 重排为 [1,-1] 。
解题代码如下:
/** * Note: The returned array must be malloced, assume caller calls free(). */
int* rearrangeArray(int* nums, int numsSize, int* returnSize){
int aid[numsSize],aid2[numsSize];
int size1=0,size2=0;
for(int i=0;i<numsSize;i++){
if(nums[i]>0){
aid2[size1++]=nums[i];
}
else{
aid[size2++]=nums[i];
}
}
int p1=0,p2=0;
for(int i=0;i<numsSize;i++){
if(i%2==0){
nums[i]=aid2[p1++];
}
else{
nums[i]=aid[p2++];
}
}
*returnSize=numsSize;
return nums;
}
边栏推荐
猜你喜欢
随机推荐
C# 异步编程(async和await)
DB2数据库-获取表结构异常:[jcc][t4][1065][12306][4.26.14]CharConvertionException ERRORCODE=-4220,SQLSTATE=null
关于地图GIS开发事项的一次实践整理(上)
如何突破测试/开发程序员思维?一种不一样的感觉......
浅谈I2C知识
js基础知识整理之 —— 全局作用域
LVM与磁盘配额原理及配置
Day117. Shangyitong: Generate registered order module
Speech Synthesis Model Cheat Sheet (1)
十三、数据回显
Nuxt 所有页面都设置上SEO相关标签
谷歌 Chrome 浏览器 104 正式版发布:加快网页加载,蓝牙 API 改进
Test | ali internship 90 days in life: from the perspective of interns, talk about personal growth
3、Xendesktop更改发布桌面的显示名称(MCS静态桌面)
新公链时代的跨链安全性解决方案
基于rt-thread studio的STM32裸机开发——LED
minio 单机版安装
D experimental new anomaly
令人心动的AI综述(1)
Pytest配置项-pytest.ini