diff --git a/Week_02/id_150/leetcode_609_BJ001-1904150.py b/Week_02/id_150/leetcode_609_BJ001-1904150.py new file mode 100644 index 00000000..7a28e556 --- /dev/null +++ b/Week_02/id_150/leetcode_609_BJ001-1904150.py @@ -0,0 +1,23 @@ +class Solution(object): + def findDuplicate(self, paths): + """ + :type paths: List[str] + :rtype: List[List[str]] + """ + dd = {} + for path in paths: + plist = path.split(" ") + prefix = plist[0]; + for i in range(1, len(plist)): + route = prefix + "/" + plist[i].split("(")[0] + content = plist[i].split("(")[1].split(")")[0] + if content not in dd: + dd[content] = [] + dd[content].append(route) + + res = [] + for key in dd: + if len(dd[key]) > 1: + res.append(dd[key]) + + return res diff --git a/Week_02/id_150/leetcode_671_BJ001-1904150.cpp b/Week_02/id_150/leetcode_671_BJ001-1904150.cpp new file mode 100644 index 00000000..d12f148c --- /dev/null +++ b/Week_02/id_150/leetcode_671_BJ001-1904150.cpp @@ -0,0 +1,31 @@ +/** + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode(int x) : val(x), left(NULL), right(NULL) {} + * }; + */ + +class Solution { +public: + int findSecondMinimumValue(TreeNode* root) { + if(root == NULL && root->left == NULL) + return -1; + long long ans = findmin(root, root->val); + return ans == 2147483648 ? -1 : ans; + } + + long long findmin(TreeNode* root, int val) { + if(root) { + if(root->val > val) { + return root->val; + } + return min(findmin(root->left, val), findmin(root->right, val) ); + } + return 2147483648; + } +}; + + diff --git a/Week_02/id_150/leetcode_692_BJ001-1904150.cpp b/Week_02/id_150/leetcode_692_BJ001-1904150.cpp new file mode 100644 index 00000000..105e6bdb --- /dev/null +++ b/Week_02/id_150/leetcode_692_BJ001-1904150.cpp @@ -0,0 +1,43 @@ +typedef pair P; +struct cmp +{ + bool operator()(const P p1, const P p2) + { + if(p1.second != p2.second) + return p1.second < p2.second; + return p1.first > p2.first; + } + +}; + +class Solution { +public: + vector topKFrequent(vector& words, int k) { + vector ans; + + map mp; + map :: iterator iter; + for(int i = 0; i < words.size(); i++) { + string tmp = words[i]; + if(mp.find(tmp) != mp.end()) { + mp[tmp]++; + } else { + mp[tmp] = 1; + } + } + + priority_queue, cmp> que; + for(iter = mp.begin(); iter != mp.end(); iter++) { + que.push(P(iter->first, iter->second)); + } + + while(ans.size() != k) { + P tmp = que.top(); + ans.push_back(tmp.first); + que.pop(); + } + + return ans; + } +}; +