Android面试算法题之拆分元素
Android面试算法题之拆分元素
指尖上的开源 发表于3年前
Android面试算法题之拆分元素
  • 发表于 3年前
  • 阅读 929
  • 收藏 11
  • 点赞 0
  • 评论 2

新睿云服务器60天免费使用,快来体验!>>>   

.//有一个整数数组,有负数和整数,用一个方法把正负数分开,要求空间复杂度是O(1),时间复杂度是:O(N)
/**
    * 分数组
    */
   public static void awaylist(){
      int a[] = new int[]{5,-2,4,6,-1,3,-9,-8};
      int start = 0;
      int temp = 0;
      for(int i=0;i<a.length;i++){
        if(a[i]>0&&start==0){
           continue;
        }else if(a[i]<0&&start==0){
           start = i;
        }else if(a[i]>0&&start!=0){
           //无论怎么样,调换后,start的下个位置一定小于0;所以start++。
           temp = a[start];
           a[start] = a[i];
           a[i] = temp;
           if(i>start){
              start++;
           }
        }
      }
      for(int i=0;i<a.length;i++){
        System.out.println(a[i]);
      }
   }


  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 38
博文 34
码字总数 11909
评论 (2)
1993hzw
  public static void main(String[] args) {
int arr[]={5,-2,4,6,-1,3,-9,-8};////-2 -1 -9 -8 5 3 4 6
int temp=0,p=-1;
for(int i=0;i<arr.length;i++){
   if(arr[i]>0&&p==-1){//遇到第一个整数
     p=i;
   }else if(arr[i]<0&&p!=-1){//遇到第一个负数,且前面遇到过整数,交换位置
     temp=arr[i];
     arr[i]=arr[p];
     arr[p]=temp;
     p++;//p到i的元素一定为正数
   }
}
for(int i=0;i<arr.length;i++)
System.out.print(arr[i]+" ");//-2 -1 -9 -8 5 3 4 6
  }
指尖上的开源
恩,你的代码要简洁
×
指尖上的开源
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: