欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Leetcode1.两数之和

时间:2023-06-01

暴力求解:

class Solution {public: vector twoSum(vector& nums, int target) { int i, j; for (i = 0; i < nums.size()-1; i++) { for (j = i+1; j < nums.size(); j++) { if (nums[i] + nums[j] == target) { return { i,j }; } } } return {}; };};

哈希表:

class Solution {public: vector twoSum(vector& nums, int target) { mapa; vectorb(2, -1); for (int i = 0; i < nums.size(); i++) { if (a.count(target - nums[i]) > 0) { b[0] = a[target - nums[i]]; b[1] = i; break; } a[nums[i]] = i; } return b; };};

遇到问题:

vector<存放对象的类型> 命名
eg:

vector twoSum;

定义和初始化vector对象
eg:

vector v(n,val);

即v中包括n个重复的元素,每个元素都是val

vector twoSum(vector& nums, int target)

向vector中添加元素
成员函数:push_back()
eg;

string word;vector text;while (cin >> word){text.push_back(word);}

其他vector常用操作
v.empty(); 若vector中不含元素,返回真;否则返回假
v.size(); 返回v中元素个数
v.[n]; 返回v中第n个位置上元素的引用
v1 = v2; 用v2中元素的拷贝替换v1中的元素
v1 = {a,b,c…};用列表中的元素拷贝替换v1中的元素
v1 == v2; v1和v2相等当且仅当它们的元素数量相同且对应位置的元素值都相同
v1 != v2;
<,<=,>,>= 以字典顺序进行比较

报错error: non-void function does not return a value in all control paths [-Werror,-Wreturn-type]
}
因为if有返回值 没有写else了
详细参考错误之处与如何改正

哈希查找的时间复杂度为 O(1)

map提供一个很常用的功能,那就是提供key-value的存储和查找功能

.count() 返回指定元素出现的次数, (帮助评论区理解: 因为key值不会重复,所以只能是1 or 0)

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。