leetcode
文章平均质量分 91
ClaraR
这个作者很懒,什么都没留下…
展开
-
Leetcode|MySQL|数据库刷题记录(1107~1126)
1107. 每日新用户统计Traffic表:+---------------+---------+| Column Name | Type |+---------------+---------+| user_id | int || activity | enum || activity_date | date |+---------------+---------+该表没有主键,它可能有重复的行。activity 列是 ENU...原创 2021-08-21 16:40:30 · 273 阅读 · 0 评论 -
LeetCode|Python|400题分类刷题记录——动态规划
一、动态规划动态规划题有两个要点:确定状态转移公式和边界条件,确定状态转移公式有点像找规律一样,只要能找出能从一个状态转移到另一个状态的模式,这道题就差不多解决了。边界条件则表示的是最小子问题的边界。只要确定了状态转移公式和边界条件题目就迎刃而解了。70. 爬楼梯假设你正在爬楼梯。需要 n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1..原创 2021-08-21 16:36:22 · 320 阅读 · 0 评论 -
LeetCode|Python|400题分类刷题记录——并查集
并查集不断更新中...323. 无向图中连通分量的数目给定编号从 0 到 n-1 的 n 个节点和一个无向边列表(每条边都是一对节点),请编写一个函数来计算无向图中连通分量的数目。示例 1:输入: n = 5 和 edges = [[0, 1], [1, 2], [3, 4]] 0 3 | | 1 --- 2 4输出: 2示例 2:输入: n = 5 和 edges = [[0, 1], [1, 2...原创 2021-08-21 16:35:17 · 242 阅读 · 0 评论 -
LeetCode|Python|400题分类刷题记录——数组
三、数组35. 搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0来源:力扣(LeetCode)链接:https://leetcode-c..原创 2021-08-21 16:32:29 · 194 阅读 · 0 评论 -
LeetCode|Python|400题分类刷题记录——递归
递归/DFS/BFS在不断更新中...51. N 皇后n皇后问题 研究的是如何将 n个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的n皇后问题 的解决方案。每一种解法包含一个不同的n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。示例 1:输入:n = 4输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]...原创 2021-08-21 16:27:34 · 237 阅读 · 0 评论 -
Leetcode|MySQL|数据库刷题记录(601~627)
601. 体育馆的人流量https://leetcode-cn.com/problems/human-traffic-of-stadium/表:Stadium+---------------+---------+| Column Name | Type |+---------------+---------+| id | int || visit_date | date || people | int |...原创 2021-02-18 21:27:43 · 873 阅读 · 0 评论 -
Leetcode|MySQL|数据库刷题记录(175~597)
178.分数排名https://leetcode-cn.com/problems/rank-scores/编写一个 SQL 查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。+----+-------+| Id | Score |+----+-------+| 1 | 3.50 || 2 | 3.65 || 3 | 4.00 || 4 | 3.85 ||...原创 2021-02-17 10:36:26 · 975 阅读 · 2 评论 -
LeetCode|C++|1. Two Sum
好久没写C++了,这次把以前用java做过的题用C++再做一次,生疏了很多,各种查语法,心累...这道题最简单的做法就是用一个哈希表存储数组中的元素和对应的下标。1、对数组进行一次循环,边插入当前元素nums[i]边查找哈希表中是否已经存在target-nums[i],如果有的话直接返回两个下标;2、循环一次过后如果没有符合条件的元素要记得抛出一个异常。class Solutio...原创 2019-01-16 19:21:06 · 477 阅读 · 0 评论 -
LeetCode|C++|20. Valid Parentheses
class Solution {public: bool isValid(string s) { stack<char> ss; char c; for (int i = 0; i < s.size(); i++){ switch (s[i]) { case '(':ss.push(s[i]); break; case '[':ss.pu...原创 2019-01-21 10:47:31 · 128 阅读 · 0 评论 -
LeetCode|C++|203. Remove Linked List Elements
class Solution {public: ListNode* removeElements(ListNode* head, int val) { ListNode *L=new ListNode(0); L->next=head; ListNode *p=L; while(p->next){ ...原创 2019-01-20 22:12:45 · 113 阅读 · 0 评论 -
LeetCode|C++|142. Linked List Cycle II
基本思路:用快慢指针可以确定环的长度a+b,a为入环之前的长度,b为环里走的长度,再用一个指针从头和慢指针一块走,相遇的位置就是入环节点struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};class Solution {public: ListNode *det...原创 2019-01-20 19:12:29 · 118 阅读 · 0 评论 -
LeetCode|C++|141. Linked List Cycle
基本思路:使用快慢指针,若发现两个指针指向同一个节点则说明链表有环struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};class Solution {public: bool hasCycle(ListNode *head) { if (head == NU...原创 2019-01-20 18:46:12 · 229 阅读 · 0 评论 -
LeetCode|C++|92. Reverse Linked List II
基本思路:反转从位置 m 到 n 的链表。反转的基本操作是遍历时将节点摘下插入到链表头部,这里则是插入到反转的起始位置1、先找到要进行反转的起始位置2、n-m得到摘下的节点个数,要进行n-m次摘下插入操作struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};...原创 2019-01-20 18:30:16 · 199 阅读 · 0 评论 -
LeetCode|C++|4. Median of Two Sorted Arrays
中位数:一组有序数字里面最中间的那个数 (奇数个数)或者最中间两个数的平均数(偶数个数)三种方法:1、首先想到的是把两个数组按升序merge起来,直接取最中间的那个数(或者中间两个数的平均数),时间复杂度O(m+n)2、第一种方法的缺点是要把所有元素都进行排序才能直接取最中位数,但是我们只需要取中位数,其实当排序排到中间那个数的时候后面的元素就不需要排了,我们可以边排序边count元素...原创 2019-01-17 21:02:01 · 98 阅读 · 0 评论 -
LeetCode|C++|19. Remove Nth Node From End of List
方法:在链表前添加一个头结点,这个头结点没有有效信息,只是为了方便跟踪删除节点的前一个节点。 然后使用双指针p和q,再加上一个pre指针,q指针先移动到顺数第n个位置,然后三个指针一起移动,p指针指向的元素就是要删除的元素,删除操作要用到pre指针class Solution {public: ListNode* removeNthFromEnd(ListNode* head, in...原创 2019-01-17 21:50:54 · 142 阅读 · 0 评论 -
LeetCode|C++|21. Merge Two Sorted Lists
基本思路:利用merge算法就可以/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {publ...原创 2019-01-17 22:07:42 · 115 阅读 · 0 评论 -
LeetCode|C++|23. Merge k Sorted Lists
基本思路:两两归并,递归调用mergeTwoLists函数,最终合成一个链表struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListN...原创 2019-01-17 22:41:30 · 266 阅读 · 0 评论 -
LeetCode|C++|24. Swap Nodes in Pairs
在链表前面增加一个头结点(无有效信息),指针p指向头结点,指针q指向第一个节点,指针m指向第二个节点,第一个节点和第二个节点交换后,三个指针往前移动2个节点,继续进行交换,注意最后返回的是头结点的next指向的节点而不是head指向的节点struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(N...原创 2019-01-20 13:34:29 · 305 阅读 · 0 评论 -
LeetCode|C++|61. Rotate List
基本思路:1、链表向右循环k个位置,若k大于链表长度,则相当于向右循环k%len个位置。2、循环的操作相当于不断将最尾节点摘到链表前。 struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};class Solution {public: ListNod...原创 2019-01-20 15:21:51 · 248 阅读 · 0 评论 -
LeetCode|C++|83. Remove Duplicates from Sorted List
其实这道题很简单,因为是已经排好序的链表,所以只要用一前一后两个指针判断对应节点是否相等就可以了,我做的时候没注意看是排好序的,所以就用了一个通用的方法,不管有序还是无序都可以用,用一个map保存已经出现过的数字,当遍历到一个节点就检查这个节点的数字是否已经存在在map里面,如果存在则删掉节点,如果不存在则添加到map里面。struct ListNode { int val; ListN...原创 2019-01-20 15:45:52 · 92 阅读 · 0 评论 -
LeetCode|C++|82. Remove Duplicates from Sorted List II
基本思路:在链表添加一个头结点,指针m指向头结点,q指向head,p指向head->next,用一个循环跳过所有和q相等的节点1、若存在多个和q相同的节点,则循环结束后p指针指向第一个和q不相等的节点,把m节点直接连接到p节点2、若不存在和q相同的节点,则不作操作,所有指针向前移动一个位置struct ListNode { int val; ListNode *next;...原创 2019-01-20 16:24:03 · 240 阅读 · 0 评论 -
LeetCode|C++|86. Partition List
基本思路:在遍历过程中,用一个指针m指向最后一个小于x的节点,在一个循环中指针p跳过所有大于等于x的节点,将小于x的节点p插到m节点后,同时更新指针p和指针m。struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};class Solution {public: ...原创 2019-01-20 17:40:07 · 236 阅读 · 0 评论 -
LeetCode|C++|206. Reverse Linked List
基本思路:遍历链表,不断把节点摘下来插到链表头部,记得不要断链struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};class Solution {public: ListNode* reverseList(ListNode* head) { if (head...原创 2019-01-20 18:08:50 · 226 阅读 · 0 评论 -
LeetCode|C++|2. Add Two Numbers
基本思路:分别从左到右遍历两个链表,对应数字相加,相加得到的和若大于10则产生进位,进位加到下一次运算中,用sum/10得到进位,sum%10得到本位,本位作为当前运算结果添加到新链表末尾为了将长度不等的链表和长度相等的链表两种情况结合起来,在一个循环中做判断:如果两个当前指针都不为NULL,则获取对应数字;如果其中一个指针为NULL,也即遍历到了末尾,则在接下来的运算中该链表数字始终置为0。...原创 2019-01-17 14:57:48 · 193 阅读 · 0 评论