LeetCode
LeetCode
Ember_Sky
这个作者很懒,什么都没留下…
展开
-
LeetCode1359. 有效的快递序列数目
//1359. 有效的快递序列数目/*记f(n)为输入n时的正确答案f(1)只有一种 P1 D1f(2)的时候可以在f(1)的空位上先添加P2,然后在P2后面的空位上添加D2添加P2的地方有3个位置,即 1:P2 P1 D1 2:P1 P2 D1 3:P1 D1 P2针对上面3中情况,D2的位置分别有3、2、1种因此f(2) = f(1) * (3 + 2 + 1);同理,在f(2)的基础上先添加P3,有5中情况,再添加D3,分别有5、4、3、2、1因此f(3) = f(2) * (5原创 2021-08-31 08:57:11 · 273 阅读 · 0 评论 -
LeetCode381. O(1) 时间插入、删除和获取随机元素 - 允许重复
//381. O(1) 时间插入、删除和获取随机元素 - 允许重复/* * 使用数组来存储所有元素 * 因为不需要考虑顺序,所以插入的话,直接放在数组后面就可以,常数时间 * 主要是删除,删除的时候,需要先查找元素所在的位置,然后删除 * 查找的时候,可以通过哈希map和set结合,记录各种元素的位置 * 用这种方法可以使查找的时间变为常数时间 * 查找之后,就是删除 * 删除的话可以将当前元素和数组的最后一个元素互换内容,然后删除数组的最后一个元素,时间也是常数 * 删除之后,更新一下元原创 2020-10-31 19:12:00 · 555 阅读 · 0 评论 -
LeetCode463. 岛屿的周长
//463. 岛屿的周长//最先想到的是dfs,一直搜到头,记录答案class Solution {public: vector<pair<int, int>>ns; int m, n; void dfs(vector<vector<int>>& grid, int i, int j) { if (i < 0 || j < 0 || i >= n || j >= m || grid[i][j] == 0原创 2020-10-30 14:24:06 · 244 阅读 · 0 评论 -
LeetCode103. 二叉树的锯齿形层次遍历
//103. 二叉树的锯齿形层次遍历/* * 维护两个数组 * 一个专门记录奇数层的节点,另一个专门记录双数层的节点 * 一个从头部开始取出节点,另一个从尾部开始取出节点 * 一个将节点放进头部,另一个将节点放在尾部 * 代码用的是双向队列,但是写题解的时候才发现其实算是栈 * 还算简单 */class Solution {public: vector<vector<int>> zigzagLevelOrder(TreeNode* root) { v原创 2020-10-29 22:53:00 · 164 阅读 · 0 评论 -
LeetCode145. 二叉树的后序遍历
//145. 二叉树的后序遍历//正常递归实现,比较简单class Solution {public: vector<int> ans; void dfs(TreeNode* node) { if (node == nullptr) return; dfs(node->left); dfs(node->right); ans.emplace_back(node->val); } vector<int> posto原创 2020-10-29 22:18:12 · 130 阅读 · 0 评论 -
LeetCode129. 求根到叶子节点数字之和
//129. 求根到叶子节点数字之和//使用dfs深度遍历二叉树//遍历的同时维护一个数组,记录从跟节点到当前节点路径中的数字//遍历到叶子节点的时候,将数组中的所有数字加到ans上//注意:不要忘了返回的时候,删除元素class Solution {public: int ans = 0; void dfs(vector<int>& s, TreeNode* node) { if (node == NULL) return; s.emplace_b原创 2020-10-29 14:16:54 · 116 阅读 · 0 评论 -
LeetCode面试题 04.04. 检查平衡性
LeetCode 面试题 04.04. 检查平衡性原题链接题目描述实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,...原创 2020-05-07 21:17:47 · 797 阅读 · 0 评论 -
LeetCode45. 跳跃游戏 II
leetcode 45. 跳跃游戏 II原题链接题目描述给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。输入[2,3,1,1,4]输出2解释跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置...原创 2020-05-04 13:26:33 · 141 阅读 · 0 评论 -
LeetCode第 139 场周赛
力扣周赛139周赛传送门1、字符串的最大公因子简单逻辑题,辗转相减(我自创的,哈哈),虽然这个思路有问题但是能过(力扣样例水的很)。已过代码class Solution {public: string gcdOfStrings(string s, string t) { //用判断s和t是否相等,如果不等就从长字符串中删去短字符串长度的内容,从头开始,或者从尾开始都行。...原创 2019-06-02 15:04:27 · 485 阅读 · 0 评论 -
LeetCode77.组合
力扣(leetcode)77.组合——深搜(DFS)原题传送门题解:排列组合+dfs:从n个不同的数字中找出k个不同的数字,一共有C(n,k)中情况;这道题需要全排列,用深度优先搜索(dfs)就能搞定。上代码。class Solution {public: int n,k; vector <vector <int>>ans; vector...原创 2019-05-23 17:33:21 · 608 阅读 · 0 评论 -
LeetCode329. 矩阵中的最长递增路径
力扣329——矩阵中的最长递增路径题目传送门使用dfs(深度优先),虽然是困难等级,但是还是比较简单的。使用vis数组标记是否访问过使用dp数组储存访问过的点的长度,如果再次访问直接返回数值就行,不需要进行dfs,应该是m*n的时间复杂度。注意细节class Solution {public: vector <vector <int>>s; v...原创 2019-05-02 17:32:24 · 539 阅读 · 0 评论 -
LeetCode19. 删除链表的倒数第N个节点
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* removeNthFromEnd(ListNode* head, int n) { ListNode原创 2020-09-23 23:06:31 · 54 阅读 · 0 评论 -
LeetCode53. 最大子序和
//53class Solution {public: int maxSubArray(vector<int>& s) { if (s.empty()) return 0; int sum = 0; int ans = s[0]; for (int i = 0; i < s.size(); i++) { sum += s[i]; ans = max(ans, sum); if (sum < 0) su原创 2020-09-23 23:05:28 · 70 阅读 · 0 评论 -
LeetCode70. 爬楼梯
//70class Solution {public: int climbStairs(int n) { vector<int>f(n + 1, 0); f[0] = f[1] = 1; for (int i = 2; i <= n; i++) f[i] = f[i - 1] + f[i - 2]; return f[n]; }};原创 2020-09-23 23:04:52 · 60 阅读 · 0 评论 -
LeetCode121. 买卖股票的最佳时机
//121class Solution {public: int maxProfit(vector<int>& s) { int n = s.size(); if (n <= 1) return 0; vector<int> maxi(n, 0); maxi[n - 1] = s[n - 1]; for (int i = n - 2; i >= 0; i--) maxi[i] = max(maxi[i +原创 2020-09-23 23:04:22 · 54 阅读 · 0 评论 -
LeetCode27. 移除元素
//27class Solution {public: int removeElement(vector<int>& nums, int val) { int it = 0; for (int i = 0; i < nums.size(); i++) if (nums[i] != val) nums[it++] = nums[i]; return it; }};原创 2020-09-23 23:03:46 · 56 阅读 · 0 评论 -
LeetCode35. 搜索插入位置
//35class Solution {public: int searchInsert(vector<int>& s, int tar) { int i = 0; for (; i < s.size(); i++) if (s[i] >= tar) return i; return i; }};原创 2020-09-23 23:02:39 · 57 阅读 · 0 评论 -
LeetCode13. 罗马数字转整数
//13class Solution {public: int romanToInt(string s) { unordered_map<char, int>mp; mp['I'] = 1; mp['V'] = 5; mp['X'] = 10; mp['L'] = 50; mp['C'] = 100; mp['D'] = 500; mp['M'] = 1000; int ans = 0; for (int .原创 2020-09-23 23:01:12 · 78 阅读 · 0 评论 -
LeetCode14. 最长公共前缀
LeetCode14. 最长公共前缀class Solution {public: string longestCommonPrefix(vector<string>& s) { string ans; if (s.empty()) return ans; ans = s[0]; for (int i = 1; i < s.size(); i++) { for (int j = 0; j < ans.size(); j++原创 2020-09-23 10:17:01 · 46 阅读 · 0 评论 -
LeetCode面试题 10.01. 合并排序的数组
LeetCode面试题 10.01. 合并排序的数组class Solution {public: void merge(vector<int>& A, int m, vector<int>& B, int n) { int i = m - 1; int j = n - 1; int it = m + n - 1; while (i >= 0 && j >= 0) if (A[i] &原创 2020-09-22 16:53:13 · 60 阅读 · 0 评论 -
LeetCode26. 删除排序数组中的重复项
LeetCode26. 删除排序数组中的重复项class Solution {public: int removeDuplicates(vector<int>& s) { s.erase(unique(s.begin(),s.end()),s.end()); return s.size(); }};原创 2020-09-22 16:52:11 · 92 阅读 · 0 评论 -
LeetCode9. 回文数
LeetCode9. 回文数class Solution {public: bool isPalindrome(int x) { if (x < 0) return false; vector<int>s; while (x) { s.emplace_back(x % 10); x /= 10; } for (int i = 0, j = s.size() - 1; i < j; i++, j--) {原创 2020-09-22 16:49:50 · 63 阅读 · 0 评论 -
LeetCode7. 整数反转
LeetCode7. 整数反转class Solution {public: int reverse(int x) { int vis = x > 0 ? 1 : -1; x = abs(x); vector<int>s; while (x) { s.emplace_back(x % 10); x /= 10; } long long ans = 0; for (auto it : s) {原创 2020-09-22 16:48:34 · 58 阅读 · 0 评论 -
LeetCode20. 有效的括号
LeetCode20. 有效的括号https://leetcode-cn.com/problems/valid-parentheses/class Solution {public: bool isValid(string s) { stack<char>sta; for (auto x : s) { if (sta.empty()) { sta.push(x); continue; } if ((s原创 2020-09-22 16:47:14 · 56 阅读 · 0 评论 -
LeetCode2. 两数相加
LeetCode2. 两数相加https://leetcode-cn.com/problems/add-two-numbers//** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: L原创 2020-09-22 16:39:39 · 96 阅读 · 1 评论 -
LeetCode3. 无重复字符的最长子串
LeetCode3. 无重复字符的最长子串https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/class Solution {public: int lengthOfLongestSubstring(string s) { s = " " + s; int i = 1; int j = 1; int vis[300] = { 0 }; int ans原创 2020-09-22 16:33:54 · 58 阅读 · 0 评论 -
LeetCode225. 用队列实现栈
LeetCode225. 用队列实现栈https://leetcode-cn.com/problems/implement-stack-using-queues/class MyStack {public: /** Initialize your data structure here. */ MyStack() { } queue<int>qu; /** Push element x onto stack. */ void pu原创 2020-09-22 16:32:12 · 63 阅读 · 0 评论 -
LeetCode206. 反转链表
LeetCode206. 反转链表原题链接/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* reverseList(ListNode* head) {原创 2020-09-22 16:29:47 · 54 阅读 · 0 评论 -
LeetCode1. 两数之和
LeetCode 1. 两数之和原题链接class Solution {public: vector<int> twoSum(vector<int>& s, int t) { vector <int>ans; for (int i=0;i<s.size();i++){ for (int j=i+1;j<s.size();j++){ if (s[i]+s原创 2020-09-22 16:24:09 · 56 阅读 · 0 评论 -
LeetCode面试题 04.06. 后继者
LeetCode 面试题 04.06. 后继者题目描述设计一个算法,找出二叉搜索树中指定节点的“下一个”节点(也即中序后继)。如果指定节点没有对应的“下一个”节点,则返回null。示例 1:输入: root = [2,1,3], p = 1 2 / \1 3输出: 2示例 2:输入: root = [5,3,6,2,4,null,null,1], p = 6 ...原创 2020-05-07 22:31:49 · 244 阅读 · 1 评论 -
LeetCode面试题 04.05. 合法二叉搜索树
LeetCode 面试题 04.05. 合法二叉搜索树原题链接题目描述实现一个函数,检查一棵二叉树是否为二叉搜索树。二叉搜索树的定义:针对每个节点来说左子树的所有节点的值比本身要小(等于也不行)右子树的所有节点的值比本身要打(等于也不行)示例 1:输入: 2 / \ 1 3输出: true示例 2:输入: 5 / \ 1 4...原创 2020-05-07 22:06:40 · 144 阅读 · 0 评论 -
LeetCode55. 跳跃游戏
//LeetCode55. 跳跃游戏class Solution {public: bool canJump(vector<int>& s) { int maxlen = s[0]; int i = 1; for (; i < s.size(); i++) { if (i > maxlen) return false; maxlen = max(maxlen, i + s[i]); } return tr原创 2020-09-25 22:43:50 · 44 阅读 · 0 评论 -
LeetCode242. 有效的字母异位词
//LeetCode242. 有效的字母异位词class Solution {public: bool isAnagram(string s, string t) { int a[26] = { 0 }; int b[26] = { 0 }; for (int i = 0; i < s.size(); i++) a[s[i] - 'a']++; for (int i = 0; i < t.size(); i++) b[t[i]原创 2020-09-25 22:05:45 · 70 阅读 · 0 评论 -
LeetCode169. 多数元素
//LeetCode169. 多数元素class Solution {public: int majorityElement(vector<int>& s) { int count = 0; int temp = 0; for (int i = 0; i < s.size(); i++) { if (count == 0) { temp = s[i]; count++; } else原创 2020-09-25 18:08:07 · 46 阅读 · 0 评论 -
LeetCode102. 二叉树的层序遍历
//LeetCode102. 二叉树的层序遍历class Solution {public: vector<vector<int>>ans; void dfs(TreeNode* node, int n) { if (node == NULL) return; while (ans.size() <= n) ans.emplace_back(vector<int>{}); ans[n].emplace_back(node->原创 2020-09-25 17:41:48 · 72 阅读 · 0 评论 -
LeetCode141.环形链表
//LeetCode141.环形链表/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: bool hasCycle(ListNode* head) { ListNode* p = h原创 2020-09-25 17:16:52 · 66 阅读 · 1 评论 -
LeetCode6. Z 字形变换
//LeetCode6. Z 字形变换class Solution {public: string convert(string str, int n) { int len = str.size(); if (n == 1) return str; int m = (len / (n + n - 2) + 1) * (n - 1); vector<string>s(n, string(m, ' ')); int dir = 1; int x原创 2020-09-25 17:11:09 · 45 阅读 · 0 评论 -
LeetCode剑指 Offer 57 - II. 和为s的连续正数序列
//剑指 Offer 57 - II.和为s的连续正数序列class Solution {public: vector<vector<int>> findContinuousSequence(int tar) { int x; vector<vector<int>>ans; for (int i = 2;; i++) { x = tar * 2; if (x % i) continue; x原创 2020-09-25 16:40:18 · 63 阅读 · 0 评论 -
LeetCode46.全排列
//LeetCode46.全排列class Solution {public: vector<int>s; vector<int>q; vector<vector<int>>ans; void dfs(int u, int st) { if (u == s.size()) { ans.emplace_back(q); return; } for (int i = 0; i < s.siz原创 2020-09-25 16:12:19 · 58 阅读 · 0 评论 -
LeetCode剑指 Offer 03. 数组中重复的数字
//LeetCode剑指 Offer 03. 数组中重复的数字class Solution {public: int findRepeatNumber(vector<int>& s) { for (int i = 0; i < s.size(); i++) { if (s[i] != i) { if (s[i] == s[s[i]]) return s[i]; swap(s[i], s[s[i]]); i-原创 2020-09-25 15:54:30 · 44 阅读 · 0 评论