自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SVN在Linux服务器下部署过程

sudo ufw allow 3690 # 默认端口,可根据需要修改。

2024-06-01 10:28:03 990

原创 Stable Diffusion学习记录

Stable Diffusion是一个开源免费能生成以假乱真的图片、有着强大可控性不能制作视频光影文字的AI软件,可以说是有必要学习的东西了,这里是基于秋叶大神整合的Stable Diffusion Web UI进行接触和学习。

2024-05-06 22:24:58 1641

原创 Unity涂鸦纹理实现

心血来潮实现下场景中提供一张纹理进行涂鸦的功能。

2024-04-30 16:13:56 613 1

原创 【Unity基础】TextMeshPro组件学习过程记录

在Hierarchy面板上右击时,我们发现TextMeshPro有两处可以进行创建,第一个在菜单3D Object里,第二个在UI里面,也就是说TextMeshPro可以创建为场景的3D对象和Canvas下的UI元素。当文字比较多的时候那么可以使用静态字体。文本的每个字符都使用了两个三角形,四个顶点,就算使用了描边,阴影等效果也不会有额外的顶点生成,这说明了TextMeshPro的强大性能。值得注意的时候,TextMeshPro能够进行水平方向的渐变,也能够支持垂直方向的渐变,也可以支持四个方向的渐变。

2024-04-26 17:26:23 1695 3

原创 Unity框架,ET框架8.1版本的打包流程记录

如果Installed:false就点击下Install进行安装,等待显示Installend:true即可。Unity菜单栏下选择YooAsset>AssetBudle Builder打开窗口,选项需要完全按照这上面。安装完成后,选择HybridCLR>Generate>All,并且等待脚本编译完成。再选择CopyAotDlls把编译完成的脚本放进工程玩家的AotDlls文件夹下。先再工程Assets文件夹下创建一个StreamingAssets文件夹。点击Click Build等待构建完成即可。

2024-04-04 20:46:35 1232 1

原创 Unity Dots学习内容记录

主要是记录下学习unity dots技术的过程吧。

2024-02-22 11:17:02 1192

原创 【实时渲染】图形处理单元

早期的图像加速技术是使用三角形扫描,将这些扫描的颜色通过插值显示在屏幕上,而且也拥有访问数据的能力,将这些访问的数据通过插值显示在屏幕上程序内部又加上了许多的可见性的像素检查,如深度测试等,由于这些过程处理的次数多,每次的处理都比较简单,所有就专门从CPU中分离出一个硬件单元处理这些,从而减少CPU的工作量。

2024-02-22 11:14:24 975

原创 【leetcode】64. 最小路径和

给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例 1:输入:grid = [[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径 1→3→1→1→1 的总和最小。

2023-11-29 16:15:47 468

原创 【leetcode】62. 不同路径

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?输入:m = 3, n = 7输出:28示例 2:输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条路径可以到达右下角。

2023-11-27 11:12:40 504

原创 【leetcode】198. 打家劫舍

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4。

2023-11-14 20:04:53 117

原创 【leetcode】746. 使用最小花费爬楼梯

给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。示例 1:输入:cost = [10,15,20]输出:15解释:你将从下标为 1 的台阶开始。输入:cost = [1,100,1,1,1,100,1,1,100,1]输出:6解释:你将从下标为 0 的台阶开始。

2023-11-14 19:13:23 82

原创 【leetcode】8.字符串转换整数

请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。函数 myAtoi(string s) 的算法如下:读入字符串并丢弃无用的前导空格检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。确定最终结果是负数还是正数。如果两者都不存在,则假定结果为正。读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。

2023-11-13 20:54:45 171

原创 【leetcode】1137. 第 N 个泰波那契数

泰波那契序列 Tn 定义如下:T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2给你整数 n,请返回第 n 个泰波那契数 Tn 的值。示例 1:输入:n = 4输出:4解释:示例 2:输入:n = 25输出:1389537。

2023-11-13 15:26:13 143

原创 【程序基础】动态规划

其实就是一种带备忘录的递归。其实就是一个大的问题拆分成许多的小问题,再读小问题进行重叠运算,这里和分治法最大的不同再于拆分小问题而直接做重叠运算,分治法是逐个解决再进行合并。一条公式为 dp = max(dpj,dpj + dpi),dpj为上一个j个小问题叠加的答案,dpi为当前小问题的答案,再由dpj + dpi 计算得到最终答案。比如说最经典的问题斐波那契数组计算,f(n) 计算出来,再计算f(n + 1) 只需要把记录下来的f(n)和f(n-1)进行累加,即可得到f(n+1)的答案。

2023-11-13 15:12:12 96

原创 【程序基础】递归法

递归法,其实可以说是一种编程技巧,通过调用自身,防止无限循环而给予递归出口。

2023-11-13 14:55:49 59

原创 【leetcode】58.最后一个单词的长度

单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。示例 1:输入:s = “Hello World”输出:5解释:最后一个单词是“World”,长度为5。示例 2:输入:s = " fly me to the moon "输出:4解释:最后一个单词是“moon”,长度为4。示例 3:输入:s = “luffy is still joyboy”输出:6解释:最后一个单词是长度为6的“joyboy”。提示:s 仅有英文字母和空格 ’ ’ 组成。

2023-11-06 16:32:05 105

原创 【leetcode】19.删除链表的倒数第 N 个结点

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]

2023-11-06 16:12:25 94

原创 【leetCode】2. 两数相加

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

2023-11-03 18:00:18 55

原创 【leetcode】21. 合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]提示:两个链表的节点数目范围是 [0, 50]l1 和 l2 均按 非递减顺序 排列。

2023-11-03 10:56:02 70

原创 【程序基础】分治而之

二分查找其实就是折半查找,能使用这个查找算法的必须是一个有排序的集合,不能是乱序。如果发现是数组的mid下标的值比查找的值小就进行让right = mid - 1。如果发现是数组的mid下标的值比查找的值大就进行让left = mid + 1。对一个整体的问题进行拆分,拆分成多个子问题,再对多个子问题进行求解。如果发现是数组的mid下标的值和查找的值相等就进行让就反回mid。比如有个数组1,5,6,9,10,15,17。1.分解,多问题进行分解成为小问题。2.拆分的子问题必须是相互独立的。

2023-11-01 16:15:41 50

原创 【程序基础】迭代法

迭代法其实就是一种使用一个确定的数学模型关系,通过旧的值不断演算出新值从而不断接近最好问题的答案。

2023-10-31 20:50:44 143

原创 【leetcode】28. 找出字符串中第一个匹配项的下标

给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。输入:haystack = “leetcode”, needle = “leeto”输入:haystack = “sadbutsad”, needle = “sad”解释:“leeto” 没有在 “leetcode” 中出现,所以返回 -1。解释:“sad” 在下标 0 和 6 处匹配。第一个匹配项的下标是 0 ,所以返回 0。

2023-10-25 16:57:03 40

原创 【leetcode】20.有效的括号

给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。每个右括号都有一个对应的相同类型的左括号。s 仅由括号 ‘()[]{}’ 组成。左括号必须用相同类型的右括号闭合。输入:s = “()[]{}”左括号必须以正确的顺序闭合。输入:s = “()”输入:s = “(]”

2023-10-25 16:27:59 36

原创 【leetcode】179.最大数

给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。按照规则比较数x,y。取xl为x的(数位+1)*10,yl为y的(数位+1)*10。因为不能使用cpp自带的sort函数,所以直接些了个快速排序进行排序。注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。就有x * yl + y 和y * xl + x。最好直接取两个数带入就知道是怎么回事了。输入:nums = [3,30,34,5,9]输入:nums = [10,2]输出:“9534330”

2023-10-25 14:33:42 35

原创 【leetcode】75.颜色分类

给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。因为题目中可以得知,大部分的数组元素都是相等的,所以使用希尔排序是最快的。我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。必须在不使用库内置的 sort 函数的情况下解决这个问题。输入:nums = [2,0,2,1,1,0]输入:nums = [2,0,1]nums[i] 为 0、1 或 2。输出:[0,0,1,1,2,2]输出:[0,1,2]

2023-10-24 16:52:40 35

原创 【leetcode】268.丢失的数字

解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。解释:n = 2,因为有 2 个数字,所以所有的数字都在范围 [0,2] 内。解释:n = 9,因为有 9 个数字,所以所有的数字都在范围 [0,9] 内。解释:n = 1,因为有 1 个数字,所以所有的数字都在范围 [0,1] 内。给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。输入:nums = [9,6,4,2,3,5,7,0,1]

2023-10-24 16:15:22 36

原创 【leetcode】16. 最接近的三数之和

给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2)。输入:nums = [-1,2,1,-4], target = 1。思路就是先进行一次排序,再使用一次双指针减少一次暴力查询。输入:nums = [0,0,0], target = 1。假定每组输入只存在恰好一个解。

2023-10-24 12:00:13 40

原创 【leetcode】15. 三数之和

我自己的思路很简单。也就先对数组进行排序。再使用双指针减少暴力循环。就排序和数组的中等题目就有点顶不住了。

2023-10-23 19:16:00 29

原创 【leetcode】1460. 通过翻转子数组使两个数组相等

直接排序完再直接比较数组元素。算是相当简单的题目了。

2023-10-19 19:49:10 58

原创 【leetcode】249.两个数组的交集

解题思路,直接用一个set容器判断元素是否包含,再用一个set去从。

2023-10-19 19:24:08 58

原创 【leetcode】217.存在重复元素

直接把已经出现的元素保存在set里面,判断是否包含在set结果就可以了。因为只是做了一次循环故时间复杂度为O(n)方法一,先做排序后在遍历数组,做前后的元素判断,如果出现前一个元素和后一个元素相等,那么就是有重复元素。方法二,和我本人的解题思路一样。官方就是做了两种方法。

2023-10-19 11:24:55 62

原创 【leetcode】169.多数元素

我的方法里面肯定是需要遍历n次的所以时间复杂度为O(n),因为使用了map的结构取保存数据,那么空间至少是O(1)到O(n)之间。官方使用了反证法证明了这个命题,假设a不是数组m的众数那么a出现的次数必定是小于l/2 + r/2,r和l分别是拆分数组m后左右的长度,显然要l/2 + r/2!直接认为因为题目中提到返回的结果必须是数组的一半的数,那么直接随机一个数就有1/2的概率直接随机到结果,两次都不中的概率是1/4,三次是1/8,四次是1/16。官方给出的题目是超过n/2的数,这里没有仔细阅读题目哈。

2023-10-18 17:01:12 34

原创 【leetcode】2500.删除每行的最大值

题目给出大小为 m×n 的矩阵 grid 每一行从小到大排序,那么题目等价于每次删除矩阵的末尾列,得分为该列的最大值。那么最后的答案就是每一列的最大值之和。这里个人的解题思路是直接用了最简单的想法,暴力遍历每一行最大,删除再进行判断累加。从每一行删除值最大的元素。如果存在多个这样的值,删除其中任何一个。给你一个 m x n 大小的矩阵 grid ,由若干正整数组成。注意 每执行一次操作,矩阵中列的数据就会减 1。写算法的时候考虑的东西还是太少,需要多多思考。将删除元素中的最大值与答案相加。

2023-10-18 15:11:59 58

原创 【程序基础】桶排序c++版

比如有待排数组 1,5,18,10,36,23。简单定义一下装桶规则为元素值n / 10。那么这里就会创建 4 个桶,分配后,就会得到一下装桶情况。再对每个桶进行排序。最后按照顺序把桶的值复制回数组即可。主要是分成多个桶,把待排数组按照规则分配给各个桶内。桶排序也可以说是思想比较简单的一种排序方法了。

2023-10-18 11:56:25 79

原创 【程序基础】堆排序c++版

假设数组长度为n,需要遍历所有元素进行大顶堆的建立,二叉树的深度遍历时间复杂度为log2n,故有,固定时间复杂度为O(n*log2n)arr[i] >= arr[2i+1] && arr[i] >= arr[2i + 2],大顶堆才才成立。假设父节点的下标为i,那么子节点的下标为左子节点2i + 1,右子节点为2i + 2。在二叉树的基础上建立大顶堆或者小顶堆(倒序)。步骤2,从大顶堆(小顶堆的根节点选择与数组最后一个元素交换,并且不断执行这个步骤)步骤1,建立大顶堆(小顶堆)

2023-10-17 20:54:24 31

原创 【程序基础】归并排序c++版

归并排序是选择排序法的改良版,通过分治法拆分多个数组,合并每个数组块的时候再进行选择排序最主要的思路就是分解,合并,然后就得到一个有序的数组。时间复杂度稳定,假设数组长度是n,分治拆分的次数为log2n,每次拆分都需要遍历n个元素,那么固定是nlog2n次,那么其时间复杂度为O(nlog2n)

2023-10-17 18:01:07 39

原创 【程序基础】快速排序c++版

取0下标为左边left指针默认位置,取4(数组长度-1)为右边right指针,并且取left指针指向的数组元素值为基准值,规则是在比较right指针的时候,发现right指针的值比基准的小(降序反之),就进行right指针和left指针的元素值交换,并改变去操作right指针,如果发现值比基准值大就一直对right指针。因为right指针比较完一次轮到left指针,这个时候left指针指向的值为9,9比基准值8大,这个时候就需要再进行交换right指针和left指针的值,并且right指针进行自减法。

2023-10-17 14:54:44 36

原创 【程序基础】希尔排序c++实现

在插入排序里,最好的情况下是数组已经是有序的状态是,时间复杂度为O(n),其实希尔排序是引入了一个增量来多数组的元素进行插入排序,当这个增量变为0的时候,排序结束。的改良版,点击上面插入排序就可以进入插入排序的链接。步骤2,根据这个增量给这个数组进行有空格值的插入排序。步骤1,计算出增量,这个增量是数组长度的一半开始。希尔(shell)排序其实就是。步骤3,增量变为0结束排序。

2023-10-17 10:36:22 70

原创 【程序基础】选择排序法c++版

步骤3,遍历完步骤2,进行最小值交换,把最小值放到数组最前面。每次遍历一遍找到最小的放到最前面,比较简单直观的一种思想。步骤2,所搜下面元素,如果找到更小的元素则进行最小值覆盖。步骤1,以新元素为基准作为默认最小值,和最小值索引。遍历次数为1+2+3+…+n-1,等差数列。固定的时间复杂度为O(n^2)实现代码的cpp文件。

2023-10-16 17:23:27 57 1

原创 【程序基础】插入排序法c++版

2.使用这个元素与上一个元素进行比较,如果小于(顺序),就进行换行知道比较完前面的数组或者比较到元素比新元素小,不小于直接结束这次步骤。最坏情况下循环一个n的数组,每循环到i进行i次交换位置,遍历n-1遍就是交换(n-1) * (n-1) 次,顾时间复杂度为O(n^2)最好的情况下循环一个长度为n的数组,比较完都不需要进行交换位置。每次取出一个新的元素,使用该元素与前面排好序的数组进行比较和换位位置。这次使用了其他cpp文件引用的方式去实现。InsertSirt.cpp实现文件。

2023-10-16 16:02:52 86 1

空空如也

空空如也

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

TA关注的人

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