LeetCode:兩數之和
阿新 • • 發佈:2018-11-12
https://leetcode-cn.com/problems/two-sum/description/
給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。
你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。
示例:
給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]
/** * Note: The returned array must be malloced, assume caller calls free(). */ int* twoSum(int* nums, int numsSize, int target) { int i,j; int *ans= (int *)malloc(sizeof(int)*2); //申請所需空間 for(i=0;i<numsSize;i++) { for(j=0;j<i;j++) if(nums[i]+nums[j]==target) //找到兩數之和為target { ans[0]=j; ans[1]=i; //將數存入 return ans; } } return NULL; //沒有找到答案返回空 }
複雜度分析:
-
時間複雜度:O(n2)O(n^2)O(n2), 對於每個元素,我們試圖通過遍歷陣列的其餘部分來尋找它所對應的目標元素,這將耗費 O(n)O(n)O(n) 的時間。因此時間複雜度為 O(n2)O(n^2)O(n2)。
-
空間複雜度:O(1)O(1)O(1)。