lintcode-144-交错正负数
144-交错正负数
给出一个含有正整数和负整数的数组,重新排列成一个正负数交错的数组。
注意事项
不需要保持正整数或者负整数原来的顺序。
样例
给出数组[-1, -2, -3, 4, 5, 6],重新排序之后,变成[-1, 5, -2, 4, -3, 6]或者其他任何满足要求的答案
挑战
原地完成,没有额外的空间
标签
两根指针
思路
要实现正负交错的数组,原数组的正数和负数的数量之差是小于 1 的,所以可以利用这一性质,将负数挪到数组左边,正数挪到数组右边。然后判断数组中间的是整数还是负数,交换位置。
code
class Solution {
public:
/**
* @param A: An integer array.
* @return: void
*/
void rerange(vector<int> &A) {
// write your code here
int size = A.size();
if(size <= 0) {
return ;
}
int p1 = 0, p2 = size - 1;
while(p1 < p2) {
if(A[p1] < 0) {
swap(A[p1], A[p2]);
p2--;
}
else {
p1++;
}
}
if (size % 2 == 0) {
p1 = 1;
p2 = size - 2;
}
else if(A[size/2]>0){
p1 = 1;
p2 = size - 1;
}
else{
p1 = 0;
p2 = size - 2;
}
while (p1 < p2) {
swap(A[p1], A[p2]);
p1 = p1 + 2;
p2 = p2 - 2;
}
}
};
lintcode-144-交错正负数的更多相关文章
- lintcode:交错正负数
交错正负数 给出一个含有正整数和负整数的数组,重新排列成一个正负数交错的数组. 注意事项 不需要保持正整数或者负整数原来的顺序. 样例 给出数组[-1, -2, -3, 4, 5, 6],重新排序之后 ...
- android EditText控件可输入正负数及小数位
设置android:inputType="numberSigned|numberDecimal" <EditText android:id="@+id/editTe ...
- js验证是否是数字,支持正负数小数
js验证是否是数字,支持正负数小数. function isShuzi(str){ //var regExp =/[0-9]$/;//不支持小数 var regExp =/^\-?[0-9]+(.[0 ...
- TCP通信实现对接硬件发送与接收十六进制数据 & int与byte的转换原理 & java中正负数的表示
今天收到的一份需求任务是对接硬件,TCP通信,并给出通信端口与数据包格式,如下: 1.首先编写了一个简单的十六进制转byte[]数组与byte[]转换16进制字符串的两个方法,如下: /** * 将十 ...
- C语言中的正负数及其输出
在数学中,数字有正负之分.在C语言中也是一样,short.int.long 都可以带上正负号,例如: //负数 ; short a2 = -0x2dc9; //十六进制 //正数 ; ; //八进制 ...
- Java中正负数的存储方式-正码 反码和补码
Java中正负数的存储方式-正码 反码和补码 正码 我们以int 为例,一个int占用4个byte,32bits 0 存在内存上为 00000000 00000000 00000000 0000000 ...
- Int32 最大的数值是多少???(附十进制十六进制相互转换且包含正负数的java代码)
正数转二进制很简单,转十六进制也很简单. 那么负数的情况下呢?在计算机中无法识别你给的符号“+”,"-",计算机只认识0和1 那么在二进制中如何表示负数. 先简单介绍一下负数如何转 ...
- C#中2、8、16进制 有符号转换10进制正负数
曾经让我苦想的其他进制转有符号整型问题,结果自己想到方法解决后才发现原来如此简单. 1.Int16(2个byte长度 ) : 方法 :Convert.ToInt16(进制编码,进制) a.16进制转1 ...
- java进制转换(无视正负数的差别)
最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤其是对于负数这一方面. 下面和大家分享一下,这里只写了十进制到二进制的转换,其实都是同样的道理 public class Test1 { pub ...
随机推荐
- vue 图片压缩 基于cli3 配置
chainWebpack: config => { const imagesRule = config.module.rule('images') imagesRule .use('image- ...
- javascript实现复选框单选多选!
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- python小白的初步爬虫
前序: 最近工作不是很忙,领导突然找我谈话,说是谈话,其实就是分配活呗.果不其然,很快进入正题, 给了我一个网址链接,然后说需要商品的信息...巴拉巴拉.好吧,去做吧. 我当时的内心是崩溃的,pyt ...
- centos升级数据库
Centos下升级MySQL数据库 备份数据 $ mysqldump -u xxx -h xxx -P 3306 -p --all-databases > databases.sql 查看版本 ...
- python3.5 安装twisted
https://blog.csdn.net/caimouse/article/details/77647952 下载地址:http://www.lfd.uci.edu/~gohlke/pythonli ...
- .Net 面试题 汇总(五)
1.简述javascript中的“=.==.===”的区别? =赋值 ==比较是否一般相等 "3"==3 //会做类型的隐式转换,true ===比较是否严格相等 "3& ...
- nodejs module/require
1. wrap up a module using module.exports, name the file to a.js var fun1=function(){ var stylus = re ...
- Jsp刷新分页模板,很全
1.用来实现上一页下一页,我直接写到查询页面上 <%--page的分页--%> <style type="text/css"> a { color: # ...
- VIN码识别,车架号识别,OCR扫描工具
近年二手车交易市场火爆,对二手车估值需要了详细解二手车的历史状况,车架号(VIN码)是车辆唯一的身份标识,也是了解二手车车况的入口,车商和二手车平台会频繁的进行车况查询,VIN码扫描识别技术给车辆估值 ...
- HTML <head>里面的标签
<head> 中的标签可以引用脚本.指示浏览器在哪里找到样式表.提供元信息等等. 下面这些标签可用在 head 部分:<base>, <link>, <met ...