
leetcode
leetcode
code-016
有问题请私信,停更一段时间。
展开
-
【LC动态规划】542. 01 矩阵
文章目录一、题目描述二、算法分析三、代码一、题目描述二、算法分析三、代码class Solution {public: vector<vector<int>> updateMatrix(vector<vector<int>>& mat) { int m = mat.size(); int n = mat[0].size(); vector<vector<int>&g原创 2022-04-27 20:14:01 · 198 阅读 · 0 评论 -
【LC动态规划】91. 解码方法
文章目录一、题目描述二、算法分析三、代码一、题目描述二、算法分析三、代码class Solution {public: int numDecodings(string s) { int n = s.size(); vector<int> dp(n + 1, 0); dp[0] = 1; for(int i = 1; i <= n; ++i) { //单字符解析:当原创 2022-04-27 17:31:32 · 277 阅读 · 0 评论 -
【LC动态规划】最小路径和
文章目录一、题目描述二、分析过程三、代码一、题目描述二、分析过程三、代码class Solution {public: int minPathSum(vector<vector<int>>& grid) { int m = grid.size(); int n = grid[0].size(); vector<vector<int>> dp(m, vector<int>原创 2022-04-26 11:11:53 · 915 阅读 · 0 评论 -
【LC动态规划】不同路径II
文章目录一、题目描述二、分析三、代码一、题目描述二、分析本题是62.不同路径的障碍版,整体思路大体一致。但就算是做过62.不同路径,在做本题也会有感觉遇到障碍无从下手。其实只要考虑到,遇到障碍dp[i][j]保持0就可以了。也有一些小细节,例如:初始化的部分,很容易忽略了障碍之后应该都是0的情况。三、代码class Solution {public: int uniquePathsWithObstacles(vector<vector<int>>&原创 2022-04-26 09:52:44 · 948 阅读 · 0 评论 -
【LC】31. 下一个排列
文章目录题目描述解题思路题解题目描述解题思路题解class Solution {private: //反转降序的后部分 void reverse(vector<int>& nums, int left, int right) { while(left < right) { swap(nums[left++], nums[right--]); } }public:原创 2022-04-03 18:44:21 · 831 阅读 · 0 评论 -
【LC】27. 移除元素
文章目录题目描述解题思路题解题目描述解题思路快慢指针题解class Solution {public: int removeElement(vector<int>& nums, int val) { int len = nums.size(); if(len < 1) return 0; //快慢指针 int fast = 0; int slow = 0; whi原创 2022-04-03 16:47:29 · 1131 阅读 · 0 评论 -
【LC】26. 删除有序数组中的重复项
文章目录题目描述解题思路题解题目描述解题思路快慢指针;题解/*time: O(n)space:O(1)*/class Solution {public: int removeDuplicates(vector<int>& nums) { int len = nums.size(); if(len < 1) return len; int fast = 1, slow = 1;原创 2022-04-03 16:29:39 · 829 阅读 · 0 评论 -
【LC】11. 盛最多水的容器
文章目录题目描述题解题目描述题解思路:两个边界哪个小,收缩哪个class Solution {public: int maxArea(vector<int>& height) { int left = 0; int right = height.size() - 1; int maxarea = 0; while(left < right) { int cu原创 2022-04-03 13:25:55 · 431 阅读 · 0 评论 -
【LC】3. 无重复字符的最长子串
文章目录题目描述题解题目描述题解class Solution {public: int lengthOfLongestSubstring(string s) { int len = s.size(); if (len == 0) return 0; //保存字符 unordered_set<char> usc; int maxlen = 0; int mark = -1;原创 2022-04-02 21:33:43 · 314 阅读 · 0 评论 -
【LC】4. 寻找两个正序数组的中位数
文章目录题目描述题解题目描述题解class Solution {public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { int totalsize = nums1.size() + nums2.size(); if (totalsize == 0) return 0; int midpos = tot原创 2022-04-02 19:37:38 · 386 阅读 · 0 评论 -
【LC】53. 最大子数组和
文章目录题目描述题解一:贪心题解二:动态规划题目描述题解一:贪心class Solution {public: int maxSubArray(vector<int>& nums) { int len = nums.size(); if(len == 0) return -2147483648; //当前和 int cur_sum = nums[0]; //最大和 int m原创 2022-03-29 21:31:18 · 246 阅读 · 0 评论 -
【LC】217. 存在重复元素
文章目录题目描述题解:题目描述题解:class Solution {public: bool containsDuplicate(vector<int>& nums) { int len = nums.size(); sort(nums.begin(), nums.end()); for(int i = 0; i < len - 1; ++i) { if(nums[i] ==原创 2022-03-29 20:09:59 · 454 阅读 · 0 评论 -
【LC】剑指 Offer 04. 二维数组中的查找
文章目录题目描述题解一:暴力for题解二:缩小范围题目描述题解一:暴力forclass Solution {public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { int ln = matrix.size(); if(ln == 0 ) return false; int lm = matrix.front().si原创 2022-03-29 19:48:32 · 395 阅读 · 0 评论 -
【LC】数组中重复的数
文章目录题目描述题解:修改了数组原数据题目描述题解:修改了数组原数据class Solution {public: int findRepeatNumber(vector<int>& nums) { for(int i = 0; i < nums.size(); ++i) { while(nums[i] != i) { if(nums[i] == num原创 2022-03-29 17:44:37 · 399 阅读 · 0 评论 -
【LC数组】颜色分类
文章目录题目描述:题解一:计数填充法题解二:单指针题目描述:题解一:计数填充法class Solution {public: void sortColors(vector<int>& nums) { //分别计算出0 1 2的个数,在使用其个数进行填充即可 int zero = 0; int one = 0; int two = 0; for(int i = 0; i < nums.s原创 2022-03-24 22:31:28 · 267 阅读 · 0 评论 -
【LC数组】移动零
文章目录题目描述:题解:题目描述:题解:class Solution {public: void moveZeroes(vector<int>& nums) { int k = 0; for(int i = 0; i < nums.size(); ++i) { if(nums[i] != 0) { nums[k] = nums[i];原创 2022-03-24 21:33:26 · 206 阅读 · 0 评论 -
【LC】二叉树的最大深度
文章目录题目描述:题解:题目描述:题解:class Solution {public: int maxDepth(TreeNode* root) { if(root == nullptr) return 0; else return std::max(maxDepth(root->left), maxDepth(root->right)) + 1; }};...原创 2022-03-24 20:29:44 · 660 阅读 · 0 评论 -
【LC】环形链表
文章目录题目描述:题解:题目描述:题解:class Solution {public: bool hasCycle(ListNode *head) { if(head == nullptr) return false; ListNode* slow = head; ListNode* fast = head; while(fast != nullptr && fast->next != nullptr)原创 2022-03-24 19:18:08 · 925 阅读 · 0 评论 -
【LC】回文链表
文章目录题目描述:题解一:deque题解二:stack题目描述:题解一:dequeclass Solution {public: bool isPalindrome(ListNode* head) { if(head == nullptr) return false; //使用双端队列 deque<int> deq; while(head != nullptr) { deq.push_back(head->val);原创 2022-03-24 17:40:04 · 1408 阅读 · 0 评论 -
【LC】合并两个有序链表
文章目录题目描述:题解一:链接+排序题解二:新头结点链接题解三:递归题目描述:题解一:链接+排序直接拼接两个链表给链表排序输出链表头结点class Solution {private: int len(ListNode* head) { int count = 0; while(head != nullptr) { ++count; head = head->next;原创 2022-03-24 16:19:24 · 1127 阅读 · 0 评论 -
【LC】反转链表
文章目录题目描述题解一:置换数据(栈)题解二:pre cur next指针题解三:递归题目描述题解一:置换数据(栈)class Solution {public: ListNode* reverseList(ListNode* head) { if(head == nullptr) return nullptr; ListNode* ptr = head; ListNode* res = head;原创 2022-03-23 00:21:49 · 683 阅读 · 0 评论 -
【LC】删除链表的倒数第N个节点
题目描述[简单]:题解:求得链表长度,得出正向遍历的次数,使用快慢指针,删除对应结点/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNod原创 2022-03-22 21:56:11 · 375 阅读 · 0 评论 -
【LC】删除链表中的节点
题目描述:[简单]解题思路:题解:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: void deleteNode(ListNode* node) { nod原创 2022-03-22 21:00:04 · 126 阅读 · 0 评论 -
【LC 203】移除链表元素
文章目录(一)题目描述(二)题目意图(三)题目分析(四)画图分析(一)题目描述(二)题目意图删除head链表中所有的val == Node.val的结点,最终返回头结点。(三)题目分析head结点和非头结点的删除方式不同是否使用伪头结点我的错误分析:误以为head中的val不作为val==head->val的条件,所以未对head结点进行处理。未考虑到的:head结点为nullptr(四)画图分析例如:删除[6,2,6,3,4,5,6]中的6(1)未使用伪头结点可以原创 2022-01-20 12:04:09 · 694 阅读 · 0 评论 -
【leetcode 704】数组 二分查找
C++题解:class Solution {public: int search(vector<int>& nums, int target) { int left = 0; int right = nums.size() - 1; while(left <= right) { int mid = left + (right - left) / 2; .原创 2022-01-03 12:03:08 · 265 阅读 · 0 评论 -
【Leetcode1】两数之和
(一)题目给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], targ原创 2021-11-14 19:46:35 · 123 阅读 · 1 评论 -
2021-10-15:合并两个有序的数组
2021年10月15日学习内容:合并两个有序的数组时间复杂度:O(n)代码示例(1)int* MergeTwoArr(int arr[], int len_a, int brr[], int len_b){ if (arr == NULL || brr == NULL) return NULL; if (len_a <= 0 || len_b <= 0) return NULL; int* crr = (int*)malloc(sizeof(int) * (len_a +原创 2021-10-15 18:53:16 · 246 阅读 · 0 评论 -
2021-10-15:合并两个有序的顺序表
2021年10月15日学习内容:合并两个有序的顺序表核心代码示例://合并两个有序的顺序表void MergeSqlist(Seqlist* sqa, Seqlist* sqb, Seqlist* sqc){ if (sqa == NULL || sqb == NULL || sqc == NULL) return; sqc->all_size = sqc->cur_size = sqa->cur_size + sqb->cur_size; sqc->da原创 2021-10-15 16:43:01 · 339 阅读 · 0 评论 -
2021-10-15:删除数组中指定重复的数
2021年10月15日学习内容:删除指定数组中重复的数例如:45 54 45 45 46 45 21 45删除这些数中所有的45代码示例(1) i = 0, j = -1;时间复杂度:O(n)#include <stdio.h>int Delete(int arr[], int len, int value){ if(arr == NULL || len <= 0) return; int j = -1; for(int i = 0; i < len; i++原创 2021-10-15 15:15:13 · 246 阅读 · 0 评论 -
2021-10-14:数据结构顺序表
2021年10月14日复习内容:数据结构顺序表代码练习:顺序表的初始化、增删、释放顺序表;代码用时:40分钟代码示例:#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <string.h>#define SIZE 10;typedef int ElemType;typedef struct{ ElemType* data; int cur_size;原创 2021-10-14 17:50:20 · 297 阅读 · 0 评论