Two Sum
程序员文章站
2022-07-02 20:57:23
这是leetcode的第一题,很简单,但如果要将运行时间减小到尽可能小的话,还是需要费一番心思的。 题目如下 Given an array of integers, return indices of the two numbers such that they add up to a specif ......
这是leetcode的第一题,很简单,但如果要将运行时间减小到尽可能小的话,还是需要费一番心思的。
题目如下
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9
return [0, 1].
时间复杂度为O(n)的一种解法为:
1 int* twoSum(int* nums, int numsSize, int target) 2 { 3 int index[100001] = {0}, *index_plus_one = index + 50000;//索引从index数组的第50000个元素开始,避免出现负数索引报错; 4 for (int i = 0; i < numsSize; i++) 5 { 6 int rest = target - nums[i]; 7 if (index_plus_one[rest]) 8 { 9 //如果rest这个索引已经计算过了,那么就可以得出答案 10 int *ans = malloc(sizeof(int) * 2); 11 ans[0] = i; 12 ans[1] = index_plus_one[rest] - 1; 13 return ans; 14 } 15 else 16 index_plus_one[nums[i]] = i + 1;//如果rest这个索引没有计算过,那么就将 index_plus_one[nums[i]] 标记为大于0; 17 } 18 return NULL; 19 }
上一篇: 设计模式------中介者模式
推荐阅读
-
mysql踩坑之limit与sum函数混合使用问题详解
-
Python中使用md5sum检查目录中相同文件代码分享
-
[codewars_python]Sum of Digits / Digital Root
-
基于Python中求和函数sum的用法详解
-
对python中array.sum(axis=?)的用法介绍
-
python 列表,数组和矩阵sum的用法及区别介绍
-
sum(case when then)(判断男女生的个数)
-
CMU-15445 LAB3:事务隔离,two-phase locking,锁管理器
-
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
-
对python中矩阵相加函数sum()的使用详解