我有一个数组
int a[]={1,2,2,1,3,3,3,2,1,1};
如果我想在迭代元素时将相同的元素分组(不使用任何临时变量或数组来存储或复制元素),例如,在迭代时打印相同的元素,则可以这样实现:
1
2 2
1
3 3 3
2
1 1
我可以像这样使用for循环和if条件语句:
#include <stdio.h>
int main(){
int a[]={1,2,2,1,3,3,3,2,1,1};
for(int i=0,j=0;i<sizeof(a)/sizeof(int);i++){
if(i==sizeof(a)/sizeof(int)-1 || a[i]!=a[i+1]){
for(;j<=i;j++){
printf("%d ",a[j]);
}
printf("\n");
}
}
return 0;
}
现在我想在迭代时对“不同”的元素进行分组:每个组附近没有相同的元素:
1 2
2 1 3
3
3 2 1
1
是否有可能提供与以前版本类似的解决方案?
for(int i=0,j=0;i<sizeof(a)/sizeof(int);i++){
if(...){
for(;j<=i;j++){
printf("%d ",a[j]);
}
printf("\n");
}
}
能否迭代数组并打印出结果,而不需要使用任何临时变量?
'\n'
。在结束时要小心处理。(或者反过来,检查它是否与前一个元素相同,并在开始时要小心处理)。 - BoBTFish