
leetcode
文章平均质量分 58
只会说加油的凹凸曼~
每天的快乐就是停止胡思乱想~~~
展开
-
算法刷题计划(二十)填充每个节点的下一个右侧节点指针 II、另一棵树的子树、二进制矩阵中的最短路径、被围绕的区域、所有可能的路径
LeetCode打卡一、填充每个节点的下一个右侧节点指针 II二、另一棵树的子树三、二进制矩阵中的最短路径四、被围绕的区域五、所有可能的路径一、填充每个节点的下一个右侧节点指针 II题目:题解:方法一(广度优先搜索bfs):Node*connect(Node*root){ if(!root) return root; queue<Node*>que; que.push(root); while(!q原创 2021-12-07 15:51:09 · 312 阅读 · 0 评论 -
算法刷题计划(十九)乘积小于K的子数组、长度最小的子数组、岛屿数量、省份数量
leetCode打卡一、乘积小于K的子数组二、长度最小的子数组三、岛屿数量四、省份数量一、乘积小于K的子数组题目:题解(滑动窗口):class Solution {public: int numSubarrayProductLessThanK(vector<int>& nums, int k) { if(nums.empty()||k==0||k==1) return 0; int left=0,right=0,base=原创 2021-12-06 18:53:59 · 342 阅读 · 0 评论 -
算法刷题计划(十八)比较含退格的字符串、区间列表的交集、找到字符串中所有字母异位词
LeetCode打卡一、比较含退格的字符串二、区间列表的交集三、找到字符串中所有字母异位词一、比较含退格的字符串题目:题解:class Solution {public: bool backspaceCompare(string s, string t) { return rebuildStr(s)==rebuildStr(t); } string rebuildStr(string str){ string s; fo原创 2021-12-03 16:42:26 · 1125 阅读 · 0 评论 -
算法刷题计划(十七)删除排序链表中的重复元素 II、寻找峰值、寻找旋转排序数组中的最小值、搜索二维矩阵
LeetCode打卡一、删除排序链表中的重复元素 II二、寻找峰值三、寻找旋转排序数组中的最小值四、搜索二维矩阵一、删除排序链表中的重复元素 II题目:题解:方法一(遍历):class Solution {public: ListNode* deleteDuplicates(ListNode* head) { if (!head) { return head; } ListNode* dummy = new原创 2021-12-01 19:49:58 · 277 阅读 · 0 评论 -
算法刷题计划(十六)合并区间、插入区间、最后一个单词的长度、螺旋矩阵 II
LeetCode 打卡一、合并区间二、插入区间三、最后一个单词的长度四、螺旋矩阵 II一、合并区间题目题解:class Solution {public: vector<vector<int>> merge(vector<vector<int>>& intervals) { int n=intervals.size(); vector<vector<int>>res;原创 2021-11-30 16:15:41 · 360 阅读 · 0 评论 -
算法刷题计划(十五)Pow(x, n)、最大子序列和、螺旋矩阵、串联所有单词的子串(回顾滑动窗口)
LeetCode打卡一、Pow(x,n);二、最大子序和三、螺旋矩阵四、串联所有单词的子串(回顾滑动窗口)一、Pow(x,n);题目:题解:方法一(递归+快速幂):class Solution {public: double myPow(double x, int n) { if(n==0) return 1; long long N=n; return N>0?quickPri(x,N):1/quickPr原创 2021-11-26 17:48:55 · 313 阅读 · 0 评论 -
算法刷题计划(十四)旋转图像、字母异位词分组、分发糖果、分发饼干
LeetCode算法题打卡一、旋转图像二、字母异位词分组三、分发糖果四、分发饼干一、旋转图像题目:题解:方法一(“复制粘贴”方法);class Solution {public: void rotate(vector<vector<int>>& matrix) { int m=matrix.size(),n=matrix[0].size(); vector<vector<int>>c原创 2021-11-24 19:58:39 · 433 阅读 · 0 评论 -
算法刷题计划(十三)括号生成、串联所有单词子串、全排列、全排列2
leetcode算题打卡一、括号生成二、串联所有单词子串三、全排列四、全排列2一、括号生成题目:题解(回溯):class Solution {public: vector<string> generateParenthesis(int n) { vector<string>ans; dfs(ans,"",0,n); return ans; } void dfs(vector<strin原创 2021-11-17 19:58:42 · 4367 阅读 · 0 评论 -
算法刷题计划(十二)组合总和、组合总和2、缺失的第一个正数、接雨水、字符串相乘
leetcode刷题打卡一、组合总和二、组合总和2三、缺失的第一个正数四、接雨水五、字符串相乘一、组合总和题目:题解(递归):class Solution {private: vector<vector<int>> result; vector<int> path; void backtracking(vector<int>& candidates, int target, int sum, int sta原创 2021-11-13 16:53:35 · 723 阅读 · 0 评论 -
算法刷题计划(十一)丢失的数字、范围求和 II、外观数列
LeetCode刷题记录一、丢失的数据范围求和 II外观数列组合总和一、丢失的数据题目题解方法一(数学整数相减):class Solution {public: int missingNumber(vector<int>& v) { int n=v.size(); int sum=n*(n+1)/2; int total=accumulate(v.begin(),v.end(),0); ret原创 2021-11-07 10:26:47 · 3562 阅读 · 0 评论 -
算法刷题计划(十)分糖果、最长有效括号、搜索旋转排序数组、在排序数组中查找元素的第一个和最后一个位置、搜索插入位置
leetcode算法刷题分糖果最长有效括号搜索旋转排序数组在排序数组中查找元素的第一个和最后一个位置搜索插入位置分糖果题目:题解:方法一(暴力):class Solution {public: int distributeCandies(vector<int>& candyType) { if(candyType.empty()) return 0; int times=candyType.size()/2;原创 2021-11-01 21:01:11 · 162 阅读 · 0 评论 -
算法刷题计划(九)求众数 II、构造矩形、实现 strStr()、两数相除、下一个排列
算法刷题一、求众数 II二、构造矩形三、实现 strStr()四、两数相除五、下一个排列一、求众数 II题目:题解(哈希):class Solution {public: vector<int> majorityElement(vector<int>& nums) { if(nums.empty()) return {}; if(nums.size()==1) return {nums[0]};原创 2021-10-23 15:26:33 · 242 阅读 · 0 评论 -
算法技巧总结(二)回溯
序言:刷LeetCode算法题时看人家解题方法是用回溯算法时,瞬间感觉到该题用该算法就很简单。细看了回溯算法后个人感觉回溯与递归有异曲同工之妙。什么是递归呢???递归是指函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象。递归通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。简单来说为了描述问题的某一状态,必须用到该状态的上一个状态;而如果要描述上一个状态,又必..原创 2021-10-19 19:28:37 · 267 阅读 · 0 评论 -
算法刷题计划(八)(LeetCode)两两交换链表中的节点、 删除有序数组中的重复项、移除元素、数字的补数
LeetCode算法题目一、两两交换链表中的节点二、删除有序数组中的重复项三、移除元素四、数字的补数一、两两交换链表中的节点题目:解题方法:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x)原创 2021-10-19 15:40:31 · 102 阅读 · 0 评论 -
算法刷题计划(七)(LeetCode)删除链表的倒数第 N 个结点、有效的括号、合并两个有序链表、整数转换英文表示
LeetCode算法刷题一、删除链表的倒数第N个结点二、有效的括号三、合并两个有序链表一、删除链表的倒数第N个结点题目:解题方法:1、计算链表长度/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) :原创 2021-10-17 20:47:49 · 141 阅读 · 0 评论 -
算法刷题计划(六)三数之和、最接近的三数之和、电话号码的字母组合、四数之和
算法刷题计划一、三数之和二、最接近的三数之和一、三数之和题目:解题方法:(排序+双指针)class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { int n=nums.size(); sort(nums.begin(),nums.end()); vector<vector<int>原创 2021-10-10 17:06:40 · 203 阅读 · 0 评论 -
算法刷题计划(五)最长公共前缀、罗马数字转整数、重复的DNA序列
算法刷题计划(1)最长公共前缀(2)罗马数字转整数(3)重复的DNA序列(1)最长公共前缀题目:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入:strs = [“flower”,“flow”,“flight”]输出:“fl”示例 2:输入:strs = [“dog”,“racecar”,“car”]输出:""解释:输入不存在公共前缀。解题方法:class Solution {public: stri原创 2021-10-08 21:17:22 · 130 阅读 · 0 评论 -
算法刷题计划(四)两整数之和、回文数、盛最多水的容器、整数转罗马数字
LeetCode算法(六)(1)两整数之和(2)回文数(1)两整数之和题目:给你两个整数 a 和 b ,不使用 运算符 + 和 - ,计算并返回两整数之和。示例 1:输入:a = 1, b = 2输出:3示例 2:输入:a = 2, b = 3输出:5class Solution {public: int getSum(int a, int b) { while(b!=0){ unsigned int crray=原创 2021-09-26 16:25:37 · 169 阅读 · 0 评论 -
算法刷题计划(三)扁平化多级双向链表、 Z 字形变换、两个字符串的删除操作、整数反转
leetcode算法(1)扁平化多级双向链表(2)Z 字形变换(1)扁平化多级双向链表题目:····多级双向链表中,除了指向下一个节点和前一个节点指针之外,它还有一个子链表指针,可能指向单独的双向链表。这些子列表也可能会有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。····给你位于列表第一级的头节点,请你扁平化列表,使所有结点出现在单级双链表中。示例 1:输入:head = [1,2,3,4,5,6,null,null,null,7,8,9,10,null,null原创 2021-09-24 16:42:15 · 153 阅读 · 0 评论 -
算法刷题计划(一)斐波那契數列、兩數之和
leetcode算法(一)(1)斐波那契數列(2)兩數之和(1)斐波那契數列写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模1e9+7(1000000007),如计算初始结果为:1000000008,请返回原创 2021-09-04 21:15:48 · 259 阅读 · 0 评论