演算法筆記-陣列之選數字:Picking Numnbers
阿新 • • 發佈:2019-01-06
問題描述:
給定一個由0到100之間的整陣列成的陣列,然後從其中選出一定數量的整陣列成新的陣列,要求新的陣列內任意兩個數之間的絕對差小於或者等於1
Sample:
***** Input:
***** @[@(4),@(2),@(3),@(2),@(3),@(5),@(6),@(1),@(0)]
***** Output:
***** 4
思路:統計0到100內每個陣列出現的次數,找到每相鄰兩個數的和,其中最大的就是答案。
NSArray *array = @[@(4),@(2),@(3),@(2),@(3),@(5),@(6),@(1),@(0)]; NSMutableDictionary *parameter = [NSMutableDictionary dictionary]; NSInteger countNumber = 0; // 統計每個數字的次數 for (int i = 0; i < 100; i++) { [parameter setObject:@(0) forKey:[NSString stringWithFormat:@"%d",i]]; } for (int i = 0; i < array.count; i++) { NSString *index = [NSString stringWithFormat:@"%d",[array[i] intValue]]; parameter[index] = @([parameter[index] intValue] + 1); } // 取出相鄰和最大 for (int i = 0; i < 100; i++) { NSString *index = [NSString stringWithFormat:@"%d",i]; NSString *indexNext = [NSString stringWithFormat:@"%d",i + 1]; if ([parameter[index] intValue] + [parameter[indexNext] intValue] > countNumber) { countNumber = [parameter[index] intValue] + [parameter[indexNext] intValue]; } }