自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一只热爱游戏的猫咪

一起来做游戏,一起来玩游戏吧

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

原创 Unity3d--第三人称角色移动控制

第三人称的角色移动控制方案有很多种: 1. rigidbody.velocity() : 通过控制刚体的速度 来实现对角色的移动控制2. rigidbody.MovePosition() : 通过调整刚体的Position 来实现对角色的移动控制3. rigidbody.AddForce() / AddRelativeForce(): 通过给刚体的施加力,来实现对角色的移动控制,模拟惯性(例如:开车)

2017-09-24 15:24:53 10377 1

原创 Unity3d--实现第三人称视角(相机跟随)

实现第三人称视角有三种:方案1:最简单的就是 直接 把主相机作为Player角色的子物体,并自行固定好相机的位置方案2:设置一个空的GameObject,并且与Player的旋转和位置保持一致,然后将 主相机 设置成该GameObject的子对象。

2017-09-13 02:40:35 24480 3

原创 LeetCode. 673. 最长递增子序列的个数(动态规划 + 状态累计)

#include <vector>#include <iostream>using namespace std;class Solution {public: int findNumberOfLIS(vector<int>& nums) { pair<int, int> result(1, 0); //长度 +...

2019-05-13 13:33:12 569

原创 LeetCode. 二叉树的最近公共祖先(树遍历+用栈存两条路径+寻找路径中的节点)

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}};#include <vector>using namespace std;...

2019-05-10 17:26:00 733

原创 LeetCode. 二叉树中的最大路径和(递归,分左右子树进行判断)

给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例 1:输入: [1,2,3]1/ 2 3输出: 6struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int...

2019-05-10 17:13:31 451

原创 LeetCode. 被围绕的区域(深搜 / 广搜 / 并查集)

给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X#include <vector>#include <map>...

2019-05-10 12:02:05 339

原创 LeetCode.直线上最多的点数 (最大公约数对分数进行约分,自建string作分数)

给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。输入: [ [ 1 , 1 ], [ 2 , 2 ], [ 3 , 3 ] ]输出: 3class Solution {private: //获取斜率 //通过string 构造分数,避免精度不正确 //使用最大公约数化简 分子和分母 string getK(int y, int x) { //y有可能为...

2019-05-03 18:04:15 431

原创 LeetCode .零钱兑换(动态规划)

1、给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:· 输入: coins = [1, 2, 5], amount = 11· 输出: 3· 解释: 11 = 5 + 5 + 1#include <vector>#include <alg...

2019-05-02 13:45:50 654

原创 LeetCode. 分割回文串(Permutations)【传统常规递归回溯,类似DFS】

#include <string>#include <vector>using namespace std;class Solution {private: //简单判断回文 bool isPalindromeString(const string& str) { int i = 0, j = str.size() - 1; while (i ...

2019-04-11 17:30:35 212

原创 LeetCode. 寻找两个有序数组的中位数(二分技巧 + 边界处理问题)

核心讲解可参考:https://blog.csdn.net/hit1110310422/article/details/80865539i 值用于切割nums1,j 用于切割num2对 nums1数组 进行二分查找,搜寻到恰好符合要求的 i 值要求: B[ j − 1 ] ≤ A[ i ] 且 A[ i - 1 ] ≤ B[ j ]前提需要满足 :1、Length(nums1...

2019-04-09 15:20:32 367

原创 LeetCode. Task Scheduler(CPU任务调度安排算法,减少待机时间【贪心】)

class Solution {public: int leastInterval(vector<char>& tasks, int n) { vector<int> task_vec(26, 0); for (int task = 0; task < tasks.size(); ++task) ++task_vec[tasks[task] ...

2019-03-30 17:47:20 1368

原创 LeetCode. 递增的三元子序列(时间O(n)空间O(1))

class Solution { public: bool increasingTriplet(vector<int>& nums) { int m1 = INT_MAX, m2 = INT_MAX; for (auto a : nums) { if (m1 >= a) m1 = a; el...

2019-03-29 10:09:14 187

原创 C++ —— 数组/指针 做为函数参数传递

#include &lt;vector&gt;#include &lt;iostream&gt;using namespace std;void fun1(int *a) { printf("1、int *a :%x %d\n", &amp;a, sizeof(a));}void fun2(int a[2]) { printf("2、int a[2] :%x %d\n", &am...

2019-03-16 15:48:51 2042

原创 LeetCode. 逆波兰表达式求值(后缀表达式 - 类似于树的后序遍历 // 中缀转前缀or后缀)

后缀表达式,可以看作是一棵树的后序遍历,树的叶子节点均为操作数,非叶子节点均为操作符号中序遍历特征就是先看子节点 再看父节点所以对于后缀表达式的解析,只需要一个栈来存取操作数从左→→→右遍历:— 遇到操作数则入栈— 遇到操作符号则说明 该子树的孩子节点都遍历完了,回到了父节点了(后序遍历的逻辑),则将栈顶弹出两个操作数 和 该操作符号 进行运算#include &lt;vector...

2019-03-15 16:37:50 1044

原创 LeetCode. Insert Delete GetRandom (巧用map与vector结合,实现O(1)复杂度)

unordered_map 底层数据结构是hash表,插入insert和删除delete都是 O(1) 时间复杂度利用vector来实现 random() 方法,map的key保存元素值,value保存元素存在vector的数组下标对于删除delete的数val,直接使用vector的末尾数字填充到被删除的数的位置,并且还需要修改map,将被删的数移除,并且将末尾数字在map中对应的valu...

2019-03-15 12:20:57 284

原创 LeetCode. 矩阵置零(巧用数组首行首列存取信息,空间复杂度O(1))

#include &lt;vector&gt;using namespace std;class Solution {public: void setZeroes(vector&lt;vector&lt;int&gt;&gt;&amp; matrix) { bool firstRowHasZero = false; bool firstColumnHasZero = false;...

2019-03-14 14:38:14 227

原创 LeetCode. 两整数之和(位运算,计算加/减)

正数相加的位运算操作好理解负数相对难理解C++中,负数以补码形式存放,所以bitset&lt;32&gt;(a) 获取到的 负数a 的二进制数是补码例如:3 + (-1)可以看做:【暂时用8位处理】  0000 0011+ 1111 1111 (原码为:1000 0001,除了符号位,取反+1)————————将这两个二进制直接相加,得到  0000 0010所以很巧妙,二...

2019-03-07 22:28:06 391

原创 LeetCode. 二叉树的序列化与反序列化(非递归【层次遍历】or 递归【先序遍历】)

#include&lt;string&gt;#include&lt;sstream&gt;#include&lt;queue&gt;#include&lt;iostream&gt;using namespace std;struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val...

2019-03-07 15:35:01 1111

原创 LeetCode. 三数之和(经典)

//1、for循环一遍,找到第一个数a//2、标记后面的数组的最左边为left,最右边为right//3、left与right指针相互靠近,依次判断num[left]+right[right]==-a//4、O(n^2)#include &lt;vector&gt;#include &lt;algorithm&gt;#include &lt;set&gt;using namespac...

2019-03-07 00:44:21 187

原创 LeetCode. 位1的个数(位运算)

#include &lt;stdint.h&gt;using namespace std;class Solution {public: //方法1:O(32) int hammingWeight1(uint32_t n) { int result = 0; for (int8_t i = 0; i &lt; 32; i++) { if (n &amp; (1 &lt;...

2019-03-05 11:18:54 742

原创 LeetCode. 最大子序和 (动态规划)

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。简单动态规划处理:1、数组 dp[ i ] 看作:前 i 个的最大子序和。2、 dp[ i ] 要么等于当前 nums[ i ] 的值,要么等于...

2019-03-03 20:12:39 160

原创 LeetCode 回文链表(遍历过程中逆置一半的链表)

struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};class Solution {public: bool isPalindrome(ListNode* head) { int lenth, i; Li...

2019-02-06 22:16:05 224

原创 LeetCode 合并两个有序链表(非递归迭代:原地合并 + 递归)

struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(nullptr) {}};#include &lt;iostream&gt;using namespace std;class Solution {public: //个人第一想法版本(非递归迭代) Li...

2019-02-06 00:29:07 431

原创 LeetCode 反转链表(递归 / 迭代)

//递归 //reverseList()返回的是从currentNode节点开始后面的链表整个反转后的结果的头节点 ListNode * reverseList(ListNode* currentNode) { if (currentNode == nullptr)return nullptr; if (currentNode-&gt;next == nullptr)return ...

2019-02-05 19:20:27 311

原创 Morris遍历详解——二叉树先序中序后序遍历( 时间复杂度O(N),空间复杂度O(1) )

Morris二叉树遍历:来到当前的节点:Cur如果Cur无左孩子,Cur向右移动 (Cur = Cur.right)如果Cur有左孩子,找到Cur左子树上最右的节点,记为 mostright(1) 如果mostright的右指针为null,则让其右指针指向Cur,并使Cur向左移动 (Cur = Cur.left)(2) 如果mostright的右指针指向Cur,则让其右指针...

2018-11-07 01:28:41 7826

原创 LeetCode5.最长回文子串————Manacher算法

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。示例 1:输入: “babad”输出: “bab”注意: &amp;amp;quot;aba&amp;amp;quot;也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”方法一: 动态规划,O(n^2)i 为做指针,j 为右指针。dp[ i ][ j ]指:从i到j位置组成的字串是否回文,回文则1,否则0。若str[ i...

2018-11-03 16:56:09 412

原创 LeetCode516. 最长回文子序列 (动态规划)

经典的字符串动态规划,定义两个首尾指针i和j状态初始条件:dp[ i ][ i ] = 1 ( i = 0 到 n - 1)状态转移方程: if( s[ i ] == s[ j ] ):dp[ i ][ j ] = dp[ i + 1 ][ j - 1 ] + 2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;

2018-10-31 18:25:52 809

原创 LeetCode382. 链表随机节点————蓄水池抽样算法

//蓄水池抽样class Solution {private: ListNode * HEAD;public: //初始化 Solution(ListNode* head) { srand((unsigned)time(nullptr)); HEAD = head; } //获取链表上的随机节点的值 int getRandom() { L...

2018-10-18 20:30:50 506

原创 LeetCode142. Linked List Cycle||(环形链表)——— 判断链表是否有环以及求其入环节点

struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(nullptr) {}};//判断链表是否有环//方法://1、空间复杂度n:使用set集合保存每一个节点,判断是否有重复//2、空间复杂度1:使用两个指针,快指针走两步,慢指针走一步;// 若快指针为null则无环。/...

2018-10-15 15:57:07 217

原创 网易2017游戏研发面试题 —— 推箱子(广搜BFS判断)

#include&lt;iostream&gt;#include &lt;queue&gt;#include &lt;map&gt;using namespace std;typedef pair&lt;int, int&gt; point;typedef pair&lt;point, point&gt;state;const int dirX[4] = { 0,0,1,-1 };...

2018-09-29 21:33:38 815

原创 KMP算法模板 - 构建next最长前缀数组 与 kmp核心算法

#include &lt;iostream&gt;#include &lt;string&gt;using namespace std;//构建next最长前缀数组int* getNextArray(const string &amp;sub){ if(sub.length() == 1) {//只有一个字符 return new int[1] {-1}; } int* ne...

2018-09-25 22:20:49 231

原创 Accelerated C++ —— 简易版std::vector类的实现

#include &lt;memory&gt;#include &lt;iostream&gt;#include &lt;algorithm&gt;namespace Ming { template&lt;class T&gt; class vec { public: typedef T* iterator; typedef const T* const_iterator;...

2018-09-12 18:34:32 301

原创 剑指offer——不用加减乘除做加法(按位与和异或)

class Solution {public: int Add(int num1, int num2) { while(num2 != 0){//若需要进位 int sum = num1 ^ num2;//异或,01=1,00=0,11=0【求得相加数,需要进位的直接取0,相当于11=0】 int carry = ...

2018-09-07 11:58:07 238

原创 剑指offer——正则表达式匹配(递归调用)

当模式中的第二个字符不是“*”时:1、如果字符串第一个字符和模式中的第一个字符相匹配,那么字符串和模式都后移一个字符,然后匹配剩余的。2、如果 字符串第一个字符和模式中的第一个字符相不匹配,直接返回false。而当模式中的第二个字符是“*”时:如果字符串第一个字符跟模式第一个字符不匹配,则模式后移2个字符,继续匹配。如果字符串第一个字符跟模式第一个字符匹配,可以有3种匹配方式:...

2018-09-06 10:36:40 241

原创 剑指offer——重建二叉树(先序后序求解树)

```class Solution {private: TreeNode * getTheTree(vector&lt;int&gt;&amp; pre, vector&lt;int&gt;&amp; vin, int pi, int pj, int vi, int vj) { if (pi &gt; pj || vi &gt; vj)return nullptr;...

2018-09-04 12:05:39 177

原创 LeetCode 128.最长连续序列(Longest Consecutive Sequence)【并查集】【HashMap技巧】

中等难度题吧,不算hard题,需要了解并查集用法将连续的数字进行合并成一个集合,最后看所有集合中哪个集合数目最多(或者直接边合并边记录最大值)#include &amp;lt;vector&amp;gt;#include &amp;lt;algorithm&amp;gt;#include &amp;lt;unordered_map&amp;gt;#include &amp;lt;set&amp;gt;#include &am

2018-08-09 16:59:49 1101

原创 PAT 1143—— Lowest Common Ancestor(二叉排序树 + 最低公共祖先)

二叉排序树最低公共祖先

2018-03-21 21:38:10 793

原创 PAT 1119—— Pre- and Post-order Traversals(先序后序求解树)

先序遍历后序遍历 求解树

2018-03-17 13:53:53 277

原创 PAT 1127—— ZigZagging on a Tree(中序后序求解树)

中序遍历后序遍历 转 层次遍历

2018-03-17 12:25:35 319

原创 PAT 1123—— Is It a Complete AVL Tree(平衡二叉树)【左旋右旋各种旋】

AVL树,插入与平衡

2018-03-16 13:25:39 309

空空如也

空空如也

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

TA关注的人

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