LeetCode
fkuner
这个作者很懒,什么都没留下…
展开
-
LeetCode系列54—螺旋矩阵
【代码】LeetCode系列54—螺旋矩阵。原创 2022-09-18 17:24:37 · 473 阅读 · 1 评论 -
LeetCode系列(总)
LeetCode系列原创 2022-07-10 16:00:41 · 654 阅读 · 0 评论 -
LeetCode系列8—字符串转换整数
题意字符串转换整数 (atoi)题解class Automaton { string state = "start"; unordered_map<string, vector<string>> table = { {"start", {"start", "signed", "in_number", "end"}}, {"signed", {"end", "end", "in_number", "end"}}, {原创 2022-04-23 12:25:12 · 486 阅读 · 0 评论 -
LeetCode系列1114—按序打印
题意题解方法三:条件变量class Foo {public: Foo() {} void first(function<void()> printFirst) { // printFirst() outputs "first". Do not change or remove this line. printFirst(); index = 1; cv.notify_all(); } vo原创 2022-03-09 00:03:28 · 93 阅读 · 0 评论 -
LeetCode系列297—二叉树的序列化与反序列化
题意297. 二叉树的序列化与反序列化题解BFS/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */static std::vector<std::stri原创 2022-02-23 00:19:24 · 96 阅读 · 0 评论 -
LeetCode系列148—排序链表
题意148.排序链表题解方法一:自顶向下归并排序class Solution {public: ListNode* sortList(ListNode* head) { return sortList(head, nullptr); } ListNode* sortList(ListNode* head, ListNode* tail) { if (head == nullptr) { return head;原创 2021-12-29 00:06:33 · 80 阅读 · 0 评论 -
LeetCode系列147—对链表进行插入排序
题意147.对链表进行插入排序题解/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next)原创 2021-12-28 23:58:51 · 489 阅读 · 0 评论 -
LeetCode系列62—不同路径
题意62.不同路径题意方法一:动态规划class Solution {public: int uniquePaths(int m, int n) { int dp[m][n]; for (int i = 0; i < m; i++) dp[i][0] = 1; for (int j = 0; j < n; j++) dp[0][j] = 1; for (int i =原创 2021-12-26 19:41:55 · 354 阅读 · 0 评论 -
LeetCode系列4—寻找两个正序数组的中位数
题意4. 寻找两个正序数组的中位数题解方法一:归并排序class Solution {public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { vector<int> merged; int i = 0, j = 0; while(i < nums1.size() &&原创 2021-12-26 10:03:06 · 106 阅读 · 0 评论 -
LeetCode系列3—无重复字符的最长子串
题意3. 无重复字符的最长子串题解方法一:滑动窗口class Solution {public: int lengthOfLongestSubstring(string s) { unordered_set<int> se; int n = s.size(); int right = 0; int ans = 0; for (int left = 0; left < n; left++) {原创 2021-09-16 08:44:36 · 79 阅读 · 0 评论 -
LeetCode系列279—完全平方数
题意279. 完全平方数题解方法一:动态规划class Solution {public: int numSquares(int n) { vector<int> f(n + 1); for (int i = 1; i <= n; i++) { int minn = INT_MAX; for (int j = 1; j * j <= i; j++) { m原创 2021-12-23 12:27:09 · 282 阅读 · 0 评论 -
LeetCode系列322—零钱兑换
题意322. 零钱兑换题解方法一:记忆化搜索class Solution { vector<int>count; int dp(vector<int>& coins, int rem) { if (rem < 0) return -1; if (rem == 0) return 0; if (count[rem - 1] != 0) return count[rem - 1]; in原创 2021-12-23 12:14:52 · 642 阅读 · 0 评论 -
LeetCode系列337—打家劫舍 III
题意337. 打家劫舍 III题解方法一:动态规划class Solution {public: unordered_map <TreeNode*, int> f, g; void dfs(TreeNode* node) { if (!node) { return; } dfs(node->left); dfs(node->right); f[node]原创 2021-12-22 23:24:08 · 139 阅读 · 0 评论 -
LeetCode系列338—比特位计数
题意338. 比特位计数题解方法一:Brian Kernighan算法class Solution {public: int countOnes(int x) { int ones = 0; while (x > 0) { x &= (x - 1); ones++; } return ones; } vector<int> countB原创 2021-12-22 22:35:22 · 333 阅读 · 0 评论 -
LeetCode系列347—前K个高频元素
题意347. 前 K 个高频元素题解参考前 K 个高频元素原创 2021-12-22 21:33:23 · 73 阅读 · 0 评论 -
LeetCode系列394—字符串解码
题意394. 字符串解码题解class Solution {public: string decodeString(string s) { string res; int n = s.size(); int i = 0; while(i < n) { if (isalnum(s[i]) && !isdigit(s[i])) { res.push_back(s[i]); i++; co原创 2021-12-22 20:56:08 · 525 阅读 · 0 评论 -
LeetCode系列406—根据身高重建队列
题意406.根据身高重建队列题解方法一:从低到高考虑class Solution {public: vector<vector<int>> reconstructQueue(vector<vector<int>>& people) { sort(people.begin(), people.end(), cmp); int n = people.size(); vector<vec原创 2021-12-22 17:44:38 · 112 阅读 · 0 评论 -
LeetCode系列416—分割等和子集
题意416.分割等和子集题解方法一:动态规划dp[i][j]表示选取前i个元素,是否class Solution {public: bool canPartition(vector<int>& nums) { int sum = 0; int n = nums.size(); for(int i = 0; i < nums.size(); i++) sum += nums[i];原创 2021-12-22 16:59:27 · 108 阅读 · 0 评论 -
LeetCode系列437—路径总和 III
题意437. 路径总和 III题解方法一:深度优先搜索每一个节点都执行rootSum函数,rootSum不同于pathSum的地方在于,路径必须连续class Solution {public: int rootSum(TreeNode* root, int targetSum) { if (root == nullptr) return 0; int ret = 0; if (root->val == targetSum) ret+原创 2021-12-22 16:09:02 · 166 阅读 · 0 评论 -
LeetCode系列438—找到字符串中所有字母异位词
题意438.找到字符串中所有字母异位词题解方法一:滑动窗口维护一个定长的窗口,记录窗口内的状态class Solution {public: vector<int> findAnagrams(string s, string p) { vector<int> ans; vector<int> count1(26); vector<int> count2(26); int s_l原创 2021-12-22 15:18:56 · 88 阅读 · 0 评论 -
LeetCode系列448—找到所有数组中消失的数字
题意448. 找到所有数组中消失的数字题解方法一:标志数组class Solution {public: vector<int> findDisappearedNumbers(vector<int>& nums) { vector<int> res; int n = nums.size(); int flags[n]; memset(flags, 0, sizeof(int) * n原创 2021-12-19 20:22:02 · 59 阅读 · 0 评论 -
LeetCode系列461—汉明距离
题意461. 汉明距离题解方法一:内置位计数功能class Solution {public: int hammingDistance(int x, int y) { return __builtin_popcount(x ^ y); }};作者:LeetCode-Solution链接:https://leetcode-cn.com/problems/hamming-distance/solution/yi-ming-ju-chi-by-leetcode-so原创 2021-12-19 19:54:53 · 76 阅读 · 0 评论 -
LeetCode系列494—目标和
题意494.目标和题解方法一:暴力搜索class Solution {public: int findTargetSumWays(vector<int>& nums, int target) { int ans = 0; int n = nums.size(); for (int i = 0; i < pow(2, n); i++) { int sum = 0; for原创 2021-12-04 00:33:58 · 122 阅读 · 0 评论 -
LeetCode系列538—把二叉搜索树转换为累加树
题意538. 把二叉搜索树转换为累加树题解方法一:反序中序遍历class Solution {private: int sum = 0;public: TreeNode* convertBST(TreeNode* root) { if (root == nullptr) return nullptr; TreeNode *right = convertBST(root->right); sum += root->val;原创 2021-12-02 19:38:58 · 454 阅读 · 0 评论 -
LeetCode系列543—二叉树的直径
题意543.二叉树的直径题解方法一:深度优先搜索class Solution { int ans; int depth(TreeNode* rt){ if (rt == NULL) { return 0; // 访问到空节点了,返回0 } int L = depth(rt->left); // 左儿子为根的子树的深度 int R = depth(rt->right); // 右儿子为根原创 2021-11-29 04:50:50 · 96 阅读 · 0 评论 -
LeetCode系列560—和为K的子数组
题意560.和为 K 的子数组题解方法一:枚举class Solution {public: int subarraySum(vector<int>& nums, int k) { int ans = 0; for (int i = 0; i < nums.size(); i++) { int sum = 0; for (int j = i; j >= 0; j--) {原创 2021-11-29 04:27:24 · 381 阅读 · 0 评论 -
LeetCode系列581—最短无序连续子数组
题意581. 最短无序连续子数组题解方法一:辅助数组class Solution {public: int findUnsortedSubarray(vector<int>& nums) { vector<int> nums_min(nums.size()); vector<int> nums_max(nums.size()); int min = 100001, max = -100001;原创 2021-11-29 02:59:37 · 204 阅读 · 0 评论 -
LeetCode系列617—合并二叉树
题意617.合并二叉树题解方法一:深度优先遍历class Solution {public: TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) { if (!root1) return root2; if (!root2) return root1; TreeNode* node = new TreeNode(root1->val + root2->val);原创 2021-11-29 01:56:25 · 245 阅读 · 0 评论 -
LeetCode系列621—任务调度器
题意621. 任务调度器题解方法一:模拟法task2int为任务对应的数量task2last为任务对应最近被访问时间cur_time为当前时间class Solution {public: int leastInterval(vector<char>& tasks, int n) { int cur_time = 0; map<char, int> task2cnt; map<char, int> task2last;原创 2021-11-29 01:27:35 · 889 阅读 · 0 评论 -
LeetCode系列647—回文子串
题意647. 回文子串题解方法一:中心扩展法class Solution {public: int countSubstrings(string s) { int ans = 0; for (int i = 0; i < s.size(); i++) { for(int j = 0; j < 2; j++) { int l = i; int r = l + j原创 2021-11-29 00:05:29 · 62 阅读 · 0 评论 -
LeetCode系列739—每日温度
题意739. 每日温度题解方法一:单调栈class Solution {public: vector<int> dailyTemperatures(vector<int>& temperatures) { stack<int> s; vector<int> res(temperatures.size(), 0); for (int i = 0; i < temperatures.s原创 2021-11-28 09:53:19 · 479 阅读 · 0 评论 -
LeetCode系列287—寻找重复数
题意287.寻找重复数题解方法一:转换为环形链表将数组索引和值建立映射,可以构建一个链表,如果这个链表有环,则存在重复元素,问题转换为LeetCode系列142—环形链表2class Solution {public: int findDuplicate(vector<int>& nums) { int slow = 0, fast = 0; do { slow = nums[slow];原创 2021-11-26 01:06:15 · 282 阅读 · 0 评论 -
LeetCode系列283—移动零
题意283. 移动零题解方法一:朴素方法class Solution {public: void moveZeroes(vector<int>& nums) { int zero = 0; for (int i = 0; i < nums.size(); i++) { if (nums[i] != 0) continue; if (i < nums.size() - 1 - zero) { for (i原创 2021-11-25 15:29:30 · 96 阅读 · 0 评论 -
LeetCode系列240—搜索二维矩阵(2)
题意240. 搜索二维矩阵 II题解Z字形查找class Solution {public: bool searchMatrix(vector<vector<int>>& matrix, int target) { int m = matrix.size(), n = matrix[0].size(); int i = 0, j = n - 1; while (i < m && j >原创 2021-11-21 12:28:42 · 308 阅读 · 0 评论 -
LeetCode系列5201—给植物浇水
题意5201. 给植物浇水题解模拟class Solution {public: int wateringPlants(vector<int>& plants, int capacity) { int ans = 0, now = capacity, pos = -1, n = plants.size(); for (int i = 0; i < n; ++i) { ans += i - pos;原创 2021-11-21 12:17:44 · 153 阅读 · 0 评论 -
LeetCode系列74—搜索二维矩阵
题意74. 搜索二维矩阵题解方法一:两次次二分查找class Solution {public: bool searchMatrix(vector<vector<int>> matrix, int target) { auto row = upper_bound(matrix.begin(), matrix.end(), target, [](const int b, const vector<int> &a) {原创 2021-11-21 09:54:52 · 227 阅读 · 0 评论 -
LeetCode系列2—两数相加
题意2. 两数相加题解方法一:模拟/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next)原创 2021-09-15 21:52:56 · 75 阅读 · 0 评论 -
LeetCode系列1—两数之和
题意1. 两数之和题解方法一:暴力枚举class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { int n = nums.size(); for (int i = 0; i < n; ++i) { for (int j = i + 1; j < n; ++j) { i原创 2021-09-15 21:35:40 · 56 阅读 · 0 评论 -
LeetCode系列238—除自身以外数组的乘积
题意238. 除自身以外数组的乘积题解方法一:左右乘积列表class Solution {public: vector<int> productExceptSelf(vector<int>& nums) { int length = nums.size(); // L 和 R 分别表示左右两侧的乘积列表 vector<int> L(length, 0), R(length, 0);原创 2021-09-15 10:21:44 · 162 阅读 · 0 评论 -
LeetCode系列236—二叉树的最近公共祖先
题意236. 二叉树的最近公共祖先题解方法一:递归class Solution {public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { if(root == nullptr || root == p || root == q) return root; TreeNode *left = lowestCommonAncestor(root->l原创 2021-09-14 18:02:22 · 67 阅读 · 0 评论