• 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.

    这道题没有给出正数、负数谁多谁少,所以需要先统计数量,数量多的要包着数量少的,然后数组尾部全是数量多的数

     1 class Solution {
     2     /**
     3      * @param A: An integer array.
     4      * @return an integer array
     5      */
     6     public int[] rerange(int[] A) {
     7         // write your code here
     8         int posNum = 0, negNum = 0;
     9         for (int elem : A) {
    10             if (elem < 0) {
    11                 negNum++;
    12             }
    13             else {
    14                 posNum++;
    15             }
    16         }
    17         int posInd = 1, negInd = 0;
    18         if (posNum > negNum) {
    19             negInd = 1;
    20             posInd = 0;
    21         }
    22         while (posInd<A.length && negInd<A.length) {
    23             while (posInd < A.length && A[posInd] > 0) {
    24                 posInd += 2;
    25             }
    26             while (negInd < A.length && A[negInd] < 0) {
    27                 negInd += 2;
    28             }
    29             if (posInd<A.length && negInd<A.length) {
    30                 swap(A, posInd, negInd);

    33 } 34 } 35 return A; 36 } 37 38 public void swap(int[] A, int l, int r) { 39 int temp = A[l]; 40 A[l] = A[r]; 41 A[r] = temp; 42 } 43 }
  • 相关阅读:
    Less 文档查看心得
    Jquery+SlideDown+在IE7和IE6中的bug
    Highcharts 图表库
    安卓 日常问题 工作日志6
    安卓 日常问题 工作日志5
    安卓 日常问题 工作日志 3
    安卓 日常问题 工作日志 2
    安卓 日常问题 工作日志
    新的开始 安卓工程师
    2018.4.16号 我也不知道应该写点什么
  • 原文地址:https://www.cnblogs.com/EdwardLiu/p/4314781.html
Copyright © 2020-2023  润新知