自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 博客搬家至博客园

由于某些原因,现将博客搬家至博客园。CSDN博客不再更新。         欢迎大家访问我的新博客http://www.cnblogs.com/InitialD/

2017-08-12 09:48:05 313

原创 Unity动画过渡

最近在做一个小游戏,涉及到动画的过渡,但是由于不了解过渡设置导致出现十分奇怪的结果。下面在自己的实验基础上介绍一下这些参数的具体含义。如图,是一个从跑到滑行的过渡。假设这个过渡是从A到B。Has Exit Time:这个意思是A在什么时候过渡到B,即A在这个时刻发生过渡的动作,你可以把它理解为一个特殊的过渡条件,类似time=exit time一样,如果有设置过渡条件,那么就是同时

2017-08-11 18:11:52 11264 1

原创 Unity倒计时动画

最近在做一个小游戏开始的时候需要用到倒计时的效果,具体效果为每秒显示3,2,1,GO,然后字体由大到小,透明度由浅到深。下面介绍三种方法。1.最直接的方法,自己写倒计时的函数,开协程改变字体大小和透明度,这种方法较为简单,下面是我写的代码,其中state为需要改变的Text的text组件 public void WaitForBegin(int time) {

2017-08-11 16:31:11 2895

原创 Unity协程实际作用

IEnumerator Start () { StartCoroutine(coRoutine()); } IEnumerator coRoutine() { yield return new WaitForSeconds(1); }   最近在学习uinty,用到了协程这个东西。网上查阅了很多资料

2017-07-27 17:21:35 1069

原创 Unity中FixedUpdate和Update的区别

最近刚接触Unity一周,发现对于很多组件的原理不是十分清楚,其中一个就是脚本生命周期中的FixedUpdate和Update的区别。其实要想学好Unity必须具备计算机图形学的知识,奈何自己太无知,当初没有学习这门课程,现在只能咬牙自学。   首先说结论:物理模拟放在FixedUpdate中。   原因首先得说FixedUpdate和Update的区别,FixedUpdate是每隔一定的

2017-07-25 14:37:57 12880

原创 Python练习7-统计日记中最重要的词

第 0006 题:你有一个目录,放了你一个月的日记,都是 txt,为了避免分词的问题,假设内容都是英文,请统计出你认为每篇日记最重要的词。 之前已经练习过使用正则匹配文本中的单词,也练习过了文件遍历,这次算是两者结合起来的综合应用吧。由于之前在写文件遍历的时候使用了递归,遍历文件函数原型 travelf(dir,dest,func) 由于处理函数func当成参数传入,所以这次只需写个简

2017-06-02 11:48:25 297

转载 Python文件遍历的三种方法

1. os.path.walk()这是一个传统的用法。walk(root,callable,args)方法有三个参数:要遍历的目录,回调函数,回调函数的参数(元组形式)。调用的过程是遍历目录下的文件或目录,每遍历一个目录,调用回调函数,并把args作为参数传递给回调函数。回调函数定义时也有三个参数,比如示例中的func中的三个参数,分别为walk传来的参数、目录的路

2017-05-25 17:48:08 956

原创 Python练习6-文件遍历

第 0005 题:你有一个目录,装了很多照片,把它们的尺寸变成都不大于 iPhone5 分辨率的大小。这道题主要用到文件遍历和图片处理的知识,由于图片处理之前已经学过了,所以新的知识点主要是文件遍历遇到的主要问题有两个:1.文件的递归遍历,这样能遍历到一个文件夹下面的所有文件,而非只有子目录文件的遍历有很多方法,这里推荐三种方法Python文件遍历的三种方法

2017-05-25 17:42:13 275

原创 Python练习5-正则表达式

第 0004 题:任一个英文的纯文本文件,统计其中的单词出现的个数。这道题题意很模糊,统计“单词”其实很复杂,因为需要词典才能知道一个词到底是不是单词,这里应该就是简单的连续英文字母在一块就算一个单词(个人理解),使用正则表达式很简单。正则表达式很简单,就是东西太多记不住,每次使用都得看一遍,这里有一篇挺好的深入理解正则表达式下面是代码:#coding=utf-

2017-05-24 17:28:31 1606

原创 Python练习4-操作redis数据库

第 0003 题:将 0001 题生成的 200 个激活码(或者优惠券)保存到 Redis 非关系型数据库中。和操作MySQL数据库很类似,先安装redis,然后启动server,操作也很简单,没有什么坑下面是代码:#coding=utf-8import redisfrom genkey import genKey#连接redis 默认localhost:6

2017-05-23 18:21:42 254

原创 Python如何导入自定义模块

Python模块其实类似于C++的.h或者.cpp文件,Java的包,本质上就是一个.py文件,只不过你需要新建一个名为__init__.py的空白文件在同目录下。举个例子,比如连接MySQL数据库的MySQLdb模块,其文件夹是这样的其中的其他文件就是你import MySQLdb之后所用到的函数,所以你可以直接将自己的包复制到这个路径下,windos默认安装路径C:\Pytho

2017-05-22 19:07:13 1545

原创 Python练习3-操作MySQL数据库

第 0002 题:将 0001 题生成的 200 个激活码(或者优惠券)保存到 MySQL 关系型数据库中。这道题主要是Python操作MySQL数据库,其实只涉及到了插入操作,但是为了熟悉其他操作,在代码中增加了查询。遇到的主要问题有两个:1.如何加入自定义模块2.数据库的表和列命名的时候不能使用MySQL关键字,比如key,这个我刚开始没发现,结果一直是语法错误下面

2017-05-22 18:57:13 234

原创 QA实习第5周总结

实习已经一个半月了,感觉现在手里的工作已经熟悉,基本上能一个人做了。想想之后日复一日都是换汤不换药的工作,感觉有点疲倦。   吃饭的时候和当初面试我的面试官聊天,他是从腾讯跳槽过来的,说我这个岗位在腾讯都没有,都是RD自己测试的。听了之后五味杂陈,虽然我从来没有打算在某个地方,某个岗位上干一辈子,但是付出多少时间,就该有多少收获,否则这些日子不是虚度光阴吗。他的话让我觉得自己的工作好像可有可无

2017-05-22 17:33:40 2703

原创 Python练习2-随机数产生

第 0001 题:做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)?这道题主要用来熟悉Python的随机函数,用到了random模块,大家可以参考Python中的random模块  至于做题中遇到的坑,源文件在命名的时候用了random,导致使用random模块的函数时

2017-05-17 18:07:11 1097

原创 Python练习1-图像编辑

题目:将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果。 类似于图中效果这个主要是学习Python的PIL库使用,当然作为第一个用来练手的项目,出现了很多问题,以下是做项目前遇到的问题及解决方法:Python怎么安装库:然后就是具体项目了,以下是代码:#coding=utf-8from PIL

2017-05-11 19:38:11 519

原创 做有独立思想的技术人

或许我真的不适合做一颗螺丝钉,我不愿意做一条领着高薪的咸鱼。  事情的起因是这样的,公司的某款APP涉及到用户的隐私,比如银行卡,手机号码,本来这些所有信息都是用https传输的,然后PM突然说银行卡号和手机号码不能明文发送,接着RD说不能明文发送就行了,直接用base64编码,这下就不是明文了。但由于银行卡和手机号码涉及到多个接口,而且需要修改参数,很容易导致新的BUG,所以开会讨论。我说如

2017-05-09 12:52:23 344

原创 QA实习第四周总结

周报被BOSS的BOSS点名批评,说写的太简单。虽然刚来也接触不到什么核心的工作,但是我也没闲着,Python和PHP零基础,现在已经能写简单的Python,服务器的PHP代码也看了几千行。其实互联网行业挺尴尬的,弹性工作制,有需求的时候忙的要死,没需求的时候又很闲,公司确实很难管理。就算是忙的时候,开会和等待交接人员回复也浪费了很多时间,除非晚上熬夜加班,否则很难有整块的时间专心做事情。我的想法

2017-05-08 19:31:00 1952

原创 QA实习第三周个人感受

发现在上班的大部分时间效率都很低,总结一下原因有几个:    1.会议太多,除了正常做事,就是开会了,而且经常做事情做到一半就被叫开会,开会的时候废话太多,目标不明确,只是单纯的磨时间,时间没到继续说废话,时间到了还没说完的也忽略。感觉可以定一个固定的开会时间,这样不容易影响到正常工作。    2.工作协调不顺利,有时候可能不是你自己效率低,但是你自己的工作需要基于别人的工作,那别人一直拖

2017-04-25 17:06:46 4138

原创 QA实习第二周总结

已经实习第二周了,实际上是1周零2天,总结一下自己学到的内容,也想整理一下思路   第一周由于我们组负责的项目马上就要上线,所以导师忙的根本没空理我,我就吃吃喝喝看看文档,就这么过去了,除了看了一下Python的基本语法,基本没什么收获。   然而第一周过后的第一天,我的测试任务来了,两天测试时间,第三天要上线。瞬间懵比,完全什么都不会就要开始测试了,而且交给我的任务就我一个人测,其他人都

2017-04-21 19:15:40 2019 1

转载 windows消息机制

windows消息和消息队列 与基于MS - DOS的应用程序不同,Windows的应用程序是事件(消息)驱动的。它们不会显式地调用函数(如C运行时库调用)来获取输入,而是等待windows向它们传递输入。 windows系统把应用程序的输入事件传递给各个窗口,每个窗口有一个函数,称为窗口消息处理函数。窗口消息处理函数处理各种用户输入,处理完成后再将控制权交还给系统。窗口消息处理函数一

2017-04-10 13:12:44 273

原创 BT实习生面试经历

本来打算BAT全部面试完再写下心得,但是奈何阿里还要一个多月才能笔试,所以先记录一下这次的旅行。   腾讯和百度的面试完全都在我的预料之外,因为我之前投了网易的游戏,平时也很爱玩游戏,后来又收到网易的短信叫我参加沙龙,想着不出一个星期肯定会有电话面试了,所以几个星期一直都在准备网易游戏的面试。没想到等了两个星期(已经过了官网给出的面试时间), 还是没有任何消息。后来一问才发现投的那个岗位只要硕

2017-03-29 13:28:12 536

原创 C++与JAVA多态相同与不同

C++与Java中继承与多态是十分重要的特性,但在学习中发现并没有一篇将这两者做比较与总结,所以写下自己观点,本文中有自己的原创,也有引用网上经典的分析与例子,引用部分会说明并贴出链接。不足之处希望大家指正。首先说一下Java与C++继承的不相同特性,也是最容易让人混淆的三个概念:重载,重写,重定义 重载overload:重载是同名函数具有不同的形参列表(参数类型或数量),只有在同一个类内的函

2017-03-10 21:25:10 547

原创 53. Maximum Subarray Add to List QuestionEditorial Solution

假设最大子串为[i…k],那么其前缀之和sum[i…j](jsum[i…k],这与假设相反。得到这一结论,我们就可以设置一个临时变量用来计算前k个输之和,若为负,则将其置为0,否则判断其是否比当前最大值大。当k=n时,就找到了最大子串。class Solution {public: int maxSubArray(vector& nums) { int sum = nums[0];

2016-12-17 09:20:05 196

原创 120. Triangle

这道题很容易得出递推关系了,因为每个数只能由其上一层相邻的左右两个数走到,所以dp[i][k]=min(dp[i-1][k],dp[i-1][k+1])+triangle[i][k],由于我们只关心最小的数,所以其实可以直接用原来的数组存放中间值,到了最后一层中到达每个数的最小值的最小就是所求结果。class Solution {public: int minimumTotal(vecto

2016-12-17 09:19:04 162

原创 279. Perfect Squares Add to List QuestionEditorial Solution

典型的背包问题,假设小于n的完全平方数为Si,那么dp[n]=min(dp[n-S1],dp[n-S2],…dp[n-Si])+1class Solution {public: int numSquares(int n) { vectordp(n + 1, INT_MAX); dp[0]=0; dp[1] = 1; for (int i = 2; i < n + 1; ++

2016-12-17 09:17:20 383

原创 96. Unique Binary Search Trees

首先BST的定义为左子树每个结点小于根结点,右子树每个结点大于根节点。假设序列为[1…n],最大BST为dp[n],那么我们知道所有的BST为以每个数k(1  对于某个数k,以其为根的BST数量等于其左子树数量乘以右子树数量,现在讨论对于特定k,其左右子树数量。  左子树:左子树结点都小于k,很容易知道左子树的最大数量就为dp[k-1]  右子树:右子树结点大于k,即为[k…n],这里

2016-12-17 09:15:49 152

原创 377. Combination Sum IV

很标准的动态规划,容易得到递推公式dp(i)=dp(i-num[0])+dp(i-num[1])+......dp(i-num[n])。   也就是最后一个数字可以是数组中的任何一个小于target的数字,然后把所有的加起来   比如例子{1,2,3,4},则dp(4)=dp(0)+dp(1)+dp(2)+dp(3),分别为最后一步选择4,3,2,1,然后转化成了子问题   需要注意的

2016-11-22 19:45:19 153

原创 392. Is Subsequence

这套题直接依次比较字符就行了,相等就移动,如果s先移完,那说明是子串,如果t先移完,说明不是  class Solution {public: bool isSubsequence(string s, string t) { if (s.size() == 0) return 1; if (t.size() == 0) return 0; int j = s.siz

2016-11-22 19:01:35 178

原创 413. Arithmetic Slices

起初发现这道题很像子串问题,我们只需要求出每个连续的Slices的长度,然后计算每个连续Slices的子串个数即可。假设某个连续的串长度为N,那么它所包含的子串个数为(N-1)*(N-2)/2,很简单的数学问题 class Solution { public: int numberOfArithmeticSlices(vector& A) { if (A.size() < 3)

2016-11-22 18:31:09 242

原创 198. House Robber

动态规划,小偷有两种选择:1.偷最后一个房子,则倒数第二个房子不能再偷2.不偷最后一个房子所以问题可以简化为r[i]=max{r[i-1],r[i-2]+i}class Solution {public: int rob(vector& nums) { int n = nums.size(); if (n == 0) return 0; else

2016-11-21 19:28:41 295

原创 303. Range Sum Query - Immutable

动态规划问题,刚开始想直接写个二维数组,然后存下所有sum[i,j],后来发现测试案例有1W,然后RUN TIME ERROR了 后来发现其实只需要一维数组就可以解决,sum[i]存储i之前所有值的和,求解sum[i,j]=sum[j]-sum[i-1]  还有就是数组为空时返回0,感觉这个测试案例并没有什么卵用class NumArray {public:int*

2016-11-21 18:58:11 156

原创 406. Queue Reconstruction by Height

思路:这道题其实本质是一个排序问题,将pair元素排列,使得前面大于它的first元素的个数等于second。    思考一下很容易发现,对于那些height最低的元素,second就是他们的位置,所以可以直接先排列height最低的元素,排完之后会发现其实剩下的与之前类似,排第二低元素的时候只是有些位置被第一低元素占了,但是这并不影响什么,因为第二元素之前的空位置数必须为second才行,这

2016-11-21 17:22:08 189

原创 104. Maximum Depth of Binary Tree

思路:这道题很简单,利用递归定义,一棵树的高度等于左右子树高度较大的加1,对于空树或者只有一个节点的数,高度为1。/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *    

2016-11-21 17:20:39 145

原创 204.count primes

思路: 这道题的核心是判断一个数是否为素数,但是如果利用最简单的将n以内的数遍历会超时。新的思路为那些素数的倍数的数为合数,所以可以将这些数排除,而对于一个素数p,只需要从p2开始排除,因为之前的数已经被更小的素数排除了。最后还有一点可以改进,就是p只需要判断到就可以了,以为此时p2已经大于n了。class Solution {public:    int countPrime

2016-11-21 17:18:54 150

原创 121.Best Time to Buy and Sell Stock

这道题的本质是求连续最大子区间问题,将数组中的每个元素转换为与前一位的差,那么最大的子区间就是收益最高的区间。    在求最大子区间时,可以想到,如果将区间分为两部分,那么最大子区间可能是左边区间的子区间,右边区间的子区间,也可能跨越中点的区间。对于左右子区间,可以很容易转化为递归步,所以只需要计算跨越中点的最大区间,这个很简单:从中点开始往左往右加,若更大,则更新区间端点,否则继续加。i

2016-11-21 17:17:00 277

原创 100.Same Tree

很简单的二叉树遍历问题,递归定义:两颗树相等=根相等+左子树相等+右子树相等。特殊处理根为空的情况,很容易写出递归的实现。非递归的话深度遍历使用栈,层次遍历使用队列。/** *Definition for a binary tree node. *struct TreeNode { *    int val; *    TreeNode *left; *    Tree

2016-11-21 17:16:25 190

原创 70.Climbing Stairs

很经典的递归题,爬楼梯的方法=最后走1步+最后走2步,所以很容易就能写出递归算法。然而发现超时了,知道需要使用动态编程。其实上面的也是动态编程的思路,只不过动态编程将中间结果保存,这样其实遍历一次就能得到结果。现在重新思考了一下动态编程和分治的相同于区别:相同点:都需要寻找子问题,由子问题的解得到最终解不同点:分治可能除了子问题,还需要额外的操作,有时候额外的操作时间复杂度甚至超过了子

2016-11-21 17:15:50 188

原创 35.Search Insert Position

方法1:平凡思路从前往后比较,小于等于就停止,O(n)。方法2:在学习二分查找的时候知道二分查找不仅可以查找到元素是否存在,如果查找不到,那么停止的位置就是插入的位置。所以重新写一遍二分查找就好了,二分查找也有递归和非递归的,比较喜欢非递归,O(logn)。遍历法:class Solution {public:       intsearchInsert(vector& num

2016-11-21 17:14:55 151

原创 21.Merge Two Sorted Lists

归并排序的归并步骤,只不过这里使用的是链表,但是归并并不需要随机访问,所以处理链表和数组的思路是一样的。设需要归并的两个链表分别为p,q(默认为升序排列),比较p和q最左边的元素大小,较小的向后移动,直到一个走到了链表末尾。将没有走完的链表接到已排好序的链表后面即可。/** *Definition for singly-linked list. *struct ListNode {

2016-11-21 17:13:58 213

原创 19.Remove Nth Node From End of List

方法1:由于链表不能随机访问,所以很自然的想法是第一遍得到链表长度,然后计算倒数第n个结点的位置,但这样时间复杂度O(n2),想到用空间换取时间,可以用一个地址数组存储每个结点的地址,然后直接删除掉倒数第n个,返回头结点。 方法2:上面的方法虽然时间复杂度达到了线性,但是需要额外的空间,更好的方法是采用双指针追赶,设慢指针为pre,快指针为post,先让post指针走n步,然后pre指针开

2016-11-21 17:13:01 184

空空如也

空空如也

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

TA关注的人

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