Java 将非连续值的整数数组拆分为几个连续的整数数组
使相邻元素结合在一起的方法 如何将“大”分为以下几部分:Java 将非连续值的整数数组拆分为几个连续的整数数组,java,Java,使相邻元素结合在一起的方法 如何将“大”分为以下几部分: int[] big = {1,2,3,5,11,12,13,25,26}; 我从以下代码开始: {{1,2,3},{5},{11,12,13},{25,26}} 公共列表getR(){ 整数[]大={1,2,3,5,11,12,13,25,26}; 列表a=新的ArrayList(); 对于(inti=0;i我可以给你伪代码 迭代数组 将第一个元素添加到另一个数组并前进一步 查看当前元素是否为上一个数字+1 如果是,则添加到第二个数组
int[] big = {1,2,3,5,11,12,13,25,26};
我从以下代码开始:
{{1,2,3},{5},{11,12,13},{25,26}}
公共列表getR(){
整数[]大={1,2,3,5,11,12,13,25,26};
列表a=新的ArrayList();
对于(inti=0;i我可以给你伪代码
迭代数组
将第一个元素添加到另一个数组并前进一步
查看当前元素是否为上一个数字+1
如果是,则添加到第二个数组
否则,创建一个新数组并添加到其中
重复步骤3到步骤5,直到结束
现在你有了数组。如果它所有的东西都是连续的,那么你基本上已经为第一个数组创建了一个副本。我可以给你伪代码
迭代数组
将第一个元素添加到另一个数组并前进一步
查看当前元素是否为上一个数字+1
如果是,则添加到第二个数组
否则,创建一个新数组并添加到其中
重复步骤3到步骤5,直到结束
现在您有了数组。如果它的所有内容都是连续的,那么您实际上已经为第一个数组创建了一个副本。您得到的数组是一个二维数组,Java中允许如下内容
public List<Integer> getR(){
Integer[] big = {1,2,3,5,11,12,13,25,26};
List<Integer> a = new ArrayList<Integer>();
for(int i=0;i<big.length;i++){
if(big[i]==big[i+1]-1){
continue;
}else{
//...
}
//...
}
//...
}
您可以利用这些信息来形成新的数组
更新
int[][] split = new int[4][];
split[0] = new int[3];
split[1] = new int[1];
split[1] = new int[3];
split[1] = new int[2];
//note: you can use variables instead integer values (like 4, 3, 2, ...) here
List result=new ArrayList();
列表电流=空;
for(int i=0;i
生成的数组是一个二维数组,Java中允许使用以下内容
public List<Integer> getR(){
Integer[] big = {1,2,3,5,11,12,13,25,26};
List<Integer> a = new ArrayList<Integer>();
for(int i=0;i<big.length;i++){
if(big[i]==big[i+1]-1){
continue;
}else{
//...
}
//...
}
//...
}
您可以利用这些信息来形成新的数组
更新
int[][] split = new int[4][];
split[0] = new int[3];
split[1] = new int[1];
split[1] = new int[3];
split[1] = new int[2];
//note: you can use variables instead integer values (like 4, 3, 2, ...) here
List result=new ArrayList();
列表电流=空;
for(int i=0;i
这里有一种按连续大小对数组排序的方法,还有一种主要的测试方法:
List<List<Integer>> result = new ArrayList<List<Integer>>();
List<Integer> curr = null;
for (int i = 0; i < big.length; i++) {
if(i == 0 || (big[i] != big[i-1]+1)) {
//if the current element is the first element or doesn't satisfy the condition
curr = new ArrayList<Integer>(); //create a new list and set it to curr
result.add(curr); //add the newly created list to the result list
}
curr.add(big[i]); //add current element to the curr list
}
以下是按连续大小对数组排序的方法,以及测试该数组的主要方法:
List<List<Integer>> result = new ArrayList<List<Integer>>();
List<Integer> curr = null;
for (int i = 0; i < big.length; i++) {
if(i == 0 || (big[i] != big[i-1]+1)) {
//if the current element is the first element or doesn't satisfy the condition
curr = new ArrayList<Integer>(); //create a new list and set it to curr
result.add(curr); //add the newly created list to the result list
}
curr.add(big[i]); //add current element to the curr list
}
import java.util.ArrayList;
导入java.util.array;
导入java.util.List;
公共类测试{
公共列表getR(){
整数[]大={1,2,3,5,11,12,13,25,26};
列表a=Arrays.asList(大);
List all=new ArrayList();
对于(int i=0;iimport java.util.ArrayList;
导入java.util.array;
导入java.util.List;
公共类测试{
公共列表getR(){
整数[]大={1,2,3,5,11,12,13,25,26};
列表a=Arrays.asList(大);
List all=new ArrayList();
对于(int i=0;i有另一个基于Mena答案的答案
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class testSth {
public List<List<Integer>> getR(){
Integer[] big = {1,2,3,5,11,12,13,25,26};
List<Integer> a = Arrays.asList(big);
List<List<Integer>> all = new ArrayList<List<Integer>>();
for(int i=0;i<a.size();i++){
List<Integer> b = new ArrayList<Integer>();
if(a.get(i)==a.get(i+1)-1){
b.add(a.get(i));
}else{
b.add(a.get(i));
all.add(b);
}
}
return all;
}
}
int[]标志=新的int[big.length];
int j=0;
标志[0]=0;
对于(inti=1;i,根据Mena的答案,还有另一个答案
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class testSth {
public List<List<Integer>> getR(){
Integer[] big = {1,2,3,5,11,12,13,25,26};
List<Integer> a = Arrays.asList(big);
List<List<Integer>> all = new ArrayList<List<Integer>>();
for(int i=0;i<a.size();i++){
List<Integer> b = new ArrayList<Integer>();
if(a.get(i)==a.get(i+1)-1){
b.add(a.get(i));
}else{
b.add(a.get(i));
all.add(b);
}
}
return all;
}
}
int[]标志=新的int[big.length];
int j=0;
标志[0]=0;
对于(int i=1;iIs,大数组始终按排序顺序排列?是的,它始终按排序顺序排列。:-)唯一的条件是将它们拆分为连续元素。:-)必须有更多的标准,否则你不必做任何事情。你需要的拆分数量是最小的,还是每个块的大小是最大的?@TimBender-同意WSDL部分不重要……但是如果这个问题有额外的要求,就应该提出来。我指的是她说的那部分:“它需要我提供最小和最大int作为参数“。老实说,我不明白她是什么意思,但这似乎是问题的重要部分。我不觉得我在这里骚扰过任何人,但我会在将来考虑你关于潜在家庭作业问题的话。大数组总是按顺序排列吗?是的,它总是按顺序排列的。:-)唯一的标准是将它们拆分为连续元素。:-)必须有更多的标准,否则你不必做任何事情。你需要的拆分数量是最小的,还是每个块的大小是最大的?@TimBender-同意WSDL部分不重要……但是如果这个问题有额外的要求,就应该提出来。我指的是她说的那部分:“它需要我提供最小和最大int作为参数".说实话,我不明白她的意思,但这似乎是问题的一个重要部分。我不觉得我在这里骚扰过任何人,但我会在将来考虑你关于潜在家庭作业问题的话。+1感谢提供伪代码,而不是提供复制/粘贴解决方案谢谢你,Vaishak。我同意非常感谢。如果我能得到这方面的Java代码,我将不胜感激。非常感谢。:-)这听起来像是在做我的家庭作业S@Nancy-针对此类问题(OP没有表现出任何努力),最好不要提供实际的代码。你显然是一个希望有人帮你做作业的学生。这不是本网站的重点。@TimBender即使如此,“我想把这个转换成这个,给我代码”仍然不是网站的目的,是吗?Vaishak的伪代码在当前场景中是完美的。如果OP无法处理数组上的迭代,在他/她获得基本知识之前,他/她可能不应该在任何应用程序上做任何事。+1用于提供伪代码,不提供复制/粘贴解决方案谢谢你,Vais