自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

白小飞

如果你的才华配不上你的野心,那就静下心来看看博客

  • 博客(798)
  • 收藏
  • 关注

原创 1011. 在 D 天内送达包裹的能力

很好的题,一开始想dfs爆搜的,还是直接看了三叶学姐的题解。是一道二分查找的题,我们要找的是能在D天内送完的最小载重量。不考虑天数的情况下最小的载重量是足够运送最大货物的,最大载重量就是所有货物一天运完。左边界就是max,有边界就是sum,对其进行二分,写一个check函数,这个很重要,对当前运力进行判断,这是我们二分缩小搜索范围的标准。check内部就是计算当前运力需要几天运完如果运送天数<=D,mid不能扔,继续去左边找,看看能否找到更小的。如果>D,就要提升载重量,去右边找,而且..

2021-04-27 00:09:41 188

原创 897. 递增顺序搜索树

不用保存,直接修改cur的right就行了,但是要注意一点!!将root的left设为空,这个不会影响后序,因为root的left一定已经被访问过了/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(null..

2021-04-25 23:58:00 158

原创 普通大三的游戏开发实习

本人情况双非大三,本科中的蒟蒻,数字媒体技术专业,编程基本自学,算法0基础刷到lc300+,可以对付一般的笔试和面试,面经背的挺多的。三月初开始投递简历,投完第一个简历的时候非常激动,生怕明天就面试,没想到到现在都没回应(hhh),那时候简历真的烂,而且没有内推,完全是意料之中的结果。投递公司盛趣:第一家面试的公司,没有笔试,一面大概问了些基础的C++、C#、项目和渲染管线的内容,全部答出来了,反问面试官表现的时候,面试官也说非常不错。一面完半个月没消息,加hr微信,hr说一面面试官评价比较正向

2021-04-23 20:19:57 4842 13

转载 Unity文件、文件引用、meta详解

之前面试帕斯亚的时候被问到了meta文件有什么用,瞬间语塞,也想起来侯捷老师经常说的一句话:用一样东西,不明白他的道理,实在不高明转载自:https://www.cnblogs.com/CodeGize/p/8697227.htmlUnity项目中Assets目录下常见的文件类型在unity3d中一般存在这么几种文件资源文件(Imported Asset)代码文件序列化文件(Native Asset)文本文档非序列化文件meta文件资源文件(ImportedAsset)资源文件指一

2021-04-16 15:56:37 1223

原创 两个链表生成相加链表

可以参考大数相加,只不过加上了链表反转的思想,总的来说就是模板题class Solution {public: /** * * @param head1 ListNode类 * @param head2 ListNode类 * @return ListNode类 */ ListNode* addInList(ListNode* head1, ListNode* head2) { // write code here.

2021-04-16 00:47:55 184

原创 最长公共子串

是那题我很喜欢的动态规划的升级版!!法一:二维dp法二:状压dp,从后往前,不用记录,因为不会改变左上的法三:状压dp,从前往后,要记录左上的。状压dp最重要的就是如果不相等记得将dp[j]设为0class Solution {public: /** * longest common substring * @param str1 string字符串 the string * @param str2 string字符串 the string * .

2021-04-16 00:47:08 179

原创 1401. 圆和矩形是否有重叠

很久没有做到这么好的题了!!直接摘抄一下别人的解答,讲得比我好,也可以看我的注释class Solution {public: bool checkOverlap(int radius, int x_center, int y_center, int x1, int y1, int x2, int y2) { //将正方形中点看成坐标原点,把圆通过绝对值变到第一象限 //通过向量减法得到右上角的点到圆心的向量,判断这个向量和圆心的距离 ..

2021-04-14 00:35:20 232

原创 783. 二叉搜索树节点最小距离

两种方法,递归和迭代,总的来说就是不难,bst任意两个点的最小差,还不就是中序遍历两两相减吗?为了防止数据太恶心,我们维护的是pre结点,不是int的pre,递归就是第一次不比较,但是要更新pre为root。不管有没有更新res,pre都要在比较后更新。迭代也是一样第一次不比较class Solution {public: // void inOrderTrave(TreeNode* root){ // if(root == nullptr) return; // .

2021-04-14 00:31:03 163

原创 大数加法

不难,不管是数组,还是字符串,就用这个模板,不用考虑最后的进位什么的,也不用考虑越界什么的。但是sum是%10得来的,carry是/10得来的别搞反了。class Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 计算两个数之和 * @param s string字符串 表示第一个整数 * @param t string字符串 表示第二个整数 * @return st.

2021-04-14 00:26:26 178

原创 找到字符串的最长无重复字符子串

无重复或者异构就直接滑动窗口因为这里没有直接取出arr[r],当r++之后,我们要判断的是arr[r-1]对应的值,而不是arr[r]!!或者直接提前取出c = arr[r],然后ma[c]就行了。更新res是用max(res,r-l)这样子,没有+1-1哦class Solution {public: /** * * @param arr int整型vector the array * @return int整型 */ int maxLe.

2021-04-11 01:40:45 253

原创 264. 丑数 II

因为丑数一定是丑数2或3或5得来的,1是第一个丑数所以我们来一个数组,定义三个指针,指向数组里的元素,一开始都指向1,然后21是最小的,所以2放到第二个,然后2这个指针++,接下来31是最小的小于22,所以3这个指针向后推进class Solution {public: int nthUglyNumber(int n) { //因为丑数一定是丑数*2或3或5得来的,1是第一个丑数 //所以我们来一个数组,定义三个指针,指向数组里的元素,一开始都指向1,然后2*.

2021-04-11 01:36:47 180

原创 263. 丑数

说实话一开始曲解意思了,方法1虽丑但是实用,如果一个数的两个因子,其中有一个是质数,而且不是235的话就直接false方法2是很好的方法,因为丑数不只是质因数为235,可以说它的因数只有235,30这个丑数,虽然有一对因数为2,15,但是15最后也会被拆分成35。所以我们可以把丑数认为是2i+3j+5k这样的,如果n可以整除2就一直整除,然后再对3和5做相同的操作,判断最后n是否为1就行了,为1证明是由这三个数字相乘得来的。1是第一个丑数,负数以及0不是丑数class Solution {pub.

2021-04-10 01:12:04 197

原创 C++笔试题day15

虚函数就不能内联,题目错了方法重写的时候,子类的访问权限要大于父类的int a = b = c = 10这样bc都没定义,a=b=c这样赋值是没问题的。所以不要图方便,乖乖int a; int b;数字不超过3位,字符不超过1位++操作符只能用于变量,因为a++返回的是5,所以不能对5做++操作常量成员和引用成员必须要初始化,问题就在这static成员static成员是不允许在类内初始化的,除了const,那么static const 成员是不是在初始化列表中呢?答案是NO一

2021-04-10 00:10:51 195

原创 80. 删除有序数组中的重复项 II

两种方法法一:遍历然后erase,维护一个pre作为前一个数字,和前一个数字的出现次数,如果当前和pre相等,就让cishu++,不相等就更新pre和cishu。如果cishu大于2就erase当前迭代器,记得将it–,这个很重要,而且要让cishu也–。法二:快慢指针,这个快慢指针确实niubility,我是不太想得出,慢指针是放置完的所有数据的后一位,就是待放置的位置,快指针一直猛冲,就快指针和慢指针-2比,如果相等,就让快指针++,因为慢指针-2和慢指针-1,起码有两个数字是一样的了,那么快指针.

2021-04-07 01:17:55 292

原创 C++笔试题day14

三天假期转瞬即逝,还是要加油啊,希望可以在5.1之前拿到一个像样的实习offer就可以带大仪取深圳玩了hhh以\开头的算上后一个都是一个字符,而且strlen不算上最后的\0重载函数允许默认参数,但要注意 二义性问题void foo();void foo(int a=0);比如这样,你来个foo(),编译器不知道调用哪一个也算解决了一个疑惑,在c++中可以直接link* next这样子,因为在C++中可以有不完全的类类型,就是在类中可以声明类自身的指针和引用。但是在c中只能struct l

2021-04-05 23:13:53 175

原创 1143. 最长公共子序列

这种题目是真正的好题。二维dp不难,难的是状压dp,记录左上的是细节,细节中的细节class Solution {public: int longestCommonSubsequence(string text1, string text2) { //字符串子序列也就是匹配问题就考虑二维dp或者滑动窗口 //滑动窗口不能确保顺序,还是得dp //状态定义:dp[i][j]代表1的前i位和2的前j位最长的匹配长度 //状态转移:多种.

2021-04-05 02:02:11 181

原创 面试题 17.21. 直方图的水量

接雨水原题,hard+=1。考虑每个柱子上面能接多少是最重要的,被中间两个1的柱子迷惑住了,完全不用迷惑,因为1-1就是0,那么不用在乎它的宽度了。class Solution {public: int trap(vector<int>& height) { //不就是接雨水吗,计算每个格子上方可以接多少雨水就完事了 //用单调栈,因为碰到左右都比自己的高的时候才能接 //用左右低的那个-中间的高度然后*宽度就行了 .

2021-04-05 02:01:08 208

原创 781. 森林中的兔子

从今天开始去牛客题霸刷题啦,leetcode开始每日一题挑战,看看能不能坚持到秋招找到好工作位置。ヾ(◍°∇°◍)ノ゙动脑筋的题,总的来说还是哈希表,但是你要知道你记录下的数字有什么用。不能简单的做,如果1的数量刚好<=2,就加上2,因为1加上自身就是2。如果1的数量大于2,比如说3,证明有1对,加一只,就是2+1+1,因为单独的这只也需要一只如果是2222,有4/3=1对,就是3只(为什么是3只,因为一对就是2+1,这是能凑成2这个数字的最小数量,如果刚好有3只兔子说和它颜色一样的有两只,它

2021-04-05 01:58:01 181

原创 C++笔试题day13

scanf后面是地址,数组名本身就是一个地址,所以不用&.就不能重载枚举是一个被命名的整形常数的集合,不能是双引号元素字符串。而且不用=指针名和数组名是等价的,*(p+i)和p[i]以及arr[i]是一样的,但是最后的arr+i是一个地址,要解引用 * (arr+i)才行构造函数可以重载,不能重写析构函数可以重载,也可以重写...

2021-04-04 22:33:27 183

原创 318. 最大单词长度乘积

没啥好说的注意两个点,string的find是用来找子串的,也就是string,不是用来找char的,乖乖用substr截取一个字符串。string的find找到的话返回的是第一个匹配的下标,找不到的话是这个字符串.npos这个东西,不是返回迭代器的class Solution {public: int maxProduct(vector<string>& words) { //普通的暴力做法 //直接string的find来找就完事了.

2021-04-04 01:20:46 191

原创 371. 两整数之和

真的是很不错的题,注意要将a&b左移的结果转成无符号整数防止溢出(虽然我也不懂hhh)class Solution {public: int getSum(int a, int b) { //^异或,相同为0,不同为1,所以01就是1,00和11都是0,可以用来模拟没有进位的加法 //&与运算,全1为1,可以用&来算进位,&之后为1的位置证明这一位有进位,再对其<<1之后就将进位放到了应该去的位置,当完全没有进位了,就.

2021-04-04 01:18:56 168

原创 476. 数字的补数

笨人笨方法,注意没有前导0这个条件。特殊情况,num==0输出1补码就是对自身取反,为什么~是不对的呢,因为这是考虑了有前导0的情况的,比如2,没有前导0就是10,补码就是01,如果有前导0的情况,取补码就是1111111111111…01这样了我们先算出num有几位,然后用num来算res,将num的第一位给res的最后一位,如果第一位是1,res最后一位就是0。然后再左移res,最后res的最后一位就到第一位啦class Solution {public: int findCompl.

2021-04-04 01:16:48 207

原创 693. 交替位二进制数

暴力做就算了,一位一位和前面比较,不要耍小聪明一次跳两位class Solution {public: bool hasAlternatingBits(int n) { //移位运算符就行了,每次移动两位 //移动两位不行,比如0110,那么01不同,10也不同,但是11是相同的,还是得一位一位来 int pre = n & 1; n >>= 1; while(n != 0){ .

2021-04-03 01:14:49 173

原创 342. 4的幂

和2的幂类似,多一个条件,那就是1的出现位置是在奇数位上,可以用n%3==1来判断,n%3 ==2就是偶数位class Solution {public: bool isPowerOfFour(int n) { //首先4的幂一定是2的幂 //不用递归或者循环就是位运算 //4的幂也只有1个1,我们要在判断它是否是2的幂的情况下,判断它的1在第几位,如果在奇数位就是对的,但是要找出1在第几位,又要用循环 //可以用n%3==1来判.

2021-04-03 01:13:44 139

原创 231. 2的幂

没做过就做不来,做过了就做得来的easy题法一:一力降十会法二:考虑位运算,2的幂次,只有1个1,n-1之后,除了当前这个1变为0,其余全变为1,这是充要条件,如果进行&运算后为1,证明它是2的幂。tips:==的优先级大于&class Solution {public: bool isPowerOfTwo(int n) { //要不要考虑负数或者0的情况,还有小数 //负数以及0,2不管怎么样都达不到的,所以直接false .

2021-04-03 01:12:41 184

原创 C++笔试题day12

摸鱼好几天,稍微做一做.运算符是类成员访问运算符,->是指针对象访问成员时用的访问运算符。.的优先等级比 *高,在 *解引用之前,a是一个地址,对地址进行->当然是错的了函数中定义的局部变量存放在栈上,“hello world”是一个常量字符串,在常量区(也就是只能读不能写的区,就是只读存储区)*操作符优先级比+=高,所以a数组变为3,2,3,4。*(b+2)=2就是,因为b是一个指针变量,b是一个地址,所以b+2,这个2会自动加上2个int的大小,再解引用后赋值的结果就是3,2,

2021-04-03 00:26:53 225

原创 268. 丢失的数字

1.抽屉法放回原位,但是要考虑越界和重复,越界要放在最前面判断。2.用异或来做,如果存在1,那么1 ^ 1的结果就是0,0^某个数就等于某个数,我们从0遍历到nums.size()-1,将res分别和我们需要的按顺序的数字以及实际拥有的数字做异或操作,如果我们需要的数字实际也拥有,那么同时异或就会得到0,最后剩下的就是我们缺少的。我们将res一开始设为nums.size(),这样如果都不缺,输出的就是n了class Solution {public: int missingNumber(..

2021-04-02 01:36:50 192

原创 位运算小技巧

基本原理0s 表示一串 0,1s 表示一串 1。x ^ 0s = x x & 0s = 0 x | 0s = xx ^ 1s = ~x x & 1s = x x | 1s = 1sx ^ x = 0 x & x = x x | x = x利用 x ^ 1s = ~x 的特点,可以将一个数的位级表示翻转;利用 x ^ x = 0 的特点,可以将三个数中重复的两个数去除,只留下另一个数。1^1^2 = 2利用

2021-04-02 01:28:27 231

转载 Unity碰撞检测机制的原理(更新中...)

总是碰到关于碰撞的问题,今天实在忍不住了,来把它搞懂,不然听到八叉树,BSP什么的就怕可不行。转自:http://www.manew.com/thread-102595-1-1.html碰撞机制最近做动态地形生成的时候,发现碰撞检测无效,于是查阅了相关资料,大体上把unity的检测流程弄清楚了碰撞检测,就是检测两个物体是否相交,如果物体非常规则,比如球体,直接检测圆心距离是否小于半径和即可,计算量十分小,但是,如果物体不规则,比如一个角色,进行十分细致的碰撞检测就会变的十分困难,这时候,我们一般会用

2021-04-02 00:44:32 9401 3

原创 684. 冗余连接

如果知道思路就好做,就是并查集(我的并查集可是刷的很猛的),不知道思路就比较难做。这道题的题意其实就是给你一个无向有环图,你怎么样删一条边,让其成为一棵树(无向无环图,顶点=边+1)。最主要就是找到这条让他们成为环的边,我们的做法就是用并查集。遍历每条边,根据find函数判断这条边的两个顶点是否处于一个连通分量,如果不处于,就用union合并它俩。如果处于同一个分量,因为没有这条边的情况下,这两个顶点就处于同一个连通分量了,加上这条边就形成环了,所以直接返回这条边就行了。class Solutio..

2021-04-01 01:18:29 186

原创 769. 最多能完成排序的块

维护一个值是最右端,比如43210,那么一开始的r就是4,就是从这里到下标为4的就是一整块,但是中间可能有超过4的,比如453210,那么在中间的过程中就会更新成5,那么一直到5才是一块class Solution {public: int maxChunksToSorted(vector<int>& arr) { //如果当前位置的数字不对,就一直往后找,找到应该放在这里的位置 //然后维护一个长度就是需要合成一块的数组 /.

2021-03-31 01:47:38 191

原创 565. 数组嵌套

暴力找环的题,重点是用一个unordered_set来记录当前数字是否被访问过了,如果没有就继续往后,如果被访问过了,就结束这条路径的查找,用当前路径长度来更新maxnunordered_set是全局的!!不是局部的,不是每次来一个新起点就维护一个unordered_set,全局的话就可以记录013这种路径,你到1就不会再次进入这次循环了,因为这是重复搜索了class Solution {public: int arrayNesting(vector<int>& nums.

2021-03-31 01:46:31 213

原创 766. 托普利茨矩阵

反正挺恶心一道题,你想要对它进行优化就会发现一些坑。老老实实只和自己右下角的比就行了,不要一条路走到黑,这样会有很多重复判断class Solution {public: bool isToeplitzMatrix(vector<vector<int>>& matrix) { //暴力遍历 int row = matrix.size(); int col = matrix[0].size(); ..

2021-03-31 01:40:50 154

原创 785. 判断二分图

先说一下二分图的定义:1.两个子集内的顶点都不相交2.两个点集包含了所有点用了两种图的遍历方法,其实都是染色法,解释都在注释里法一:BFSclass Solution {public: bool isBipartite(vector<vector<int>>& graph) { //1.两个子集内的顶点都不相交 //2.两个点集包含了所有点 //两个连通的顶点要放到不同集合里,如果同一个集合的顶点是连通...

2021-03-31 01:39:12 214

转载 Unity mono和IL2CPP的区别

之前被问到了IL2CPP,今天找到一篇写的比较通俗易懂的文章,只能勉强入个门,还需要深入学习!转载自 https://blog.csdn.net/smile_Ho/article/details/109161237静态语言和动态语言的区别静态类型语言是指在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型.例如c++动态类型语言是在运行时确定数据类型的语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。 例如:c#接下来说一下unity3

2021-03-30 23:40:05 923

原创 697. 数组的度

和数量有关的子序列,当然是滑动窗口,而且是比较简单的滑动窗口。滑动窗口,如果某个窗口新加了r之后,如果达到了maxn,就缩减左边,缩减到window[r]不为maxn为止,每次在中间就要进行判断r-l+1和maxn谁更小,这个很重要,不是在外面判断的class Solution {public: int findShortestSubArray(vector<int>& nums) { //滑动窗口,如果某个窗口新加了r之后,如果达到了maxn,就缩减左边.

2021-03-30 01:37:19 166

原创 667. 优美的排列 II

dfs全排列是我写的,数学的看不懂,也不想看!class Solution {public: // void dfs(int n, int k,vector<int> tmp){ // if(res.size() != 0) return; // if(tmp.size() == n){ // unordered_set<int> qujian; // for(int i = 0; i &l.

2021-03-30 01:35:12 199

原创 645. 错误的集合

法一:用哈希记录每个数字出现的次数,从1到n再次遍历,如果有出现次数为0的,这个数就是缺的,如果有等于2的,就是多。法二:(明天看)还是可以用抽屉法的,放回自己的原位,如果原位上已经放了自己的复制体就跳过,再次遍历,如果位置不符合,就直接返回这个数和这个位置class Solution {public: vector<int> findErrorNums(vector<int>& nums) { //用哈希记录每个数字的出现的次数 .

2021-03-30 01:32:13 191

原创 C++笔试题day11

dynamic_cast和static_cast都不允许无关类型的指针或者引用转换,但是dynamic_cast有动态类型检查是在运行时检查的,所以l1编译时可以通过,但是转换不成功会返回NULL。static_cast连编译都过不去值传递不影响实参,指针传递的本质还是值传递,对指针变量本身进行赋值是不会影响实参的,但是对指针变量指向的值进行修改可以改变实参指向的值,这里是直接对指针变量本身进行赋值,如果想要影响实参需要用二级指针空引用可以调用静态函数,因为静态函数不属于某个对象而是属于类的

2021-03-29 23:22:41 171

原创 485. 最大连续 1 的个数

还是一样,最后更新一下maxn,因为可能最后以连续1结尾,那么就没碰到0,就不更新maxn了class Solution {public: int findMaxConsecutiveOnes(vector<int>& nums) { int maxn = 0; int tmp = 0; for(int i = 0; i < nums.size(); ++i){ if(nums[i] != 1){.

2021-03-29 01:20:58 177

空空如也

空空如也

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

TA关注的人

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