[Java]1.两数之和 - LeetCode
思路一:暴力法(两层For循环) 时间复杂度:O(n^2) 对于每个元素,我们试图通过遍历数组的其余部分来寻找它所对应的目标元素,这将耗费 O(n) 的时间。因此时间复杂度为 O(n^2)。 空间复杂度:O(1) 原理:遍历每个元素 xx,并查找是否存在一个值与 target - x相等的目标元素 /** * Note: The returned array must be malloced, assume caller calls free(). */ int * twoSum ( int * nums , int numsSize , int target ){ static int result [ 2 ]= { 0 }; for ( int i = 0 ; i < numsSize ; i = i ++){ for ( int j = i + 1 ; j < numsSize ; j = j ++){ //【trick】“int j=i+1;”而非“int j=0” if ( nums [ i ]+ nums [ j ]== target ){ result [ 0 ] = i ; result [ 1 ] = j ; return result ; } } } return result ; } 思路二:两遍哈希表 时间复杂度:O(n) 把包含有 n 个元素的列表遍历两次