美文网首页
拆分含0数组

拆分含0数组

作者: 蔚蓝新晨 | 来源:发表于2019-05-21 11:17 被阅读0次

前几天有个需求是这样的:

一个数组  [1,1,1,1,0,1,1,1,0,1,1,0],拆分成[[1,1,1,1,0],[1,1,1,0],[1,1,0]]怎么拆。
就是碰到0了就把0和0前面的放到一个数组内。并且如果末尾都是1的话那么久把末尾所有的1都放在一个数组内。
如果数组中包含-1的话,就删除所有的-1. 

研究了半天,基本思路是先判断0的位置,然后进行截取,遇到0就把0和0前面的1放到一个新的数组内。废话不多说了,上代码吧。

import java.util.ArrayList;
import java.util.Iterator;

class aa {
    public static void main(String[] args) {

        ArrayList cc = new ArrayList<>();
        cc.add("1");
        cc.add("1");
        cc.add("0");
        cc.add("0");
        cc.add("0");
        cc.add("1");
        cc.add("1");
        cc.add("0");
        cc.add("1");
        cc.add("-1");

        System.out.println(cc);

        // 删除list中为-1的数据
        for (int i = 0; i < cc.size(); i++) {
            if ((cc.get(i)).equals("-1")) {
                cc.remove(cc.get(i));
                i--;
            }
        }

        System.out.println(cc);

        ArrayList addr = new ArrayList<>();
        for (int i = 0; i < cc.size(); i++) {
            if (cc.get(i).equals("0")) {
                addr.add(i);
            }
        }
        System.out.println(addr);

        // 根据0的位置进行截断
        ArrayList ccss = new ArrayList<>();
        ArrayList ccsss = new ArrayList<>();
        for (int i = 0; i < addr.size(); i++) {
            for (int j = 0; j <= (int) addr.get(i); j++) {
                ccss.add(cc.get(j));
                if (j == (int) addr.get(i)) {
                    System.out.println(ccss);
                    ccsss.add(ccss);
                }
                if (cc.get(j).equals("0")) {
                    ccss = new ArrayList<>();
                }
            }
        }

        // 获取最后剩余的1为一个新的数组
        if ((cc.get(cc.size() - 1)).equals("1")) {
            for (int i = cc.size() - 1; i >= 0; i--) {
                if ((cc.get(i)).equals("0")) {
                    break;
                } else {
                    ccss.add(cc.get(i));
                }
            }
            ccsss.add(ccss);
        }

        System.out.println(ccsss);
    }
}

OK,结束,记录一下!

相关文章

  • 拆分含0数组

    前几天有个需求是这样的: 研究了半天,基本思路是先判断0的位置,然后进行截取,遇到0就把0和0前面的1放到一个新的...

  • 07 重忆C之 数组

    数组索引 这样声明个数组,名为radius,含3个int型元素。我们可通过radius[0],radius[1],...

  • word-break

    就用一个一维的 dp 数组,其中 dp[i] 表示范围 [0, i) 内的子串是否可以拆分,注意这里 dp 数组的...

  • 将数组拆分成固定长度数组

    #pragma mark -- 将数组拆分成固定长度 /** *将数组拆分成固定长度的子数组 * *@parama...

  • 无标题文章

    #pragma mark -- 将数组拆分成固定长度 /** *将数组拆分成固定长度的子数组 * *@parama...

  • C# 拆分byte[]数组

    将数组进行拆分,使用System.Array.Copy方法进行拆分。比如,原数组byte[] newData = ...

  • 数组拆分

    将一个数组按一定规则拆分成两个数组 奇数偶数拆分

  • jQuery之拼接JSON字符串

    实例1:数组里面含对象 组成的json串:[{"group":0,"param":["one","two","th...

  • 每日算法:plus one

    题目:将一个不为0的数 拆分成一个数组,然后在数组最后一项加一。若大于10进位若小于直接返回

  • 归并排序

    思路:将数组拆分,每次从中间拆分,直到不能拆分。然后将拆分到最后的数组,再慢慢的递归回来,按顺序一个个合并 算法实现

网友评论

      本文标题:拆分含0数组

      本文链接:https://www.haomeiwen.com/subject/mppdzqtx.html