自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

白小飞

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

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

原创 403. 青蛙过河

dp的hard题,写出状态定义和状态转移都不是最难的。basecase很难,而且最好从dfs->记忆化->dp的顺序循序渐进class Solution {public: bool canCross(vector<int>& stones) { //dfs超时就考虑dp //状态定义:dp[i][k]的含义是当前在第 i 个位置,并且是以步长 k 跳到位置 i 时,是否到达最后一块石子。 //状态转移方程:根据上..

2021-04-29 17:40:07 146

原创 938. 二叉搜索树的范围和

利用bst的特性做,如果当前结点符合,就让sum加上当前的,并递归左右。如果当前小于low,就去右边就行了,否则就去左边。最后返回sum。一开始考虑中序遍历,很明显这样很快,O(logn),中序就是O(n)了class Solution {public: void dfs(TreeNode* root, int low ,int high){ if(root == nullptr) return; //根据low和high和val递归左边or右边 ..

2021-04-28 00:24:28 114

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

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

2021-04-27 00:09:41 142

原创 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 130

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

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

2021-04-23 20:19:57 4429 12

转载 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 1020

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

可以参考大数相加,只不过加上了链表反转的思想,总的来说就是模板题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 149

原创 最长公共子串

是那题我很喜欢的动态规划的升级版!!法一:二维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 140

原创 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 195

原创 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 116

原创 大数加法

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

2021-04-14 00:26:26 142

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

无重复或者异构就直接滑动窗口因为这里没有直接取出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 194

原创 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 139

原创 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 158

原创 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 140

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

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

2021-04-07 01:17:55 244

原创 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 139

原创 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 136

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

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

2021-04-05 02:01:08 165

原创 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 140

原创 C++笔试题day13

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

2021-04-04 22:33:27 144

原创 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 155

原创 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 125

原创 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 165

原创 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 138

原创 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 105

原创 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 145

原创 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 189

原创 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 144

原创 位运算小技巧

基本原理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 163

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

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

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

原创 684. 冗余连接

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

2021-04-01 01:18:29 141

空空如也

空空如也

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

TA关注的人

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