今天闲着没事,把这个重新看了一下。浅浅的自己实现了一个。
主要思路:
1.循环处理数据,知道指定的条件。
2.边界值得判断,主要是批次清除数据(第N个数的特殊处理,这里做最简单的置零),单次循环结束,而总体条件没有达成,这时候,要重新驱动循环,保持批第N个数的计算索引的保留。
3.内部小循环判断 。
3.1 判断是否需要计算,当为特殊值时,要跳过(我的方法把特殊值置零,所以,遇到零,不参加计算)。
3.2 判断达道批次的最大值时的,处理,索引清0 。
4 数据输出,格式化。
5.测试程序,验证结果的正确性。
6.代码优化。
NSInteger index = 0;
NSInteger rangeCounter = 3;
NSMutableArray *myInputs = [NSMutableArray arrayWithObjects:@"1",@"2",@"3", @"4",@"5",@"6",@"7",nil];
NSInteger arrayLength = [myInputs count];
NSInteger arrayLengthConst= arrayLength ;
while (arrayLength) {
for (NSInteger arrIndex = 0 ;arrIndex < arrayLengthConst ; arrIndex++) {
//NSLog(@"%@",[myInputs objectAtIndex:arrIndex]);
if ([myInputs objectAtIndex:arrIndex] != @0) {
index++;
if( index == rangeCounter) {
NSInteger currentNo = [myInputs objectAtIndex:arrIndex] ;
[myInputs replaceObjectAtIndex:arrIndex withObject:@0] ;
index = 0;
arrayLength--;
NSLog(@"%@",currentNo);
}
}
}
}