zoukankan      html  css  js  c++  java
  • LintCode-Interleaving Positive and Negative Numbers.

    Given an array with positive and negative integers. Re-range it to interleaving with positive and negative integers.

    Note

    You are not necessary to keep the original order or positive integers or negative integers.

    Example

    Given [-1, -2, -3, 4, 5, 6], after re-range, it will be [-1, 5, -2, 4, -3, 6] or any other legal answer.

    Challenge

    Do it in-place and without extra memory.

    Analysis:

    We need figure how to address the cases that one kind of numbers is more than the other kind of numbers.

    In LintCode, if postive numbers are more than negtive numbers, the array then start with positive numbers.

    Solution:

     1 class Solution {
     2     /**
     3      * @param A: An integer array.
     4      * @return an integer array
     5      */
     6     public int[] rerange(int[] A) {
     7         if (A.length==0 || A.length==1) return A;
     8         
     9         int posNum = 0;
    10         for (int i : A) if (i>=0) posNum++;
    11         int negP = (posNum>(A.length-posNum)) ? 1 : 0;
    12         int posP = (posNum>(A.length-posNum)) ? 0 : 1;
    13 
    14     int p = A.length-1;
    15     while (negP<A.length && A[negP]<0) negP += 2;
    16     while (posP<A.length && A[posP]>=0) posP += 2;
    17     while (p>=posP || p>=negP){    
    18         if (A[p]<0){
    19             if (negP>=A.length) p--;
    20             else {
    21                 int temp = A[negP];
    22                 A[negP] = A[p];
    23                 A[p] = temp;
    24                 negP += 2;
    25             }
    26         } else {
    27             if (posP >= A.length) p--;
    28             else {
    29                 int temp = A[posP];
    30                 A[posP] = A[p];
    31                 A[p] = temp;
    32                 posP += 2;
    33             }  
    34         }
    35     }
    36 
    37     return A;
    38 
    39      }
    40 }
  • 相关阅读:
    发布spring cloud + vue项目
    以太坊上发行ERC20代币
    [转]大白话讲解Promise(一)
    比特币测试网络搭建
    非对称加密, 助记词, PIN, WIF
    搭建EOS未完
    [转]EOS智能合约 & 私链激活 & 基本操作
    [转]https://www.jianshu.com/p/06443248f4d8
    web3js 进行转账
    [转]How to Send Ethereum with Web3.js and Node
  • 原文地址:https://www.cnblogs.com/lishiblog/p/4187915.html
Copyright © 2011-2022 走看看