假设有两int 类型的数据 :int [] a0 = {0,5,7,9,11,13,18,30};
int [] a1 = {2,6,8,10,12,14,20,50};现在想要的结果是:要2个新数组 它是由:{0,5,18,20}和{2,14,20,50}就是a0[i]=a1[i-1]+1要全合并掉去5-6 7-8 9-10 11-12 13- 14合并成5-14 有什么好的算法
int [] a1 = {2,6,8,10,12,14,20,50};现在想要的结果是:要2个新数组 它是由:{0,5,18,20}和{2,14,20,50}就是a0[i]=a1[i-1]+1要全合并掉去5-6 7-8 9-10 11-12 13- 14合并成5-14 有什么好的算法
怎么将5-6 7-8 9-10 11-12 13- 14合并成5-14 ?a0[i]=a1[i-1]+1,那么当i=0时,是什么情况呢?
public static void main(String[] args) {
int[] a0 = { 0, 5, 7, 9, 11, 13, 18, 30 };
int[] a1 = { 2, 6, 8, 10, 12, 14, 20, 50 }; int[] b0 = new int[8];
int[] b1 = new int[8];
//System.out.println(a0.length == a1.length);
int j = 0, m = 0;
for (int i = 0; i < a0.length; i++) {
if (i == 0) {
b0[j++] = a0[0];
b1[m++] = a1[0];
}
if (i != 0) {
while (a0[i] == a1[i - 1] + 1) {
System.out.println("a0[" + i + "]=" + a0[i] + "\t" + "a1["
+ (i - 1) + "]=" + a1[i - 1]);
b0[j++] = a0[i];
b1[m++] = a1[i - 1];
i++;
}
b0[j++] = a0[i];
b1[m++] = a1[i];
//System.out.println(i);
}
}
//打印出结果
for (int k = 0; k < b0.length; k++) {
System.out.print(b0[k] + ",");
}
System.out.println();
for (int k = 0; k < b1.length; k++) {
System.out.print(b1[k] + ",");
}
}}这是我目前想到方法,但这样不行
int[] a1 = { 2, 6, 8, 10, 12, 14, 20, 50 };:想要的结果:int[] b0 = new int[8];//期望结果 {0,5,18,30}
int[] b1 = new int[8];//期望结果 {2,14,20,50}我都怀疑自己表达能力是不是有问题了 呵呵
int[] A = {0,5,7,9,11,13,18,20};
int[] B = {2,6,8,10,12,14,20,50};
for(int i = 1; i < A.length; i++)
{
if(A[i] == B[i-1] + 1)
{
A[i] = -1;
B[i-1] = -1;
}
}
for(int i = 0; i < A.length; i++)
{
if(A[i] != -1)
{
System.out.print(A[i] + " ");
}
}
System.out.println();
for(int i = 0; i < B.length; i++)
{
if(B[i] != -1)
{
System.out.print(B[i] + " ");
}
}
}
static class Result{
int[] a0;
int[] a1;
Result(int[] a0,int[] a1){
this.a0=a0;
this.a1=a1;
}
} public static void main(String[] args)throws Exception{
int [] a0 = {0,5,7,9,11,13,18,30};
int [] a1 = {2,6,8,10,12,14,20,50};
Result r=go(a0,a1);
a0=r.a0;
a1=r.a1;
System.out.println(Arrays.toString(a0));
System.out.println(Arrays.toString(a1));
}
public static Result go(int[] a0,int[] a1){
for(int i=1;i<a0.length;i++){
if(a0[i]==a1[i-1]+1){
a0=delete(a0,i);
a1=delete(a1,i-1);
i--;
}
}
return new Result(a0,a1);
}
public static int[] delete(int[] a ,int i){
int[] result=new int[a.length-1];
System.arraycopy(a,0,result,0,i);
if(i!=a.length-1){
System.arraycopy(a,i+1,result,i,a.length-i-1);
}
return result;
}
}
'''
Created on 2009-9-29@author: selfimpr
@blog: http://blog.csdn.net/lgg201
@mail: [email protected]
'''def compress(data1, data2):
if len(data1) != len(data2):
raise RuntimeError, 'Please give me two datas of same length'
i = 0
while i < len(data1):
while i + 1 < len(data1) and data2[i] + 1 == data1[i + 1]:
data2[i] = data2[i + 1]
del data1[i + 1]
del data2[i + 1]
i += 1
return data1, data2if __name__ == '__main__':
data1 = [0, 5, 7, 9, 11, 13, 18, 30]
data2 = [2, 6, 8, 10, 12, 14, 20, 50]
print compress(data1, data2)
/**
* @author selfimpr
* @blog http://blog.csdn.net/lgg201
* @mail [email protected]
* @param args
*/
public static void main(String[] args) {
int[] array1 = {0, 5, 7, 9, 11, 13, 18, 30};
int[] array2 = {2, 6, 8, 10, 12, 14, 20, 50};
List<Integer> result1 = new ArrayList<Integer>();
List<Integer> result2 = new ArrayList<Integer>();
int count = array1.length;
boolean flag = true;
for(int i = 0; i < count; i ++) {
if(flag) {
result1.add(array1[i]);
}
if(i + 1 < count && array2[i] + 1 == array1[i + 1]) {
flag = false;
continue ;
}
flag = true;
result2.add(array2[i]);
}
for(Integer i: result1) {
System.out.print(i + ", ");
}
System.out.println();
for(Integer i: result2) {
System.out.print(i + ", ");
}
}
小弟不才,想问一下上面的for中的什么意思啊?是简写的便利集合吗?