力扣题库1. 两数之和

  1. 两数之和
    给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那 两个 整数,并返回它们的数组下标。
    你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
    你可以按任意顺序返回答案。

OC版本

- (NSArray *)twoSum:(NSArray *)nums target:(NSInteger)target {
    
    NSMutableDictionary *mutDic = [NSMutableDictionary dictionary];
    
    __block NSArray *result = nil;
    [nums enumerateObjectsUsingBlock:^(NSNumber * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        NSNumber *num = mutDic[@(target - obj.integerValue)];
        if (num) {
            result = @[num, @(idx)];
            *stop = YES;
        }else {
            mutDic[obj] = @(idx);
        }
    }];
    return result;
}

测试代码:

NSArray *testArr = [NSArray arrayWithObjects:@(2),@(7),@(11), @(15), nil];
    NSArray *resu = [self twoSum:testArr target:18];
    if (resu) {
        NSLog(@"找到结果:%ld, %ld", [resu[0] integerValue], [resu[1] integerValue]);
    }

Swift版本

class Solution {
    func twoSum(_ nums: [Int], _ target: Int) -> [Int] {
        var map = [Int : Int]()
        
        for (i, e) in nums.enumerated() {
            if let u = map[target - e] {
                return [u, i]
            }else {
                map.updateValue(i, forKey: e)
            }
        }
        
        return []
    }
}

你可能感兴趣的:(数据结构与算法,leetcode,算法,职场和发展)