自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(94)
  • 收藏
  • 关注

原创 docker 常见命令学习

获取镜像 docker pull ubuntu 启动容器 docker run -it ubuntu /bin/bash[ i 交互式操作 t 终端] 后台运行容器 docker run -itd ubuntu /bin/bash 进入后台运行的容器 docker attack <容器id> [ 该方法退出会导致容器停止 ] docker exec <容器id> [ 该方法退出不会导致容器停止] 启动一个停止的容器 docker start <容器id&gt.

2022-05-31 15:43:31 2887 1

原创 【CUDA编程】线程ID与全局ID的映射关系

blockDim.方向 指的是该方向上thread的总数girdDim.方向 指的是该方向上block的总数1. 1D grid 1D block threadId = blockIdx.x * blockDim.x + threadIdx.x;2. 1D grid 2D block threadIdx = blockIdx.x * blockDim.x * blockDim.y + // 确定在哪一个block threadIdx.y.

2022-05-04 15:32:15 632

原创 Leetcode 题组 买卖股票

刷了一上午股票题,希望今年收益是正的…121. 买卖股票的最佳时机给定一个数组 prices ,它的第i 个元素prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天...

2022-01-08 11:30:36 215

原创 Leetcode 518 零钱兑换Ⅱ

链接:518. 零钱兑换 II - 力扣(LeetCode) (leetcode-cn.com)给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。假设每一种面额的硬币有无限个。题目数据保证结果符合 32 位带符号整数。示例 1:输入:amount = 5, coins = [1, 2, 5]输出:4解释:有四种方式可以凑成总金额:5=55=2+2.

2021-12-31 11:07:26 147

原创 Leetcode 474 一和零

链接:力扣给你一个二进制字符串数组 strs 和两个整数 m 和 n 。请你找出并返回 strs 的最大子集的长度,该子集中 最多 有 m 个 0 和 n 个 1 。如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集 。示例 1:输入:strs = ["10", "0001", "111001", "1", "0"], m = 5, n = 3输出:4解释:最多有 5 个 0 和 3 个 1 的最大子集是 {"10","0001","1","0"} ,因此答案是

2021-12-30 16:49:29 85

原创 Leetcode 494 目标和

链接:力扣给你一个整数数组 nums 和一个整数 target 。向数组中的每个整数前添加'+' 或 '-' ,然后串联起所有整数,可以构造一个 表达式 :例如,nums = [2, 1] ,可以在 2 之前添加 '+' ,在 1 之前添加 '-' ,然后串联起来得到表达式 "+2-1" 。返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目。示例 1:输入:nums = [1,1,1,1,1], target = 3输出:5解释:一共有 5 种方法让.

2021-12-29 10:55:33 362

转载 SQL 四种排名函数

SQL 四种排名函数

2021-12-28 20:36:26 266

原创 Leetcode 题组-SQL 1

176. 第二高的薪水编写一个 SQL 查询,获取 Employee 表中第n高的薪水(Salary)。+----+--------+| Id | Salary |+----+--------+| 1 | 100 || 2 | 200 || 3 | 300 |+----+--------+例如上述Employee表,n = 2时,应返回第二高的薪水200。如果不存在第n高的薪水,那么查询应返回null。+--------------...

2021-12-28 20:23:33 66

原创 Leetcode 题解 48

1049. 最后一块石头的重量 II有一堆石头,用整数数组stones 表示。其中stones[i] 表示第 i 块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为x 和y,且x <= y。那么粉碎的可能结果如下:如果x == y,那么两块石头都会被完全粉碎;如果x != y,那么重量为x的石头将会完全粉碎,而重量为y的石头新重量为y-x。最后,最多只会剩下一块 石头。返回此石头 最小的可能重量 。如果没有石头剩下,就返回 ...

2021-12-28 10:36:00 179

原创 Leetcode 题解 47

416. 分割等和子集给你一个 只包含正整数 的 非空 数组nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。示例 1:输入:nums = [1,5,11,5]输出:true解释:数组可以分割成 [1, 5, 5] 和 [11] 。分析:确定dp数组及下标含义:dp[j] 表示最大可以凑成 j 的子集总和为dp[j],这里我们考虑 i 为可选的nums的个数为 0 到 i ,这样就转换成了背包问题,物品i的重量是nums[i],其价值也是nums.

2021-12-27 18:16:16 607

原创 Leetcode 题解 46(dp,涵哥键盘附加题)

96. 不同的二叉搜索树给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。示例 1:输入:n = 3输出:5分析:确定dp数组及下标:i个节点的二叉搜索树有 dp[i] 种递推公式:这道题的递推公式是比较难的,以三个节点举例,该树的结构可以分为:元素1为头结点搜索树的数量 + 元素2为头结点搜索树的数量 + 元素3为头结点搜索树的数量。其中元素1为头结点搜索树的数量 为:右子树有2个元.

2021-12-23 19:10:15 421

原创 Leetcode 题解 45(dp)

63. 不同路径 II一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。示例 1:输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]输出:2解释:3x3 网格的正中间有一个障碍物。

2021-12-23 12:42:45 166

原创 leetcode 题组 44(dp)

746. 使用最小花费爬楼梯数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值cost[i](下标从 0 开始)。每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应的体力值,你就可以选择向上爬一个阶梯或者爬两个阶梯。请你找出达到楼层顶部的最低花费。在开始时,你可以选择从下标为 0 或 1 的元素作为初始阶梯。示例1:输入:cost = [10, 15, 20]输出:15解释:最低花费是从 cost[1] 开始,然后走两步即可到阶梯顶,一共花费 15 。..

2021-12-22 10:56:32 319

原创 Leetcode 题组 43 (dp)

写在前面:动态规划五步走(代码随想录):确定dp数组(dp table)以及下标的含义 确定递推公式 dp数组如何初始化 确定遍历顺序 举例推导dp数组动态规划如何debug: 把dp数组打印出来,查看是不是按照自己思路推导的。509. 斐波那契数斐波那契数,通常用F(n) 表示,形成的序列称为 斐波那契数列 。该数列由0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1)= 1F(n) = F(n - 1) + F(n - ...

2021-12-20 09:47:35 94

原创 Leetcode 题组 42

738. 单调递增的数字给定一个非负整数N,找出小于或等于N的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。(当且仅当每个相邻位数上的数字x和y满足x <= y时,我们称这个整数是单调递增的。)示例 1:输入: N = 10输出: 9分析:这道题是今年某大厂的一道笔试题,印象很深刻,因为没做出来。这道题的思路比较简单,就是找到第一个不严格递增(小于下一个)的数字,让他 -1 ,然后后续数字都变为 9 就好了。不过该怎么找当时第一个...

2021-12-17 19:28:38 739

原创 Leetcode 题组 41

763. 划分字母区间字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。示例:输入:S = "ababcbacadefegdehijhklij"输出:[9,7,8]解释:划分结果为 "ababcbaca", "defegde", "hijhklij"。每个字母最多出现在一个片段中。像 "ababcbacadefegde", "hijhklij" 的划分是错误的,因为划分的片段数较少。分

2021-12-16 14:16:50 59

原创 Leetcode 题组 40

406. 根据身高重建队列假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki 个身高大于或等于 hi 的人。请你重新构造并返回输入数组people 所表示的队列。返回的队列应该格式化为数组 queue ,其中 queue[j] = [hj, kj] 是队列中第 j 个人的属性(queue[0] 是排在队列前面的人)。示例 1:输入:peopl.

2021-12-15 10:57:38 144

原创 Leetcode 题组 39(贪心)

134. 加油站在一条环路上有N个加油站,其中第i个加油站有汽油gas[i]升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1个加油站需要消耗汽油cost[i]升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明:如果题目有解,该答案即为唯一答案。输入数组均为非空数组,且长度相同。输入数组中的元素均为非负数。示例1:输入:gas = [1,2,3,4,5]cost ...

2021-12-14 11:07:03 100

原创 Leetcode 题组 38(贪心)

122. 买卖股票的最佳时机 II给定一个数组 prices ,其中prices[i] 是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: prices = [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 =.

2021-12-13 11:08:43 2467

原创 Leetcode 题组 37(贪心)

455. 分发饼干假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j]。如果 s[j]>= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。示例1:输入: g = [1,2,3], s = [1,1]输出: 1解释:你有三个孩子和两块...

2021-12-10 09:13:54 62

原创 Leetcode 题组 36(递归回溯)

332. 重新安排行程给你一份航线列表 tickets ,其中 tickets[i] = [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。所有这些机票都属于一个从 JFK(肯尼迪国际机场)出发的先生,所以该行程必须从 JFK 开始。如果存在多种有效的行程,请你按字典排序返回最小的行程组合。例如,行程 ["JFK", "LGA"] 与 ["JFK", "LGB"] 相比就更小,排序更靠前。假定所有机票至少存在一种合理的行程。且所有的机票 必须都用一次 且

2021-12-09 10:08:43 450

原创 Leetcode 题组 35(排列问题)

排列问题 与 组合问题 最大的不同在于,对于一个集合 {1,2} 和 {2,1} ,排列问题将视为两个解,而组合问题将视为一个解。排列问题也可以视作为对 树 的搜索问题,搜索路径如下:(图片源于:代码随想录)我们再给出之前组合问题的搜索树:发现他们最大的不同在于,组合问题会在当前结果中寻找剩余子集,这种寻找方式使用 startindex 做标记,给出之前组合问题的模板:class Solution {public: // n 表示选择范围 // k 表示选取的..

2021-12-08 09:20:55 323

原创 【学习记录】服务架构演进

单体架构单体架构将所有模块以及数据库放在一块。优点:开发部署都很方便,适用于小型项目。缺点:项目启动慢;可靠性差;可伸缩性差;拓展性和可维护性差;性能低。垂直架构垂直架构是指将单体架构中多个模块拆分为多个独立项目,形成多个独立的单体架构。垂直架构解决了一部分单体架构的缺点,但是也存在一些问题:需要写的重复功能太多。分布式架构分布式架构是指在垂直架构的基础上,将公共业务模块抽取出来,作为独立的服务,供其他调用者消费,以实现服务的共享和重用。RPC:Remot..

2021-12-07 21:00:02 293

原创 Leetcode 题组 34(子集问题)

子集问题 和 组合、分割问题的不同点在于:子集问题的解空间在搜索树的每一个节点上,组合问题的解空间在搜索树的叶子节点上。78. 子集给你一个整数数组nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]class Solution {public: v..

2021-12-07 11:57:45 156

原创 Leetcode 题组 33(重复元素组合问题)

39. 组合总和给定一个无重复元素的正整数数组candidates和一个正整数target,找出candidates中所有可以使数字和为目标数target的唯一组合。candidates中的数字可以无限制重复被选取。如果至少一个所选数字数量不同,则两种组合是唯一的。对于给定的输入,保证和为target 的唯一组合数少于 150 个。示例1:输入: candidates = [2,3,6,7], target = 7输出: [[7],[2,2,3]]cl...

2021-12-06 11:02:08 745

原创 Leetcode 题组 32(递归回溯-组合问题)

递归回溯问题可以看成是对于一个N叉数的搜索问题,结构大致如下(图片来源:代码随想录)在每一层内使用for循环控制变量,在递归过程中从子集合中挑选答案。组合问题的模板大致如下:class Solution {public: // n 表示选择范围 // k 表示选取的组合数的size // level 用于表示在哪一层 // startindex 用于表示子区间的开始 void traceback(int n, int k, int leve.

2021-12-03 10:52:51 4761

原创 Leetcode 题组 31 (二叉搜索树)

669. 修剪二叉搜索树给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树不应该改变保留在树中的元素的相对结构(即,如果没有被移除,原有的父代子代关系都应当保留)。 可以证明,存在唯一的答案。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。示例 1:输入:root = [1,0,2], low = 1, high = 2输出:[1,null,

2021-12-02 10:32:38 46

原创 Leetcode 题组 30(二叉搜索树)

235. 二叉搜索树的最近公共祖先给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树:root =[6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = ...

2021-12-01 11:00:19 76

原创 Leetcode 题组 29(二叉搜索数)

617. 合并二叉树给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为NULL 的节点将直接作为新二叉树的节点。示例1:输入: Tree 1 Tree 2 1 2 ...

2021-11-30 10:43:16 47

原创 Leetcode 题组 28

112. 路径总和给你二叉树的根节点root 和一个表示目标和的整数targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和targetSum 。叶子节点 是指没有子节点的节点。示例 1:输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22输出:true/** * Definition for a binary tree node. * s...

2021-11-29 10:18:29 678

原创 Leetcode 题组 27(二叉树)

100. 相同的树给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入:p = [1,2,3], q = [1,2,3]输出:true/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right;

2021-11-26 10:19:17 47

原创 Leetcode 题组 26(二叉树)

222. 完全二叉树的节点个数给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~2h个节点。示例 1:输入:root = [1,2,3,4,5,6]输出:6分析:这个题按照正常递归或者层序遍历都可以写,不过因为是完全二叉树,因此可以使用完全二叉树的性值:满二叉树的节点...

2021-11-25 10:33:31 808

原创 Leetcode 题组 25(二叉树)

101. 对称二叉树给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2/ \ / \3 4 4 3/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() :...

2021-11-24 10:12:22 372

原创 Leetcode 题组 24(二叉树)

226. 翻转二叉树翻转一棵二叉树。示例:输入: 4 / \ 2 7/ \ / \1 3 6 9输出: 4 / \ 7 2/ \ / \9 6 3 1/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode...

2021-11-23 09:41:26 92

原创 Leetcode 题组 23(二叉树非递归遍历)

144. 二叉树的前序遍历/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right

2021-11-22 11:00:07 932

原创 Leetcode 题组 22 (栈与队列)

239. 滑动窗口最大值给你一个整数数组 nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例 1:输入:nums = [1,3,-1,-3,5,3,6,7], k = 3输出:[3,3,5,5,6,7]解释:滑动窗口的位置 最大值--------------- -----[1 3 -1] -3 5...

2021-11-19 10:37:01 51

原创 Leetcode 21 题组(栈与队列)

232. 用栈实现队列请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 false说明:你只能使用标准的栈操作 —— 也就是只有push to top,peek/pop ..

2021-11-18 09:13:02 52

原创 Leetcode 题组 20(双指针)

15. 三数之和给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]class Solution {public: vector<vector<int>> threeSum(vecto...

2021-11-17 11:09:16 159

原创 Leetcode 题组 19(set)

349. 两个数组的交集给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]class Solution {public: vector<int> intersection(vector<int>& nums1, vector<int&gt

2021-11-16 09:49:12 316

原创 Leetcode 题组 18 (字符串)

541. 反转字符串 II给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。示例 1:输入:s = "abcdefg", k = 2输出:"bacdfeg"class Solution {public: string reverseString(string s,.

2021-11-15 12:15:35 118

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除