自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 飞机大战中对象池模式子弹使用

在B站上学习阿严教程,记录一下对象池模式的学习。

2022-07-21 23:30:58 216 1

原创 Unity Shader入门精要初级篇(一)-- 基础光照笔记

unity shader 入门精要学习,本文关于光的漫反射和高光模型的shader编写

2022-06-29 20:02:01 791

原创 UnityShader入门精要个人总结--基础篇(一)

个人阅读unityshader入门精要总结

2022-06-24 14:47:32 1724

原创 Ray Tracing in One Weekend个人学习笔记

Ray Tracing in one weekend 一周末光追

2022-05-19 23:36:17 538 2

原创 unity Image添加点击事件

文章是学习了momo的unity 3d 游戏开发中的方法的记录,他的方法主要是继承了EventSystem.EventTrigger 重写了OnpointClick()方法。Step1 创建ImageStep2 编写点击方法脚本using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;using UnityEngine.EventSystems;p

2022-05-08 17:26:07 2732

原创 Rin笔记之函数模板

(仅为个人学习笔记)函数模板是什么通过泛型来定义函数 ,通过将类型作为参数传递给模板,使得编译器生成该类型的函数。模板不生成任何函数,只是告诉编译器如何定义函数。template<typename T>void Swap(T &a, T &b){ T tmp; tmp = a; a = b; b = tmp;}模板需要放在头文件中模板的重载模板可以进行重载。但是与普通函数重载一样,需要特征标不同如 (T &, T&) 和 (T[] ,

2022-04-01 23:38:28 603

原创 个人力扣题目分类记录

双指针838. 推多米诺

2022-02-21 12:53:19 373

原创 LeetCode背包题个人总结

01背包 2d要求n 个物品每个weight[i] 重量不一样,对应价值value[i],w 容量的背包。求背包能背下的最大价值。(物品不可重复)分析vector<vector< int >> dp;dp[i] [j] :从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少。两个角度两个递推式(1)不放物品 dp[i][j] = dp[i - 1][j](2)放物品 dp[i][j] = dp[i - 1][j - weight[i]] + val

2022-02-10 17:05:29 738

原创 LeetCode状态压缩题个人总结

题单78 . 子集1178. 猜字谜1601. 最多可达成的换楼请求数目2151 . 基于陈述统计最多好人数一些心得:(1)找到某个公共状态进行遍历,一般对于每个子状态只有0 或 1 两种状态,即要么存在要么不存在。遍历的总数就是 (1 << n);for(int state = 0;state < (1 << n);state++)(2)对于任意一个state ,需要遍历state每一位的状态时0还是1,如果是1,代表需要对该数据处理。所以需要一个循环遍历

2022-01-24 19:32:27 5717

原创 第 16 章 更加复杂的数据结构

684. 冗余连接并查集板子题,来分析一下并查集吧。这题关键是把一个无向有环图转换成一棵树,变成无向无环图。使用并查集进行连接找爹,如果爹不一样就进行连接,最后第一个一样的就是罪魁祸首。1、初始化Parent最初每个节点父节点都是自己,Parent数组初始化。2、进行判断连接如果两点有边,判断是否为同父,不同进行连接合并。相同则返回该Union(a,b,parent);这个函数的实现如下 void Union(int a,int b,vector<int>& pa

2021-12-12 11:33:26 192

原创 第 15 章 指针三剑客之三:图

785. 判断二分图思路是填色。对于每个点,先将其填色1,放入队列。广搜的方式遍历对应的边的点,填上与之相反的颜色。如果有相同则false。反之为true;882. 细分图中的可到达结点在B站看了视频觉得就很清晰了。Dijkstra 算法.思路是,求0到可以到每个点。但是可以先求0 到 n - 1节点的最短距离,在算maxMove除了到这个点还剩下多少步,就直接加进去。当然会有个重复的情况。比如0 ~ 1 距离5 ,假设0到1可走4,1到0可走3,结果应该去最小 min(5, 3 + 4);PII

2021-12-02 13:03:34 159

原创 游戏开发数学笔记之变换

仅为个人学习网易的3d数学基础笔记。前言:为什么需要向量的变换?比如模型的顶点坐标,通常是保存在模型的坐标空间,当渲染该模型到屏幕上时,需要将其坐标转换到摄像机空间。1 线性变换1.1 坐标变换设在一个3D坐标定义一个坐标系 C ,点P 为 <x,y,z>。再定义另一个坐标系 C’ ,点P’ 为 <x’,y’,z’> 。点P’ 可以通过 C 中 P 的坐标线性变换得到 。矩阵形式:T 表示 C 的原点到 C’的原点的平移量U,V,W 为列向量的矩阵表示将C的

2021-11-13 20:24:12 3367

原创 游戏开发数学笔记之向量代数

仅为个人学习网易的3d数学基础笔记。1.向量1.1基本概念同时具有方向和大小的物理量。常见用法:1 游戏中的坐标或模型的网格顶点坐标2 力,位移,速度,或者方向的表示,比如光线传播方向通常情况,向量表示为一个具有n个实数的元组。一个n维向量表示如下:V = <v1,v2,…vn>其中,vi表示第i个分量2 向量属性常见的运算有向量加减,点积。2.1 叉积2.1.1 叉积的基本运算P x Q = <pyqz - pzqy ,pzqx - pxqz , pxqy

2021-11-13 16:45:25 2121

原创 第 14 章 指针三剑客之二:树

104. 二叉树的最大深度太垃圾了,这题没写出来。110. 平衡二叉树写树题目感觉总是缺根弦。利用一个辅助函数返回深度是否平衡int helper(TreeNode* root)在这个函数中,首先判空,root不存在直接返回-1那么根节点的左右子树的深度可以直接递归的表示int l = helper(root->left); int r = helper(root->right);如果l ,r 为 -1 或者深度差大于1 也直接返回-1if(l == -1 || r == -

2021-11-04 14:58:53 89

原创 第 12 章 令人头大的字符串

242. 有效的字母异位词哈希或者排序,很简单205. 同构字符串貌似是二刷?两个哈希表,也很简单。647. 回文子串循环每个字符以该字符为中心像两边找。找回文需要分奇偶。奇数个中心则是l = r = i开始找,偶数个中心l = i,r = i + 1.696. 计数二进制子串分组,将连续的1或0计数分组。每次相邻的 0 和 1 只有个数少的才能组成串。那么只有分组两两相邻的较小值才有贡献。...

2021-10-21 12:55:16 105

原创 第 11 章 妙用数据结构

本文仅为个人刷题记录448. 找到所有数组中消失的数字这题关键是记录一个复杂度o(n)的方法,即在原数组上修改。对于Nums中每个数据,不仅有数据的值,还有位置。那就遍历出现过的每个数据,并把数据对应成位置进行更改。对应位置的数据取负值。这里对于每个数据,先找到pos = abs(num) - 1;在进行该位置数据判断,是否已经出现,没有出现为正值的话,则改为负值。最后遍历数组,如果该数据为正值,对应位置的数据就是没有出现的。...

2021-09-15 11:07:13 186

原创 第 10 章 神奇的位运算

461. 汉明距离俩写法。位运算。先异或,不同的就为1 。在循环与 &1,看有多少不同。每次右移直到数据用完。class Solution {public: int hammingDistance(int x, int y) { int diff = x ^ y; int ans = 0; while(diff) { ans += diff & 1; di

2021-09-05 21:17:26 79

原创 unity实现玩家碰触物体打开提示效果

玩家进入触碰某个物体,物体便会弹出提示框一个小效果。这个效果是在一个小demo里做的,需要多处使用,于是做成了单例。两个部分,一个是物体的提示框,一个是玩家。当然玩家是提前做好的。首先提示框关于脚本的部分。(1)声明并获取,老样子,初始化时不可见GameObject style1obj;... void Start() { style1obj = transform.Find("Tips_style1").gameObject; style1obj.Set

2021-08-12 20:58:58 8686

原创 第 13 章 指针三剑客之一:链表

个人笔记记录:LeetCode默认链表表达:struct ListNode {int val;ListNode *next;ListNode(int x) : val(x), next(nullptr) {}};206. 反转链表非递归:肯定是前节点,后节点,但不太会声明ListNode* prev = nullptr; //直接声明成空ListNode* next;循环时保证head一直能遍历就循环while(head)最后返回prev值,head遍历到最后

2021-08-12 11:40:27 92

原创 C++面向对象高级编程 3

1、复合1.1 何为复合复合,就相当于 has a ,拥有什么 。这个例子中,是 queue 有 deque这里写一个queue类,但是在public中可以看到,所使用的函数,是完全利用c,也就是deque的操作函数。比如pop,只是把名字改了。在deque里或许还有很多其他的函数,但是在queue中,只开放了这里的几个。如果声明一个queue类的对象,也只能使用这几个操作函数,且名字的使用与queue一致。 queue是adapter。1.2 复合后的内存一步步捋清楚。首先在queue类

2021-07-30 20:02:10 100

原创 C++面向对象程序设计上 2 Class with pointer members

写一个String类,实现一下功能:int main(){ String s1(); String s2("hello"); String s3(s2); cout<<s3<<endl; s3 = s2; cout<<s3<<endl;}1 Big Three 三个特殊函数class String{public: String (const char* cstr = 0);//构造函数 String (const Str

2021-07-23 23:24:46 155

原创 c++面向对象高级课程 1(侯捷)

这里写目录标题1.C++程序代码的基本形式1.1 C++文件类型1.2头文件的正规写法1.3内联函数 inline1.4 访问级别1.5构造函数1.5.1想要创建一个对象,则自动调用1.5.2语法:1.5.3构造函数priave形式--单例 singleton1.6常量成员函数与参数传递和返回值传递1.C++程序代码的基本形式1.1 C++文件类型. h文件:头文件:声明;标准库..cpp主体1.2头文件的正规写法防卫式声明#ifndef _COMPLEX_ /

2021-07-21 22:13:15 395

原创 第 7 章 深入浅出动态规划

70. 爬楼梯简单题 dp[i] = dp[i - 1] + dp[i - 2] 但是注意越界问题,这个公式只适用于n >= 3不需要开数组的做法: int cur ,pre1 ,pre2; pre1 = pre2 = 1; for(int i = 2;i <= n;i++) { cur = pre1 + pre2; pre2 = pre1; pre1 = cur;

2021-07-21 09:48:21 258

原创 第 4 章 居合斩!二分查找

69. x 的平方根朴素遍历必超时。别想了。。但是二分也是不能用i*i 这种会炸的操作。所以乘法要转换成除法。对于每一个mid值,x / mid = sqrt,如果这个mid就是x开方,那么mid == sqrt。当然也有开不尽的时候,此时l = = r,返回r就好。如果mid > sqrt ,说明mid过大了,缩减r的范围mid - 1。反之增大l为mid +1。...

2021-06-16 20:55:10 111

原创 LeetCode 剑指offer刷题笔记

05. 替换空格Q:如何取代已有的字符串中的字符的方法?A:可以新建一个字符串array,对于满足条件的字符使用push_back()放入array,需要替换的直接将替换后的字符放入array。也可以使用array[size++]的方式放入。...

2021-03-25 19:59:34 788

原创 150. 逆波兰表达式求值

本文仅为个人刷题遇到问题解析记录,题目和答案均在官网!!!逆波兰表达式Q:atoi()函数和.c_str()作用是什么?为什么要这样写?A:源代码:stk.push(atoi(token.c_str()));atoi()表示 ascii to integer)是把字符串转换成整型数的一个函数函数为int atoi(const char * nptr)这可以看出,传参是char型,所以要对token使用.c_str(),C++中使用string类表示字符串,string类的c_str方法可以返回

2021-03-21 20:26:36 112

原创 Leetcode 206.反转链表I

Leetcode 206.反转链表I 和92.反转链表II本文仅为个人刷题遇到问题解析记录,题目和答案均在官网!!!反转链表I反转链表I:迭代法:Q1:反转链表的循环四语句具体作用是什么?A1:while(curr != nullptr) { ListNode* next = curr->next;//这句话是记录当前节点的下一个节点。 curr->next = prev;//当前节点反转,即下一个节点变成自己之前的节

2021-03-21 19:27:21 47

原创 Leetcode 115.不同的子序列

Leetcode 115.不同的子序列题目连接题目:给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,“ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是)题目数据保证答案符合 32 位带符号整数范围。在这里插入代码片输入:s = "rabbbit", t = "rabbit"输出:3解释:如下图所示, 有 3 种可以从 s 中得到 "r

2021-03-17 21:24:51 126

原创 CodeForces 1417B Two Arrays

题目连接题意:给你一个组数和一个不幸数字T,要求把数组分成两部分,标记为1or0,同为1或者0的两个数相加尽可能的不等于T,求任意一种分法。解题思路:T/2+T/2=T,既然这样,把所有小于T/2的数字放在一边,大于T/2的数放在另一边,这样无论怎么加都不会加到T。刚好等于T/2的数据就一个为0一个为1这样交替分开放。#include<bits/stdc++.h>#define maxn 1000001using namespace std;long long int a[max

2020-10-03 21:53:16 1377

空空如也

空空如也

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

TA关注的人

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