LeetCode
历尽千帆_SLAM
HIT
展开
-
【Leetcode207】Course Schedule
有向判断是否存在环:策略:依次寻找图中入度为0的节点,代表这个课没有别的依赖,不需要先修别的课程,然后,将节点踢掉,同时,依赖于它的其他课程入度都-1.规定:prerequisites中的[i, j]代表i依赖j,j是i的先修,j指向i,而在邻接表中,存在第j行中,也就是说邻接表的第j个元素中保存着j所指向的节点,即j是谁的先修课程,方便将它的children节点入度-1.usin...原创 2020-03-29 14:20:14 · 88 阅读 · 0 评论 -
【Leetcode208】Implement Trie (Prefix Tree)
方法一:笨方法,搞两个unordered_set保存所有的word和word的prefix,可以通过,但是时间复杂度太高了;方法二:字典树,重在如何抽象出树的nodeclass TrieNode{public: bool isWord; TrieNode* children[26]; TrieNode(){ isWord = false...原创 2020-03-25 23:17:59 · 104 阅读 · 0 评论 -
【Leetcode200】Number of Islands
搜索四联通区域:方法一:之前是这么写的:记录每个region的root,最后根据真正的root的个数来判断,这是纯循环的方式,效率不是很高5%.//class Solution {//public:// int findRoot(vector<int> root, int region){// while(root[region] != reg...原创 2020-03-22 13:53:00 · 129 阅读 · 0 评论 -
【Leetcode152】Maximum Product Subarray
Runtime:4 ms, faster than87.06%ofC++online submissions forMaximum Product Subarray.Memory Usage:7 MB, less than100.00%ofC++online submissions forMaximum Product Subarray.典型的动态规划,因为起点和终...原创 2020-03-21 20:05:49 · 110 阅读 · 0 评论 -
【Leetcode148】Sort List
用递归实现的归并排序,能通过,但是感觉效果不是很好,/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solut...原创 2020-03-21 18:39:35 · 84 阅读 · 0 评论 -
【Leetcode146】 LRU Cache
//高效的get决定了需要有hash //每次操作都要将被操作的数的最近访问信息进行调整,涉及随机位置的变换,即从中间移动到队首,需要list在o(1)中移动节点 class LRUCache { public: list<pair<int, int>> l_; unordered_map<int, list<pair<int...原创 2020-03-21 14:05:45 · 74 阅读 · 0 评论 -
【Leetcode142】Linked List Cycle II
快慢指针,慢指针走了d+s1的时候,快指针走了d+s1+s2+s1正好跟满指针重合,其中s1+s2就是周长,此时快指针的总路程正好也是慢指针的2倍,即:d+s1+s2+s1 = 2×(d+s1)s2 = d即从起点和第一次相遇点同时出发,必然在入环处相遇。/** * Definition for singly-linked list. * struct ListNode...原创 2020-03-20 00:23:49 · 64 阅读 · 0 评论 -
【Leetcode139】Word Break
祥和是一个动态规划问题,原因在于每个地方都有可能作为分割点,在“可以”作为分割点的情况下,不一定就要在这里分割,例如:一直s="aaaaaaa"共7个'a',字典{“aaa", "aaaa"}。如果把前6个a分成了2组”aaa",那么剩下的一个就分割不了,所以说这里要讨论的是到index处可不可以分割成完整的,再例如index1, index2, index3代表3个位置的索引,如果想要知...原创 2020-03-19 00:18:40 · 192 阅读 · 0 评论 -
【Leetcode392】Is Subsequence
如果用递归或许可以解决,但是,100也不是个小数字。考虑使用双指针,一次循环来解决:class Solution {public: bool isSubsequence(string s, string t) { for(size_t i = 0, j = 0; i < s.length(); ++i, ++j){ while(t[j...原创 2020-03-15 19:23:58 · 79 阅读 · 0 评论 -
【Leetcode387】First Unique Character in a String
class Solution {public: int firstUniqChar(string s) { vector<int> v(26, -1); for(size_t index = 0; index < s.length(); ++index){ if(v[s[index]-'a'] == -1){ ...原创 2020-03-15 18:31:08 · 76 阅读 · 0 评论 -
【Leetcode383】Ransom Note
class Solution {public: bool canConstruct(string ransomNote, string magazine) { std::vector<int> bag(26, 0); for(const auto& c : magazine){ bag[c-'a']++; ...原创 2020-03-15 18:06:31 · 994 阅读 · 0 评论 -
【Leetcode371】 Sum of Two Integers
/*任何两个有符号数,在计算机内部都是用补码表示的,特点就是无论是正数还是负数,补码就按照:* 0+0=0, 0+1=1, 1+0=1, 1+1=10这种最朴素的方法计算,最前面的符号位也是如此,同时最前面溢出的就不要了* 最后再把补码变成源码,就得到了我们认知上的数(计算机内部不需要这一步,补码就可以了)* 考虑未操作的加法,无外乎本位加法,再和进位运算* 本位加法:* 0+...原创 2020-03-15 17:57:19 · 63 阅读 · 0 评论 -
【Leetcode367】Valid Perfect Square
笨方法就是类似于二分法的试,时间复杂度肯定很高。所以,从数学的角度,可能有解决方法:平方数一定是一系列奇数1,3,5,7...的加和,原因么,参考https://www.cnblogs.com/grandyang/p/5619296.htmlclass Solution {public: bool isPerfectSquare(int num) { if...原创 2020-03-14 00:52:28 · 69 阅读 · 0 评论 -
【Leetcode350】Intersection of Two Arrays II
Runtime:4 ms, faster than99.18%ofC++online submissions forIntersection of Two Arrays II.Memory Usage:7.9 MB, less than100.00%ofC++online submissions forIntersection of Two Arrays II.跟3...原创 2020-03-14 00:18:16 · 87 阅读 · 0 评论 -
【Leetcode349】Intersection of Two Arrays
must be unique让我想到了set,有序,而且自动unique,没想到可以通过vector初始化,不用一个个循环insert借助有序的特点,可以挨个位置的比较class Solution {public: vector<int> intersection(vector<int>& nums1, vector<int>&am...原创 2020-03-13 23:48:50 · 74 阅读 · 0 评论 -
【Leetcode342】Power of Four
直接循环的做法就不说了从二进制入手,很明显,对于4的幂,1只允许出现一次,而且是在偶数位上。操作上就是用1<<的方法就挨个获得该位置上的数,我的问题主要是:判断条件我已开始写的:if(num & (1<<index)==1)这是错的,==优先级为9,&优先级为10,所以并不会如期望的那样先做&再做==,这个点错过很多次了。clas...原创 2020-03-13 00:55:17 · 73 阅读 · 0 评论 -
【Leetcode299】Bulls and Cows
有个小细节,同样位置同样的数,不算作cow。计数排序的思想,因为对于cows,不管出现在哪儿,我只想知道每个数字在两个字符串中出现的最少次数。class Solution {public: string getHint(string secret, string guess) { vector<int> secret_count(10, 0); ...原创 2020-03-12 00:51:43 · 134 阅读 · 0 评论 -
【Leetcode292】Nim Game
思路真是一瞬间的事第一反应是走台阶那种题目,也就是说用递归?然后想可能从数学的角度有更好的方法,找规律试试,果然class Solution {public: bool canWinNim(int n) { return n%4 != 0 ; }};...原创 2020-03-11 00:13:25 · 73 阅读 · 0 评论 -
【Leetcode290】Word Pattern
Runtime:0 ms, faster than100.00%ofC++online submissions forWord Pattern.Memory Usage:7.9 MB, less than100.00%ofC++online submissions forWord Pattern.思路简单,主要是逻辑清楚,想的要全面,可能也没有什么简便方法了c...原创 2020-03-11 00:00:12 · 82 阅读 · 0 评论 -
【Leetcode263】Ugly Number
自己的数学功底太差了,首先想到的是一个个试,从235开始,看后面其他的质数能不能整除这个num;看答案,一直除以2, 3, 5,看最后剩下的是不是1,那我就有个疑问,万一剩下的是个合数,也不能说明啥呀但实际上是我太傻了,合数肯定可以继续分解,直到全部都是质数,如果可以分解出235之前就已经分解出来了也就是说,任何一个数肯定可以分解成,全质数的乘积,只要判断被2,3,5整除后还会不会剩...原创 2020-03-10 23:08:21 · 94 阅读 · 0 评论 -
【Leetcode168】Excel Sheet Column Title
Runtime:0 ms, faster than100.00%ofC++online submissions forExcel Sheet Column Title.Memory Usage:7.4 MB, less than100.00%ofC++online submissions forExcel Sheet Column Title.class Solu...原创 2020-03-10 00:00:16 · 97 阅读 · 0 评论 -
【Leetcode258】Add Digits
首先找规律;0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 170 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8规律是1~9的9进制循环,直接%9算的话:1~9分别对应:1 2 3 4 5 6 7 8 0而不是我们想要的:1 2 3 4 5 ...原创 2020-03-09 23:06:35 · 71 阅读 · 0 评论 -
【Leetcode257】Binary Tree Paths
递归法,比较慢,但是可以解决问题。一个点:给定val,求对应的string,如果是非负整数,可以用'0'+val;如果有可能是负数或者其他数,to_string(val);拓展:stoi(s,p,q)把s从第p位转换为q进制的数stod, stof;此外c含有atoi等/** * Definition for a binary tree node. * st...原创 2020-03-08 23:18:43 · 88 阅读 · 0 评论 -
【Leetcode242】 Valid Anagram
Runtime:8 ms, faster than98.22%ofC++online submissions forValid Anagram.Memory Usage:8.6 MB, less than100.00%ofC++online submissions forValid Anagram.本质上就是个排序算法,首先冒泡时间超时,因为字符串非常长,时间复杂度...原创 2020-03-08 18:40:59 · 96 阅读 · 0 评论 -
【Leetcode237】Delete Node in a Linked List
没有给定head,唯一的办法就是用next复制一份next,然后把next删掉。如图为了删掉B,先用B复制C,再把C删掉。这里C如果不删掉,会有内存泄漏。题目是删掉B,而B对应的物理空间其实并没有清空,只是在逻辑上删除了:A -> B -> C -> D ...原创 2020-03-08 18:01:53 · 72 阅读 · 0 评论 -
【Leetcode234】Palindrome Linked List
这里用了三种方法:list, stack,和快慢指针结合stack,前两个方法速度都很慢,最后一个快了很多,代码能力太差,有时间重写一遍。另外还有原地的o(1)的实现,reverse,还不会,太饿了。参考:https://www.cnblogs.com/grandyang/p/4635425.html/** * Definition for singly-linked lis...原创 2020-03-08 14:07:04 · 71 阅读 · 0 评论 -
【Leetcode231】Power of Two
class Solution {public: bool isPowerOfTwo(int n) { if(n < 1) return false; // while(n%2 == 0){ // n /= 2; // } // return n==1; ...原创 2020-03-08 03:09:31 · 75 阅读 · 0 评论 -
【Leetcode205】Isomorphic Strings
class Solution {public: bool isIsomorphic(string s, string t) { vector<bool> has_been_confirmed(s.length(), false); string different_chars = ""; for(size_t index = ...原创 2020-03-08 02:52:21 · 72 阅读 · 0 评论 -
【Leetcode203】Remove Linked List Elements
2020.3.8更新Runtime:20 ms, faster than99.97%ofC++online submissions forRemove Linked List Elements.Memory Usage:12.7 MB, less than5.66%ofC++online submissions forRemove Linked List Eleme...原创 2020-03-08 01:13:11 · 78 阅读 · 0 评论 -
【Leetcode202】Happy Number
非常中规中矩的做法,没有参考其他人怎么做的,有时间看看Runtime:4 ms, faster than68.02%ofC++online submissions forHappy Number.Memory Usage:7.4 MB, less than100.00%ofC++online submissions forHappy Number.class...原创 2020-03-06 01:12:07 · 82 阅读 · 0 评论 -
【Leetcode461】Hamming Distance
不知道为什么先前这种通不过class Solution {public: int hammingDistance(int x, int y) { int answer = 0; int tmp = x^y; int count = 31; while(count--){ // if(x&...原创 2020-03-05 01:16:22 · 75 阅读 · 0 评论 -
【Leetcode190】Reverse Bits
还是太不熟悉了,考虑移动的事,首先想到的事怎么转换成string,这是完全没必要的啊,uint32_t就可以直接<<, >>很直接的想法,原bits自右向左遍历,新数组自左向右填充数字为了遍历,可以直接用&1获取最后一位,配合>>1,始终让自己想要的那一位在最后对新bits的操作也是,先左移预置新的要操作的这一位为0,根据需要再变换成1,变换...原创 2020-03-05 00:29:02 · 70 阅读 · 0 评论 -
【Leetcode172】Factorial Trailing Zeroes
这实际上是一个数学问题:,,,,5,,,,,2*5,,,,,3*5,,,,,4*5,,,,,5*5,每一次连续的5个数的阶乘中必然至少存在一个5和2的组合,在此基础上,每一次连续的25个数的阶乘中还会多出来一个5(5*5=25),同理,每一次连续的125个数的阶乘中还会再多出来一个5(5*5*5=125),由于2的数量很多,所以只要数清5的个数就对了。class Solu...原创 2020-03-03 23:43:12 · 85 阅读 · 0 评论 -
【Leetcode160】Intersection of Two Linked Lists
比较慢,期待新的解法;/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ...原创 2019-12-25 20:51:51 · 74 阅读 · 0 评论 -
【Leetcode141】Linked List Cycle
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: // bool has...原创 2019-12-23 00:37:33 · 65 阅读 · 0 评论 -
【Leetcode112】Path Sum
Runtime:12 ms, faster than76.30%ofC++online submissions forPath Sum.Memory Usage:19.8 MB, less than97.92%ofC++online submissions forPath Sum./** * Definition for a binary tree nod...原创 2019-12-17 21:35:05 · 74 阅读 · 0 评论 -
【Leetcode107】 Binary Tree Level Order Traversal II
Runtime:8 ms, faster than67.22%ofC++online submissions forBinary Tree Level Order Traversal II.Memory Usage:13.6 MB, less than100.00%ofC++online submissions forBinary Tree Level Order Tr...原创 2019-12-09 01:15:23 · 170 阅读 · 0 评论 -
【Leetcode083】Remove Duplicates from Sorted List
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* d...原创 2019-12-05 22:06:34 · 62 阅读 · 0 评论 -
【Leetcode070】Climbing Stairs
Runtime:0 ms, faster than100.00%ofC++online submissions forClimbing Stairs.Memory Usage:8.9 MB, less than5.88%ofC++online submissions forClimbing Stairs.class Solution {public: ...原创 2019-12-05 21:11:41 · 81 阅读 · 0 评论 -
【LeetCode414】Third Maximum Number
// class Solution {// public:// int thirdMax(vector<int>& nums) {// //The elements of set couldn't be changed. And couldn't be found by index. // set<int> temp...原创 2019-04-13 16:34:43 · 79 阅读 · 0 评论