1. 两数之和

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

该题目在力扣是第1题,地址是 https://leetcode-cn.com/problems/two-sum

下面介绍用oc改怎么做这道题

原理

利用映射,也就是oc中的字典,以数值为key,以下标为value进行保存
用target的值减去数组中正在遍历的值,以减去后的值为key去字典的allkeys中查找有没有对应的key,有就返回key所对应的value,没有就加入字典中

代码

  
  NSMutableDictionary *dic = [NSMutableDictionary dictionary];
  
  for (int i = 0; i < array.count; i++) {
    NSString *obj = array[i];
    
    NSInteger num = [obj integerValue];
    
    NSInteger needNum = target - num;
    NSString *numStr = [NSString stringWithFormat:@"%ld",needNum];
    
    if ([dic.allKeys containsObject:numStr]) {
      
      return @[dic[numStr],@(i)];
    }else{
      
      dic[obj] = @(i);
    }
    
  }
  return @[@-1,@-1];
}

调用

- (void)viewDidLoad {
  [super viewDidLoad];
 
  NSArray *nums = @[@"2", @"7", @"11", @"15"];
  NSInteger target = 22;
  
  NSArray *twoIndex = [self twoSum:nums target:target];
  
  
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并...
    程序员A君阅读 153评论 0 0
  • 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的...
    何兮_HC阅读 147评论 0 0
  • LeetCode Link: https://leetcode-cn.com/problems/two-sum D...
    快乐捣蛋鬼阅读 118评论 0 0
  • 1. 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整...
    liulei_ahu阅读 165评论 0 0
  • 描述: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返...
    叫我颜先生阅读 115评论 0 0