品牌网站建设 蝌蚪5小,微信分销怎么做,做企业网站用二级域名好吗,知名网站服务器来刷刷Grind 75, Blind 75作者更新版.
Leetcode1 两数之和
经典题 link 思路#xff1a;
很明显用hash table#xff0c;一开始思考遍历2遍数组#xff0c;第一遍加入hash table中#xff0c; 第二遍对每个元素看能不能找到sum target#xff0c;但思考如果有重复元素…来刷刷Grind 75, Blind 75作者更新版.
Leetcode1 两数之和
经典题 link 思路
很明显用hash table一开始思考遍历2遍数组第一遍加入hash table中 第二遍对每个元素看能不能找到sum target但思考如果有重复元素不行遍历一遍数组每次在 table 中都直接找target - nums[i]如果找到了直接 return否则把nums[i] 加入 table
时间复杂度 O ( n ) O(n) O(n) 当时写的 java 版解答 think 还有什么思路 sort two-finger先排序数组复杂度 O ( n l o g n ) O(nlogn) O(nlogn)然后用双指针一前一后遍历数组 这样total 复杂度是 O ( n l o g n ) O(nlogn) O(nlogn) class Solution {
public:vectorint twoSum(vectorint nums, int target) {int n nums.size();if (n 2) {if (nums[0] nums[1] target)return {0, 1};}unordered_mapint, int hash;for (int i 0; i n; i) {auto t hash.find(target - nums[i]);if (t ! hash.end()) {return {t-second, i};}hash[nums[i]] i;//hash.insert(make_pair(nums[i], i));}return {};}
};Leetcode20 有效的括号 括号匹配题 link 思路很简单不赘述了详见之前写过的java版代码 时间复杂度 O ( n ) O(n) O(n)
class Solution {
public:bool isValid(string s) {stackchar stack;for (char x : s) {if (x ( || x [ || x {) {stack.push(x);}else {if (!stack.empty()) {char t stack.top();if (!check(t, x))return false;elsestack.pop();}elsereturn false;}}if (stack.empty())return true;elsereturn false;}bool check(const char x, const char y) {if (x ( y ))return true;else if (x [ y ])return true;else if (x { y })return true;elsereturn false;}
};