自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C#代码随想录算法训练营day42|动态规划、01背包

给你一个 只包含正整数 的 非空 数组 nums。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。dp[i][j]的含义:从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少。解释:数组可以分割成 [1, 5, 5] 和 [11]。解释:数组不能分割成两个元素和相等的子集。输入:nums = [1,5,11,5]输入:nums = [1,2,3,5]

2023-04-26 05:18:31 192

原创 c#代码随想录算法训练营day41|动态规划、整数拆分、不同的二叉搜索树

给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。解释: 2 = 1 + 1, 1 × 1 = 1。返回 你可以获得的最大乘积。输入: n = 10。

2023-04-24 17:48:40 154

原创 C#代码随想录算法训练营day39|动态规划、不同路径

机器人试图达到网格的右下角(在下图中标记为 “Finish” )。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]输入:obstacleGrid = [[0,1],[0,0]]输入:m = 3, n = 3。

2023-04-22 03:00:10 418

原创 C#代码随想录算法训练营day38|动态规划、斐波那契数列、爬楼梯、使用最小花费爬楼梯

给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。输入:cost = [1,100,1,1,1,100,1,1,100,1]每次你可以爬 1 或 2 个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。解释:你将从下标为 1 的台阶开始。解释:你将从下标为 0 的台阶开始。1.1 阶 + 1 阶 + 1 阶。解释:有两种方法可以爬到楼顶。解释:有三种方法可以爬到楼顶。2. 1 阶 + 2 阶。3. 2 阶 + 1 阶。1.1 阶 + 1 阶。

2023-04-21 02:33:13 146

原创 C#代码随想录算法训练营day37|贪心算法、单调递增的数字、监控二叉树

当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。解释:需要至少两个摄像头来监视树的所有节点。上图显示了摄像头放置的有效位置之一。给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增。输入:[0,0,null,0,null,0,null,null,0]给定一个二叉树,我们在树的节点上安装摄像头。计算监控树的所有节点所需的最小摄像头数量。输入:[0,0,null,0,0]输入: n = 1234。输入: n = 332。输入: n = 10。

2023-04-20 17:16:33 70

原创 C#代码随想录算法训练营day36|贪心算法、无重叠区间、划分字母区间、合并区间

输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输入: intervals = [[1,2],[2,3],[3,4],[1,3]]输入: intervals = [ [1,2], [1,2], [1,2] ]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].输入: intervals = [ [1,2], [2,3] ]输入:intervals = [[1,4],[4,5]]输出:[[1,6],[8,10],[15,18]]

2023-04-19 02:25:45 113

原创 C#算法训练营day35|贪心算法、柃檬水找零、根据身高重建队列、用最少数量的箭引爆气球

在柠檬水摊上,每一杯柠檬水的售价为 5 美元。因此 [[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]] 是重新构造后的队列。输入:people = [[7,0],[4,4],[7,1],[5,0],[6,1],[5,2]]输入:people = [[6,0],[5,0],[4,0],[3,2],[2,2],[1,4]]输出:[[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]]输出:[[4,0],[5,0],[2,2],[3,2],[1,4],[6,0]]

2023-04-18 22:13:24 48

原创 C#代码随想录算法训练营day34|贪心算法、K次取反后最大化的数组和、加油站、分发糖果

你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你无法返回 2 号加油站,因为返程需要消耗 4 升汽油,但是你的油箱只有 3 升汽油。输入: gas = [1,2,3,4,5], cost = [3,4,5,1,2]解释:选择下标 (1, 2, 2) ,nums 变为 [3,1,0,2]。解释:选择下标 (1, 4) ,nums 变为 [2,3,-1,5,4]。开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。

2023-04-17 15:17:19 45

原创 C#代码随想录算法训练营day32|贪心算法、买卖股票的最佳时机、跳跃游戏

解释:在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。解释:在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。输入:prices = [7,1,5,3,6,4]

2023-04-15 00:50:05 95

原创 C#代码随想录算法训练营day31|贪心算法

相反,[1, 4, 7, 2, 5] 和 [1, 7, 4, 5, 5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。其中一个是 [1, 17, 10, 13, 10, 16, 8] ,各元素之间的差值为 (16, -7, 3, -3, 6, -8)。例如, [1, 7, 4, 9, 2, 5] 是一个 摆动序列 ,因为差值 (6, -3, 5, -7, 3) 是正负交替出现的。输入:nums = [-2,1,-3,4,-1,2,1,-5,4]

2023-04-14 15:41:15 116

原创 C#代码随想录算法训练营day29|回溯算法、递增子序列、全排列

给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素。输出:[[4,6],[4,6,7],[4,6,7,7],[4,7],[4,7,7],[6,7],[6,7,7],[7,7]]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]输入:nums = [4,4,3,2,1]输出:[[0,1],[1,0]]

2023-04-12 01:00:08 60

原创 C#代码随想录算法训练营day28|回溯算法、复原IP地址、子集

给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 ‘.’ 来形成。输出:[“1.0.10.23”,“1.0.102.3”,“10.1.0.23”,“10.10.2.3”,“101.0.2.3”]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]输入:nums = [1,2,2]输入:nums = [0]输出:[[],[0]]

2023-04-11 18:12:38 64

原创 C#代码随想录算法训练营day25|回溯算法、组合总和问题、电话号码组合

在[1,9]范围内使用4个不同的数字,我们可以得到的最小和是1+2+3+4 = 10,因为10 > 1,没有有效的组合。输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。返回 所有可能的有效组合的列表。该列表不能包含相同的组合两次,组合可以以任何顺序返回。输出: [[1,2,6], [1,3,5], [2,3,4]]输出:[“a”,“b”,“c”]输出: [[1,2,4]]

2023-04-10 23:06:03 83

原创 C#代码随想录算法训练营day27|组合问题、分割回文串

给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。输入: candidates = [10,1,2,7,6,1,5], target = 8,输入: candidates = [2,5,2,1,2], target = 5,输入:candidates = [2,3,6,7], target = 7。输出: [[2,2,2,2],[2,3,3],[3,5]]

2023-04-10 21:39:49 95

原创 C#代码随想录算法训练营day24|回溯算法

回溯法解决的问题都可以抽象为树形结构。因为回溯法解决的都是在集合中递归查找子集,集合的大小就构成了树的宽度,递归的深度,都构成的树的深度。递归就要有终止条件,所以必然是一棵高度有限的树(N叉树)。

2023-04-07 20:50:03 187

原创 C#代码随想录算法训练营day23|修剪二叉搜索树、将有序数组转换为二叉搜索树、二叉搜索树转换为累加树

输出:[30,36,21,36,35,26,15,null,null,null,33,null,null,null,8]输入:root = [3,0,4,null,2,null,null,1], low = 1, high = 3。输入:[4,1,6,0,2,5,7,null,null,null,3,null,null,null,8]解释:[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。输入:nums = [-10,-3,0,5,9]输出:[0,-3,9,-10,null,5]

2023-04-06 08:36:04 72

原创 C#代码随想录算法训练营day22|二叉搜索树的最近公共祖先、二叉搜索树中的插入操作、删除二叉搜索树中的节点

输入:root = [4,2,7,1,3,null,null,null,null,null,null], val = 5。输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8。输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 4。例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]另一个正确答案是 [5,2,6,null,4,null,7]。

2023-04-05 09:07:48 84

原创 C#代码随想录算法训练营day21|二叉搜索树的最小绝对差、二叉搜索树中的众数、二叉树的最近公共祖先

百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1。输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 4。输入:root = [1,0,48,null,null,12,49]输入:root = [0]

2023-04-04 10:21:59 73

原创 C#代码随想录算法训练营day20|最大二叉树、合并二叉树、二叉搜索树搜索、验证二叉搜索树

合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;返回以该节点为根的子树。输入:root1 = [1,3,2,5], root2 = [2,1,3,null,4,null,7]输出:[6,3,5,null,2,0,null,null,1]输出:[6,3,5,null,2,0,null,null,1]输入:root = [5,1,4,null,null,3,6]输入:root = [4,2,7,1,3], val = 2。解释:根节点的值是 5 ,但是右子节点的值是 4。

2023-04-03 14:32:53 77

原创 C#代码随想录算法训练营day18|二叉树找树左下角值、路径总和、从中序后序遍历构造二叉树

输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22。输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22。输入:inorder = [9,3,15,20,7], postorder = [9,15,7,20,3]输入: [1,2,3,4,null,5,6,null,null,7]输出:[3,9,20,null,null,15,7]

2023-04-01 11:47:16 113

原创 C#代码随想录算法训练营day17|平衡二叉树、二叉树的所有路径、左叶子之和

给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。输入:root = [1,2,2,3,3,null,null,4,4]输入: root = [3,9,20,null,null,15,7]输入:root = [3,9,20,null,null,15,7]深度是到根节点的距离,高度是到叶子节点的距离,求。给定二叉树的根节点 root ,返回所有左叶子之和。输入:root = [1,2,3,null,5]输出:[“1->2->5”,“1->3”]输入:root = [1]

2023-03-31 16:32:42 114

原创 Unity对象池的简单理解

通常我们需要用到某个游戏对象时,我们会在内存中分配一部分空间new一个对象出来,之后在该对象完成任务之后,再将其摧毁,释放掉内存。在Unity中就是我们在需要的时候调用Instantiate()函数来生成一个游戏对象。在用完该对象之后,调用Destory()函数将其摧毁。

2023-03-30 16:54:29 1305

原创 C#代码随想录算法训练营day16|二叉树的最大深度、最小深度、节点个数

完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。: 写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。输入:root = [2,null,3,null,4,null,5,null,6]输入:root = [3,9,20,null,null,15,7]

2023-03-30 10:40:30 97

原创 C#代码随想录算法训练营day15|二叉树层序遍历、翻转二叉树、对称二叉树

用队列存储二叉树每层节点,将每层节点计数,分别出队计数的节点,就是该层的所有节点,当队列长度为0时即为完成所有节点的层序遍历。给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。输入:root = [3,9,20,null,null,15,7]输入:root = [1,2,2,null,3,null,3]输入:root = [4,2,7,1,3,6,9]输入:root = [1,2,2,3,4,4,3]输出:[4,7,2,9,6,3,1]

2023-03-29 14:03:31 93

原创 C#代码随想录算法训练营day14|二叉树

关于二叉树,具体可参考。二叉树的遍历方式分为前序(中左右)、中序(左中右)、后序(左右中)、层序遍历(从上到下,从左到右)四种。二叉树核心的两种遍历方式:深度优先遍历(DFS)、广度优先遍历(BFS),进一步拓展如下:深度优先遍历前序遍历(递归法,迭代法)中序遍历(递归法,迭代法)后序遍历(递归法,迭代法)广度优先遍历层次遍历(迭代法)

2023-03-28 12:07:42 69

原创 C#代码随想录算法训练营day13|栈与队列

给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。输入:nums = [1,3,-1,-3,5,3,6,7], k = 3。输入: nums = [1,1,1,2,2,3], k = 2。输入: nums = [1], k = 1。输入:nums = [1], k = 1。输出:[3,3,5,5,6,7]返回 滑动窗口中的最大值。

2023-03-27 20:04:28 84

原创 C#代码随想录算法训练营day11|栈与队列

之后我们得到字符串 “aaca”,其中又只有 “aa” 可以执行重复项删除操作,所以最后的字符串为 “ca”。给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。输入:tokens = [“10”,“6”,“9”,“3”,“+”,“-11”,“输入:tokens = [“4”,“13”,“5”,“/”,“+”]输入:tokens = [“2”,“1”,“+”,“3”,“*”]有效的算符为 ‘+’、‘-’、‘*’ 和 ‘/’。返回一个表示表达式值的整数。

2023-03-25 05:36:04 75

原创 C#代码随想录算法训练营day10|栈与队列

你 只能 使用标准的栈操作 —— 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。你可以使用 list (列表)或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。int top() 返回栈顶元素。

2023-03-24 02:12:18 33

原创 C#代码随想录算法训练营day9|字符串KMP算法

关于KMP算法的详细解读(C#版)

2023-03-24 01:02:44 81

原创 C#代码随想录算法训练营day8|字符串

双指针,先确定数组中空格的个数count,之后扩容数组(数组原本长度+空格个数*2),再采用双指针从后向前遍历,左指针从数组原本长度减1开始,右指针从数组扩容后长度减1开始。给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。解释:如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。输入:s = [“H”,“a”,“n”,“n”,“a”,“h”]输出:[“h”,“a”,“n”,“n”,“a”,“H”]

2023-03-22 09:06:55 156

原创 C#代码随想录算法训练营day7|哈希表

做题不要陷入思维定式,多思考多尝试,找对解题方向,思路很重要,想不明白可以动手画图试试。存在去重操作的时候尽量不要用哈希,十分不方便。

2023-03-21 15:54:50 167

原创 C#代码随想录算法训练营day6|哈希表

哈希表的本质是存储元素的键值对,而在C#中的哈希表类型中,包含数组、集合HashSet、字典映射Dictionary<key,value>,个人认为字典是最为常用的哈希表,这里不用Hashtable是因为相较于字典来说,Hashtable在使用时存在着装箱和拆箱操作,会消耗性能,而泛型的字典能规避这一开销。

2023-03-20 05:07:40 205

原创 C#代码随想录算法训练营day4|链表相关练习

分别定义 fast 和 slow 指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环,有环的话,一定会在环内相遇。那么相遇时: slow指针走过的节点数为: x + y, fast指针走过的节点数:x + y + n (y + z),n为fast指针在环内走了n圈才遇到slow指针, (y+z)为 一圈内节点的个数A。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。如果链表无环,则返回 null。

2023-03-18 05:54:12 95

原创 C#代码随想录算法训练营day3|链表相关练习

}LeetCode203 移除链表元素。

2023-03-17 18:00:11 83

原创 C#代码随想录算法训练营day2|977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

滑动窗口和螺旋矩阵很难想到怎么解,需要反复多加练习。

2023-03-16 18:02:10 697

原创 C#代码随想录算法训练营day1|LeetCode704二分查找、LeetCode34、LeetCode35、LeetCode27移除元素

(1)关于二分查找(O(nlogn)):二分查找有两种不同的写法,分别为左闭右闭[left,right]和左闭右开[left,right),要注意两种方法的边界条件是不同的,同时要结合题目的具体要求,做出相应的调整。(2)关于双指针(O(n)):数组的元素在内存地址中是连续的,不能单独删除数组中的某个元素,只能覆盖。如果要暴力删除数组中的某一元素,则需要采用两层for循环的O(n^2)的操作。

2023-03-15 18:15:11 958

空空如也

空空如也

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

TA关注的人

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