- 博客(69)
- 收藏
- 关注
原创 LeetCode [简单]合并两个有序链表 (迭代
使用迭代的方法合并链表。当两个链表都不为空时,比较两个链表的对应结点值,将值较小的结点合并到结果链表中,然后将对应链表的结点向后移动一步。如果一个链表为空,或者遍历完毕,则将另一个链表的剩下的部分合并到结果链表中。
2023-12-10 16:41:05
127
原创 LeetCode [中等]矩阵置零
使用两个额外的变量记录原矩阵的第一行第一列是否包含0。之后便可以修改matrix[0][j]和 matrix[i][0]的数据。用原矩阵的 第一行 matrix[0][j] 和第一列 matrix[i][0],来代替原来的两个标记数组,从而减少使用的空间。空间复杂度:O(m+n),其中 m 是矩阵的行数,n 是矩阵的列数。时间复杂度:O(mn),其中 m 是矩阵的行数,n 是矩阵的列数。时间复杂度:O(mn),其中 m 是矩阵的行数,n 是矩阵的列数。用两个标记数组分别记录每一行和每一列是否有零出现。
2023-12-05 11:31:13
423
原创 LeetCode [中等]最大子数组和-动态规划
n 为数组长度,在 [0, n] 区间需要计算以每个中间元素 i 为结尾的最大和的非空子数组,并在这n个子数组中找到具有最大和的非空子数组。贪心算法:若当前指针所指元素之前的和小于0,则丢弃当前元素之前的数列。动态规划:若下一个元素大于0,则将其加到当前元素上。时间复杂度和空间复杂度都是 O(n)。动态规划的状态转移方程。
2023-12-05 10:04:35
414
原创 LeetCode [中等]全排列(回溯算法)
在分步解决问题的过程中,当它通过尝试发现现有的分步答案不能得到有效的正确的解答的时候,它将取消上一步甚至是上几步的计算,再通过其它的可能的分步解答再次尝试寻找问题的答案。由于当 index = 0 时,排列中的所有元素都尚未确定,因此对于任意 0≤ index < n,都可以将 temp[index] 和任意一个下标大于等于 index 的元素交换,经过一次交换之后即可确定当前排列中 temp[index] 的值。当每个下标对应的所有可能的值都遍历结束时,即可得到数组 nums 的全排列。
2023-12-04 14:49:25
384
原创 LeetCode [中等]岛屿数量
空间复杂度:O(mn),其中 m 和 n 分别是网格 grid 的行数和列数。记录每个元素是否被访问过的二维数组和递归调用栈需要 O(mn) 的空间。时间复杂度:O(mn),其中 m 和 n 分别是网格 grid 的行数和列数。深度优先搜索最多需要访问每个元素一次。找到值为1的节点之后递归调用DFS遍历,并使用与地图数据结构相同的二维数组visited来保存该点是否访问过。
2023-12-04 13:11:37
232
原创 LeetCode [简单] 对称二叉树&二叉树的直径
如果左子树不为空,则最长路径的左端是左子树的最深叶结点,否则最长路径的左端是根结点;如果右子树不为空,则最长路径的右端是右子树的最深叶结点,否则最长路径的右端是根结点。因此,子树的最长路径长度为该子树的左子树和右子树的深度之和,子树的深度为该子树的左子树和右子树的深度的较大值加 1。空间复杂度:O(n),其中 n是二叉树的结点数。空间复杂度主要是递归调用的栈空间,取决于二叉树的高度,最坏情况下是 O(n)。时间复杂度:O(n),其中 n 是二叉树的结点数。每个结点都被访问一次。
2023-11-30 13:08:17
103
原创 LeetCode [中等]和为 K 的子数组
给你一个整数数组nums和一个整数k,请你统计并返回该数组中和为k的子数组的个数。子数组是数组中元素的连续非空序列。思路:sum: 当前位置的累积和。如果以当前位置为结尾的数组中,存在和为k的子数组,那么,一定存在更短的子数组和为sum - k。使用一个循环遍历数组 nums。a. 在每次循环中,更新 sum 为当前位置的累积和,即 sum += nums[i]。b. 检查 counts 中是否存在 sum - k,如果存在,将对应的频次加到 ans中
2023-11-29 13:51:38
309
原创 C# 委托/事件/lambda
在某个管理器中给出一个获取Sprite的方法 ,因为addressables异步加载资源,所以 获取的信息必须在资源回调中返回,那么直接使用lambda表达式便于回调的赋值。
2023-11-28 18:41:33
1180
原创 LeetCode [简单](非递归)二叉树的中序遍历
再次遍历左孩子,将他们放入栈中,如果没有左孩子了,就出栈,root变为栈顶元素,存值,向右走。遍历左孩子,将他们放进栈中,左边走到尽头,出栈,root变为栈顶元素,存值,向右边走一个。
2023-11-28 09:32:04
239
原创 LeetCode [简单]118. 杨辉三角
在「杨辉三角」中,每个数是它左上方和右上方的数的和。生成「杨辉三角」的前 numRows。给定一个非负整数 numRows。
2023-11-27 09:15:05
205
原创 LeetCode [简单] 70.爬楼梯
你有多少种不同的方法可以爬到楼顶呢?1. 1 阶 + 1 阶 + 1 阶。有两种方法可以爬到楼顶。1. 1 阶 + 1 阶。有三种方法可以爬到楼顶。2. 1 阶 + 2 阶。3. 2 阶 + 1 阶。
2023-11-27 08:45:17
276
原创 LeetCode [简单] 160. 相交链表
创建两个指针 pointer1 和 pointer2,两个指针分别依次遍历headA、headB,区别在于,pointer1从 headA 开始遍历,而 pointer2 从 headB 开始遍历。时间复杂度:O(m+n),其中 m 和 n 分别是链表 headA 和 headB 的结点数。最坏情况下,每个指针遍历两个链表各一次。,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回。在此过程中,如果有相同的结构,必定会同时遍历到。,函数返回结果后,链表必须。空间复杂度:O(1)O。
2023-11-25 19:35:05
180
原创 LeetCode [中等]128. 最长连续序列
如果通过数组查找起始数字,对于 [4,3,3,3] 的包括重复元素的数组,筛选起始数字后,4不考虑,可是数组的3重复了3次,就会查询3次,但3这个元素其实只需要查询一次即可,所以需要去重,那么就可以利用哈希表的键值唯一特点,数组[4,3,3,3]建立的哈希表键值只有[4,3],筛选掉4之后,只剩下元素3,不会被元素重复浪费时间;哈希表中保存不重复的数字作为键,值为null,之后遍历键,如果有连续小于该键的,那么向后遍历到最小的那个键,之后保存长度。时间复杂度:O(n)空间复杂度:O(n)
2023-11-24 09:46:14
97
原创 LeetCode [简单] 283. 移动零
快慢指针,fast每次前进1,代表遍历数组的进度;slow计数所有不为零的数,也是最后一个非零数应该在的数组下标。每次当前下标的数不为0,就将快慢指针下标数交换位置。移动到数组的末尾,同时保持非零元素的相对顺序。,必须在不复制数组的情况下原地对数组进行操作。,编写一个函数将所有。
2023-11-23 09:12:17
165
原创 LeetCode [中等] 49. 字母异位词分组
排序后的字符串作为字典的键,将排序后相同的字符串作为异味词放入字典中的同一个列表中。利用字符数组的排序,将字符串数组中的每个字符串转换为字符数组,进行排序;是由重新排列源单词的所有字母得到的一个新单词。可以按任意顺序返回结果列表。最终,返回所有这些列表组成的列表。给你一个字符串数组,请你将。
2023-11-22 10:11:08
111
原创 LeetCode [简单] 1. 两数之和
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。整数,并返回它们的数组下标。你可以按任意顺序返回答案。,请你在该数组中找出。
2023-11-21 23:10:17
717
原创 unity各种插件集合(自用)
Universal RP——升级项目到Urp(通用渲染管线)以及画面后处理。2D Animation——2D序列帧/骨骼动画相关。2DPSD Importer——psb骨骼动画。
2023-10-10 06:37:32
324
1
原创 C# 常用排序算法 —— 插入排序:希尔排序
将待排序表分割成 若干 步长为length/2 的子表,对各子表分别进行直接插入排序。之后每次将步长/2,至步长为1。
2023-09-05 11:03:59
53
原创 C# 常用排序算法——选择排序:堆排序
2.思想:输出堆顶极值,使剩余(n-1)个元素重新成堆,得到下次极值,反复,直到得到所有序列。1.可将一维数组视为一棵完全二叉树。
2023-09-05 10:14:47
58
原创 C# 常用排序算法——交换排序:快速排序
做法:取基准,小于基准的放左边,大于基准的放右边,从而酱待排序表划分为两个独立的部分,即为一趟快排。2.每趟排序基准元素都会放到最终位置上。1.内部排序中性能最优。
2023-09-05 09:54:14
158
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人