题型总结——leetcode 2860 让所有学生保持开心的分组方法数
2860. 让所有学生保持开心的分组方法数解法1234567891011121314151617181920212223242526 int DpTopic::countWays(vector<int>& nums){ //排序,枚举 // 将原有的内容降序排列 ranges::sort(nums, greater<int>()); int n = nums.size() - 1; //默认选择所有的元素 int res = 1; for (int i = 1; i < nums.size(); ++i) { if (nums[i] < n && nums[i - 1] > n) { ++res; } --n; } //最小的元素不是0的情况下,才能所有元素全都不选取还符合条件 if (nums.back() != 0) { ++res; } return res;}
题型总结——leetcode 2708. 一个小组的最大实力值
2708. 一个小组的最大实力值贪心算法1234567891011121314151617//很多地方都很常规,就是需要额外注意一下跟自身大小的比较 long long DpTopic::maxStrength(vector<int>& nums) { long long minVal = nums[0], maxVal = nums[0]; long long val1 = 0, val2 = 0; nums.erase(nums.begin()); for (long long x : nums) { val1 = minVal * x; val2 = maxVal * x; minVal = min({ minVal, val1,val2,x }); maxVal = max({ maxVal,val1,val2,x }); } return maxVal; }
题型总结——leetcode 2024 考试的最大困扰度
2024. 考试的最大困扰度解法滑动窗口,滑动窗口的重点是左右指针变动的时机,这道题目存在两种解法,一种是将T和F的筛选分开,在代码段中使用两个while循环体进行操作
双while循环体1234567891011121314151617181920212223242526272829303132333435363738int Topic::maxConsecutiveAnswers(std::string answerKey, int k) { int maxT = 0, maxF = 0; // 处理 'T' 的最长连续序列 int leftT = 0, rightT = 0; int flipsT = 0; while (rightT < answerKey.length()) { if (answerKey[rightT] == 'F') { ++flipsT; } while (flipsT > k) { ...
无题
C++数组和指针的关系12345char* p; *p = 10; char (*q)[10]; char memo[1][10]; q = memo;
Opengl1——比较乱的笔记,稍后整理
Opengl: glDrawArrays(GL_TRIANGLES,0,3);
OpenGL中通过缓冲区来绘制一个三角形的命令,在这之前要先定义好
如下:
1234567891011121314151617181920212223 float positions[6] = { -0.5f,-0.5f, 0.0f, 0.5f, 0.5f, -0.5f, }; unsigned int buffer; glGenBuffers(1,&buffer); glBindBuffer(GL_ARRAY_BUFFER,buffer);glBufferData(GL_ARRAY_BUFFER,6*sizeof(float),positions,GL_STATIC_DRAW);
positions数组是用来存储顶点位置的
1, 创建一个unsigned int
2, 创建缓冲区
3, 绑定缓冲区
4, 传递数据
顶点的概念:
顶点不只是一个单纯的由xy坐标位置组成的数据,它包含的是图像在这个位置的所有信息
Shader : ...
C++知识点
1.右值引用C++11后对拷贝构造函数的优化,允许窃取一个类中的所有内容,通俗来讲是讲整个类对象的内容搬空, 代码示例:
2.类的构造函数执行顺序虚基类,父类,成员对象,自己,父类的是按照继承的顺序进行进行调用,跟在构造器中的构造顺序无关,虚基类的构造是依照该类继承的父类中最深的虚基类进行构造,深是相对于最终的派生类来讲的,最终的派生类是浅。
3,类大小一个空的类对象大小是1B
一个类相当于一个数据结构,有内存对齐的效果,有小于4四节的里面的所有内容朝着4字节对齐,大于4字节则是自动补齐的8字节
一个string的大小是40B
小地图制作——Unity篇
相机投影内容准备RenderTexture在Assets问价目录下一个合适的位置创建该内容
UI这一步需要注意,选用的image必须是Raw Image,这样才会有对应的Texture选项
Camera场景中需要存在两个相机,一个相机使用该会导致画面只会渲染到之前的给定UI上,窗口主要内容丢失,对于需要使用虚拟相机的场景,建议按照原来的方法创建完成后直接复制原有的Camera(注意不是虚拟相机),在新创建的相机进行下图操作即可。
最终效果
Transform追踪如该方法的名字所示,最终的效果实现就是在update函数中对指定的Transform改变值进行一个追踪,视频的方法暂且不论,使用FindTag方法在拥有大量对象的场景中会导致地图加载慢,在个人demo中,存在对应的GameEvent系统,可以通过该系统将需要被追踪的对象的数据发送过去
实际代码
这里的disX之前计算的x,disY同理
最为关键的是这个转换操作
注意以下操作,是在UI中移动的关键
1image.rectlransform.anchoredPosition
下面是在个人项目Light中可以有效 ...
Unity——UI拖拽
UI拖拽实现接口1IBeginDragHandler, IEndDragHandler,IDragHandler
该方法是BeginDrag接口的实现方法,在指定游戏对象被拖拽的时候启用,对于鼠标的位置追踪则可以直接使用 eventData.position 来进行移动,不需要进行一些列转换
一般被拖动的UI会受到自身所在层级影响,因此在一开始就需要重新设置一下被拖动UI的父对象
12345678public void OnBeginDrag(PointerEventData eventData) { originParent = transform.parent; this.transform.SetParent(transform.parent.parent.parent); this.transform.position = eventData.position; canvasGroup.blocksRaycasts = false;//射线可以穿透 ...
题型总结——leetcode 1493 删除一个元素后全为1的最长子数组
1493. 删掉一个元素以后全为 1 的最长子数组解法滑动窗口123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 //核心是 每一次都已遇见0都会默认删除,记录遇见的0的数量, 当滑动窗口内的0数量超过一个,,就会去缩减左边界,抛弃掉上一次删除的0就可以对新加入的0进行 删除操作,非常巧妙 000111011110111111,int ans = 0, n = nums.size(); // cnt数组记录区间[j, i]中0和1的数量 int cnt[2] = {0}; for(int i = 0, j = 0; i < n; ++i) { cnt[nums[i]]++; // 缩小左端点j while(cnt[0] > 1) cnt[nums[j++]]--; // 必须删除一 ...
C#技术————对象池和约束类型
对象池代码
123456789101112131415161718192021222324252627public static class RefreshDataPool<T> where T : RefreshData<T>, new() { private static readonly List<T> pool = new List<T>(); public static T Get() { lock (pool) // 使用锁来确保线程安全(如果这是多线程环境的话) { if (pool.Count > 0) { // 假设我们总是返回列表中的最后一个对象,并移除它以供重用 // 注意:这可能会导致对象重用顺序的问题,您可能需要根据实际情况调整 ...