leetcode-第十一周
来源:互联网 发布:泥石流网络用语 编辑:程序博客网 时间:2024/06/05 17:13
239. Sliding Window Maximum
class Solution {public: vector<int> maxSlidingWindow(vector<int>& nums, int k) { deque<int> q; vector<int> ret; for (int i = 0; i < nums.size(); i++) { while (!q.empty() && nums[i] >= nums[q.back()]) q.pop_back(); q.push_back(i); while (i >= k && i - k >= q.front()) q.pop_front(); if (i >= k - 1) ret.push_back(nums[q.front()]); } return ret; }};
240. Search a 2D Matrix II
class Solution {private: int nrow, ncol;public: bool searchMatrix(vector<vector<int>>& matrix, int target) { nrow = matrix.size(); if (nrow == 0) return false; ncol = matrix[0].size(); if (ncol == 0) return false; for (int r = 0; r < nrow; r++) { vector<int> &tmp = matrix[r]; int ll = 0, rr = ncol - 1; while (ll <= rr) { int mid = ll + (rr - ll) / 2; if (tmp[mid] > target) rr = mid - 1; else if (tmp[mid] == target) return true; else ll = mid + 1; } } return false; }};
241. Different Ways to Add Parentheses
/** * 思路:tokenize+DFS暴力运算符先后顺序(permutation of operators) */class Solution {private: vector<string> tokenize(string &input) { stringstream ss(input); vector<string> ret; int tmp; ss >> tmp; ret.push_back(to_string(tmp)); while (!ss.eof()) { char c; ss >> c >> tmp; string str; str.push_back(c); ret.push_back(str); ret.push_back(to_string(tmp)); } return ret; } int calculate(int lhs, string &op, int rhs) { if (op == "+") return lhs + rhs; else if (op == "-") return lhs - rhs; else if (op == "*") return lhs * rhs; } // [left, right] vector<int> dfs(vector<string> &tokens, int left, int right) { if (left + 1 == right || left > right) return vector<int>(); // 非法输入 if (left == right) return vector<int>{stoi(tokens[left])}; // 终止条件 vector<int> ret; for (int i = left + 1; i < right; i += 2) { vector<int> ll = dfs(tokens, left, i - 1); vector<int> rr = dfs(tokens, i + 1, right); for (auto l: ll) { for (auto r: rr) { int val = calculate(l, tokens[i], r); ret.push_back(val); } } } return ret; }public: vector<int> diffWaysToCompute(string input) { vector<string> tokens = tokenize(input); vector<int> ret = dfs(tokens, 0, tokens.size() - 1); //for (auto t: tokens) cout << t << endl; sort(ret.begin(), ret.end()); //ret.erase(unique(ret.begin(), ret.end()), ret.end()); return ret; }};
0 0
- leetcode-python 第十一周
- leetcode-第十一周
- 第十一周LeetCode
- 第十一周LeetCode
- 第十一周LeetCode
- LeetCode题解 第十一周
- 第十一周LeetCode算法题两道
- 补第十一周Leetcode 博客
- leetcode【第十一周】旋转链表
- 第十一周:[Leetcode]474. Ones and Zeroes
- 第十一周:[Leetcode]139. Word Break
- 第十一周 leetcode 135. Candy(Hard)
- Leetcode 392.Is Subsequence(第十一周作业)
- 第十一周
- 第十一周
- 第十一周
- 第十一周
- 第十一周
- 【转载】如果你看不懂KMP算法,那就看一看这篇文章( 绝对原创,绝对通俗易懂)
- ElasticSearch简介与安装
- 案例分享之DDR拓扑结构的选择
- eclipse启动卡死的解决方法 org.eclipse.mylyn.tasks.ui
- 欢迎使用CSDN-markdown编辑器
- leetcode-第十一周
- 归并排序
- 利用HorizontalScrollView自己写一个viewPager指示器
- 阻抗匹配的简单理解
- 二分贪心-O
- 用10行代码自己写个人脸识别程序
- HTML学习笔记_(1)
- 网络编程应用:基于TCP协议【实现对象传输】--练习
- 微信上传图片