Java分割数组成子数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java分割数组成子数组相关的知识,希望对你有一定的参考价值。

我有一个 2000多长度的数组,我要分割成40个50长度的子数组,怎么实现 ?
我需要的结果是这样的:
把这个数组 int[] sum = 0,1,2,3,4,5,……,18;
分成
int[] a = 0,1,2,3,4; //长度5
int[] b = 5,6,7,8,9; //长度5
int[] c = 10,11,12,13,14; //长度5
int[] d = 15,16,17,18; //长度4

import java.util.ArrayList;
import java.util.List;

public class ABC

public static void main(String[] args)

int[] ary = 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18;//要分割的数组
int splitSize = 5;//分割的块大小

Object[] subAry = splitAry(ary, splitSize);//分割后的子块数组

for(Object obj: subAry)//打印输出结果

int[] aryItem = (int[]) obj;

for(int i = 0; i < aryItem.length; i++)
System.out.print(aryItem[i] + ", ");

System.out.println();




private static Object[] splitAry(int[] ary, int subSize)
int count = ary.length % subSize == 0 ? ary.length / subSize: ary.length / subSize + 1;

List<List<Integer>> subAryList = new ArrayList<List<Integer>>();

for (int i = 0; i < count; i++)
int index = i * subSize;

List<Integer> list = new ArrayList<Integer>();
int j = 0;
while (j < subSize && index < ary.length)
list.add(ary[index++]);
j++;


subAryList.add(list);


Object[] subAry = new Object[subAryList.size()];

for(int i = 0; i < subAryList.size(); i++)
List<Integer> subList = subAryList.get(i);

int[] subAryItem = new int[subList.size()];
for(int j = 0; j < subList.size(); j++)
subAryItem[j] = subList.get(j).intValue();


subAry[i] = subAryItem;


return subAry;



------------------
0, 1, 2, 3, 4,
5, 6, 7, 8, 9,
10, 11, 12, 13, 14,
15, 16, 17, 18,
参考技术A 使用二维数组就行了。给你int型数组的例子吧,你可以给a赋值,最后打出b所有的值试试效果:
int[] a = new int[2000];
int[][] b = new int[40][50];
for(int i=0; i<2000; i++)
int m = i/50;
int n = i%50;
b[m][n] = a[i];
参考技术B package ArrayList;

import java.util.ArrayList;

public class TestArray

public static void main(String[] args)

//定义一个arraylist集合.存放长度为50的单个数组
ArrayList list = new ArrayList();

int[] arrayNum = new int[2000];

for(int i=0;i<arrayNum.length;i++)

//添加数据
arrayNum[i] = i;



//遍历所有集合中的元素
for(int i:arrayNum)

//判断是50的倍数,截断数组,然年将这一个数组存放到list中
if(i%50 == 0)

list.add(arrayNum);


//获取分割之后的数组中的数据,存放到list中的是一个长度为50的数组,所以取值的时候一定要注意
for(int i=0;i<list.size();i++)

int num[] = (int[])(list.get(i));

System.out.println("第"+(i+1)+"组数据:");
//打印数据
for(int nums :num)

System.out.println(nums);




参考技术C for循环不就得了吗

华为OD机试 - 组成最大数(Java) | 机试题+算法思路+考点+代码解析 2023

组成最大数

小组中每位都有一张卡片,卡片上是6位内的正整数,将卡片连起来可以组成多种数字,计算组成的最大数字。

输入输出描述:

输入描述:

“,”号分割的多个正整数字符串,不需要考虑非数字异常情况,小组最多25个人

输出描述:

最大的数字字符串

输入

4589,101,41425,9999

输出

9999458941425101

解题思路

根据用户入的字符串中提取出字符串数组,然后使用大顶堆的数据结构和重写的字符串比较方法,对字符串数组进行排序,最后将排序后的字符串拼接起来,返回最大的字符串。

代码实现

package com.hw.od;

import java.util.

以上是关于Java分割数组成子数组的主要内容,如果未能解决你的问题,请参考以下文章

动态规划(分割整数)---按平方数分割整数

数组分割问题(转载)

返回整数数组最大子数组之和

返回一个二维数整数组中最大子数组的和

LeetCode——数组篇:659. 分割数组为连续子序列

求最大子数组