2021-08-01から1ヶ月間の記事一覧

387. First Unique Character in a String

一文字づつmapに入れて、後から1文字しか無いものを確認する class Solution { public: int firstUniqChar(string s) { unordered_map<char, int> m; for(int i=0; s.length()>i; i++){ if(m.find(s[i]) != m.end()){ m[s[i]] ++; } else{ m[s[i]]=1; } } for(int i =0;</char,>…

929. Unique Email Addresses

setを思いつければ簡単。 class Solution { public: int numUniqueEmails(vector<string>& emails) { set<string> num; for(string email: emails){ string checkedEmail; for(int i=0; email[i]!='@'; i++ ){ if(email[i] == '+'){ break; } else if(email[i] == '.'){ cont</string></string>…

104. Maximum Depth of Binary Tree

最後に+1が必要だった。問題に二分木が書いてあって再帰をすぐに適応できた。 class Solution { public: int maxDepth(TreeNode* root) { if(!root){ return 0; } return max(maxDepth(root->left), maxDepth(root->right))+1; } };

349. Intersection of Two Arrays

setは重複を許可しないので、一意の値にしたいときに便利。 class Solution { public: vector<int> intersection(vector<int>& nums1, vector<int>& nums2) { set<int> s1; set<int> s2; for(auto val:nums1){ s1.insert(val); } for(auto val:nums2){ s2.insert(val); } vector<int> out; </int></int></int></int></int></int>…

一個ずつ順番に試すブルートフォースはすぐに思いついた。しかし、これだとO(n2)の時間がかかる。 class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { for(int i = 0; i</int></int>

一個ずつ順番に試すブルートフォースはすぐに思いついた。しかし、これだとO(n2)の時間がかかる。 class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { for(int i = 0; i</int></int>

一個ずつ順番に試すブルートフォースはすぐに思いついた。しかし、これだとO(n2)の時間がかかる。 class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { for(int i = 0; i</int></int>

703. Kth Largest Element in a Stream

heapは初めて使用した。以下のdiscussを読んで真似した。大きい方から3つを残すという発想はなかった。 https://leetcode.com/problems/kth-largest-element-in-a-stream/discuss/596093/C%2B%2B-solution-with-understandable-explaination class KthLarges…

206. Reverse Linked List

stackに入れるのはすぐに思いつくが、取り出しでつまずいた。アドレスを意識できないと解けない問題だった。難易度はeasyだけど、自分はアドレスが意識できていないのがよくわかった。 /** * Definition for singly-linked list. * struct ListNode { * int …

20. Valid Parentheses

最後にカッコが残った場合にどうすれば良いのかと思ったら、return emptyで良いのか。空ならtrue、残っていればfalse。 class Solution { public: bool isValid(string s) { stack<char> ch; for(int i = 0; s.length()>i; i++){ if(s[i] == '(' || s[i] == '[' ||</char>…