- 博客(96)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
翻译 每个软件工程师必知的unicode和字符集知识(翻译)
原文链接:(https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/)原文作者:Joel Spolsky 上网多了,就必然...
2019-01-23 16:20:53 1296
原创 神魔圣域的赛马游戏下注问题
题目:神魔圣域的一个小游戏,通过分析不同队伍赛马的状态,给出不同的赔率。玩家对自己看好的马队下注,获得金币,如图。游戏中允许多次下注,通过什么策略可以保证自己稳赢不赔?解答其实,是一个线性规划的题目,四支队伍,拥有不同的赔率,可以通过线性组合,分析得出最佳的下注比例,保证下注后的稳定收益。假设总金额投入为100,那么分配给四支队伍的金额分别为:x1+x2+x3+x4=100x_1 ...
2019-01-18 18:40:22 679
原创 926. Flip String to Monotone Increasing
题目:解答:统计字符串中有多少个1,多少个0,然后遍历每个位置,计算如果间隔点在这个位置,左边需要改变几个1->0, 右边需要改变几个0->1,获得其中最小的改变点。代码:class Solution {public: int minFlipsMonoIncr(string S) { int len = S.size(); int l...
2018-12-06 18:10:18 195
原创 密码学读书笔记小结
密码学是保证消息的私密性和完整性以及消息认证的基础。加密算法的选择和密钥的管理是安全机制的效率、性能和可用性的关键。公钥加密算法: 分发密钥比较容易,但是对大数据量的加密性能较差密钥加密算法: 更适合大批的加密任务混合型加密协议: 例如TLS,先用公钥加密建立一个安全通道,然后使用通道交换密钥,并将此密钥用于后续数据交换。对分布式系统攻击的分类:窃听: 未经授权获得消息副本伪装:...
2018-11-21 12:54:20 1543
原创 74. Search a 2D Matrix
题目:解答:使用二分查找,首先查找每行首数字,然后确定到行,在该行使用二分查找确定最后元素位置,如果找到则返回true。最终时间复杂度为 O(lgrow)+O(lgcol)O(\lg row) + O(\lg col)O(lgrow)+O(lgcol)代码:class Solution {public: bool searchMatrix(vector<vector&...
2018-11-18 21:39:36 146
原创 73. Set Matrix Zeros
题目:解答:提供了两种解题思路:第一种,使用两个数组,分别标记每一行、每一列是否有0的存在,然后再去更新二维数组。第二种,使用两个变量brow,bcol分别标记第0行,第0列是否存在0,然后使用每一行、每一列的第一个单元存储是否该行、该列存在0.代码:class Solution {public: // 方法一 void setZeroes(vector<ve...
2018-11-18 21:38:55 328
原创 71. Simplify Path
题目:解答:很合理的想法,是用一个栈来记录整个path路径的每个节点,如果遇到"…“就回退一个位置,遇到”."就忽略,退到空栈了就不处理。但是后来发现用栈的话,最后取出数据麻烦,所以还是使用了一个vector来记录所有的path路径节点。代码:class Solution {public: string simplifyPath(string path) { ...
2018-11-18 21:38:14 150
原创 70. Climbing Stairs
题目:解答:典型的斐波那契数列,每一个位置的次数等于从前一个位置跳跃过来,或者前两个位置跳跃过来。两种可能的叠加。代码:class Solution {public: int climbStairs(int n) { if(n < 2) return 1; vector<int> vec(n, 0); vec...
2018-11-18 21:37:24 88
原创 Unity 2018 Shading读书笔记(一)
1. Post Processing Stack必须是在Unity 2018才能使用的一个内置功能。如果没有安装,需要首先在Unity编辑器的Package Manager内安装,如下图:通过界面菜单的Windows -> Package Manager打开Packages界面,在All里面选择Post-processing后在右边install。因为Post-processing这...
2018-11-17 19:52:32 462
原创 69. Sqrt(x)
题目:解答:自己设计了两种方案,一种是使用牛顿逼近法,原理是: ai+xaia_i + \dfrac{x}{a_i}ai+aix 不断迭代,最终会趋近极限为 ai=xa_i = \sqrt xai=x一种是使用二分查找法。下面给出了两种方法的实现,第二种方法给出了递归和迭代两种实现方式。这里magic数等于 INT_MAX\sqrt{INT\_MAX}INT_MAX 取整。...
2018-11-16 14:33:27 220
原创 68. Text Justification
题目:解答:题目标注为hard,但是其实难度不高,没有什么复杂的算法。主要是情况区分处理。每读取x个单词,直到 ∑x=beginx=endx.size≤maxWidth\sum_{x=begin}^{x=end} x.size \le maxWidthx=begin∑x=endx.size≤maxWidth如果x 取到了最后一个单词,则使用自然布局,每个单词分隔一个空格否则,...
2018-11-16 14:32:58 268
原创 67. Add Binary
题目:解题:实现二进制的加法,使用预先开辟数组记录。代码:class Solution {public: string addBinary(string a, string b) { int lena = a.size(), lenb = b.size(); int maxlen = max(lena + 1, lenb + 1); ...
2018-11-16 14:32:29 92
原创 66. Plus One
题目:解答:简单的求和,需要处理一下进位即可。代码:class Solution {public: vector<int> plusOne(vector<int> &digits) { int flag = 1; int len = digits.size(), index = 0; vector&...
2018-11-16 14:32:02 118
原创 65. Valid Number
题目:解答:判定是否数字是合法数字,主要是区分几点数字前后可以有空格,中间不可以有空格符号+/-只可以存在数字之前数字如果不包含科学计数法e,则只可以存在一个+ - .符号不允许只有+ - . e 符号没有数字科学计数法e 后面的数字可以有+/-符号,不可以有小数点科学计数法前后必须包含数字去除空格后为空串,不合法这样设定几个标记位,然后遍历字符串,即可判定出来。代码:...
2018-11-16 14:31:05 181
原创 64. Minimum Path Sum
题目:解答:依然是类似动态规划的思想,LeetCode最佳答案使用自己开数组存储,运行速度会更快。我的解法使用vector内原地存储记录,速度好像是要慢一些,但是不需要使用额外空间,也算比较满意了。代码:class Solution {public: int minPathSum(vector<vector<int>>& grid) { ...
2018-11-16 14:30:38 112
原创 63. Unique Paths II
题目:解答:仍然是动态规划,但是,如果有阻挡,那么当前位置不可达,标记path总数为0代码:class Solution {public: int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) { int row = obstacleGrid.size(),...
2018-11-16 14:30:12 90
原创 62. Unique Paths
题目:解答:一个标准的动态规划问题,在任一点 (i,j) 处的路径,分别来自(i-1,j)和(i,j-1)处,于是有: table(i,j)={1i=0 or j=0table(i−1,j)+table(i,j−1)elsetable(i,j) = \begin{cases} 1\quad i = 0\ or\ j = 0 \\ table(i-1,j) + tabl...
2018-11-16 14:29:42 125
原创 61. Rotate List
题目:解答:标记截断的位置,重新连接链表即可。代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solu...
2018-11-16 14:29:16 123
原创 60. Permutation Sequence
题目:解答:初始数列为 ai=1,2,3,…,ni∈[1,n]a_i = {1,2,3,\ldots,n}\quad i\in [1,n]ai=1,2,3,…,ni∈[1,n]这样第一个数为1,剩余数列的排列可能为 (n−1)!(n-1)!(n−1)!第k个序列的第一个数需要满足 a1⋅(n−1)!≤k≤(a1+1)⋅(n−1)!a_1 \cdot (n-1)! \le k \le (...
2018-11-16 14:28:34 105
原创 59. Spiral Matrix II
题目:解答:按照要求遍历即可。代码:class Solution {public: vector<vector<int>> generateMatrix(int n) { if( n == 0 ) { vector<vector<int> > ans;
2018-11-14 15:44:43 122
原创 58. Length of Last Word
题目:解答:从后往前遍历,很容易判定出来。代码:class Solution {public: int lengthOfLastWord(string s) { if(s.empty()) return 0; int index = s.size() - 1; while(index >= 0 && s[...
2018-11-14 15:44:17 92
原创 57. Insert Interval
题目:解答:最开始看以为是会有坑比较复杂,所以用了一个很暴利的区分各种情况分析的做法,将新插入newInterval的start,end的位置各种可能分别标记出来,最后根据各种情况分别计算。见方法一。做完后,看了LeetCode里面别人的代码,才感觉自己的做法比较傻,两种方法都列不出来了。代码:/** * Definition for an interval. * struct I...
2018-11-14 15:43:53 208
原创 56. Merge Interval
题目:解答:常规的合并,根据前后interval是否有交集判定。代码:/** * Definition for an interval. * struct Interval { * int start; * int end; * Interval() : start(0), end(0) {} * Interval(int s, int e) ...
2018-11-14 15:43:21 332
原创 55. Jump Game
题目:解答:一次遍历,寻找最大值,如果最大跳跃值小于index,则证明不能跳跃到当前位置,返回false代码:class Solution {public: bool canJump(vector<int>& nums) { int len = nums.size(); int maxjump = 0; for...
2018-11-14 15:42:54 82
原创 54. Spiral Matrix
题目:解答:使用四个变量记录left, right, top, bottom值,然后在之间遍历即可。代码:class Solution {public: vector<int> spiralOrder(vector<vector<int>>& matrix) { if(matrix.size() == 0 || mat
2018-11-14 15:42:27 92
原创 53. Maximum SubArray
题目:解答:分两种情况分别考虑,第一种情况,全是非正数,直接遍历取最大值,第二种情况,有正数,使用标记数值,取范围值之和。代码:class Solution {public: int maxSubArray(vector<int>& A) { int temp = 0,max = 0; int flag = 1; int ...
2018-11-14 15:41:59 123
原创 52. N-Queens II
题目:解答:使用题51的解法,但是不需要保存记录了。代码:class Solution {public: bool CheckOK(vector<string>& panel, int row, int col,int n){ for(int i = 0;i < row; ++i) if(panel[i][col...
2018-11-14 15:41:34 89
原创 51. N-Queens
题目:解答:使用深度搜索寻找出所有符合要求的皇后排序位置。代码如下:CheckOK: 用于判定在第row行col列放置皇后,是否会与之前的有冲突(之前的会维护为合法的皇后布局)while(row != n):这层循环用于获取在当前布局和当前row,col下的计算下一个合法的n皇后布局最后面的for循环:前面已经将合法的一个n皇后布局存入,然后将最后一行的皇后位置右移一个单位,重新进...
2018-11-14 15:41:03 228
原创 50. Pow(x,n)
题目:解答:主要是求 n>0n > 0n>0 的情况的计算,其他时候,可以通过转换得到。而 n>0n > 0n>0 的情况下, n=a020+a121+a222…am2mn = a_0 2^0 + a_1 2^1 + a_2 2^2 \ldots a_m 2^mn=a020+a121+a222…am2m x...
2018-11-14 15:40:29 98
原创 49. Group Anagrams
题目:解答:设置一个map,将每个字符重排后,与序号存入一个map<int, list>的字典中,然后遍历该字典的序号即可。代码:class Solution {public: vector<vector<string>> groupAnagrams(vector<string>& strs
2018-11-13 12:57:20 100
原创 48. Rotate Image
题目:解答:外圈向内圈逐步旋转代码:class Solution {public: void rotate(vector<vector<int> > &matrix) { int len = matrix.size(); if( len == 1 || len == 0 ) return; for...
2018-11-13 12:56:52 118
原创 47. Permutations II
题目:解答:题46的解法在这里依然适用,不需要做修改代码:class Solution {public: vector<vector<int>> permuteUnique(vector<int>& nums) { int len = nums.size(); vector<vec
2018-11-13 12:55:57 128
原创 46. Permutations
题目:解答:使用迭代形式、依次取出下一次序列。代码:class Solution {public: vector<vector<int>> permute(vector<int>& nums) { int len = nums.size(); vector<vector&a
2018-11-13 12:55:32 129
原创 45. Jump Game II
题目:解答:方法一:使用一个数组,用于记录在没一个index处所需要跳跃的最少次数。如果当前位置i+num[i] > len -1,则说明已经可以从当前位置次数+1跳跃到终点。否则,将i+1->i+num[i]之间的所有数据,如果最少跳跃次数大于当前位置+1,将最少跳跃次数更新为当前位置+1.方法二:不使用缓存数组,通过一个标记位,标记第几轮能跳跃的距离范围。例如: 2 5...
2018-11-13 12:55:05 324
原创 43. Multiply Strings
题目:解答:将乘法展开为分布乘法之和即可。代码:class Solution {public: void reverse(string& s){ for(int i = 0;i < s.size() / 2; ++i){ swap(s[i], s[s.size()-1-i]); } } str...
2018-11-13 12:54:37 109
原创 42. Trapping Rain Water
题目:解答:使用两次遍历,记录从1->i的maxheight值,如果有低于的,则差值存入temp中,如果当前height大于maxheight,则将temp值存入sum中,因为此时可以确认之前temp的保留值会留存下来。然后反向遍历一次,完成。代码:class Solution {public: int trap(vector<int>& A) { ...
2018-11-13 12:54:09 102
原创 41. First Missing Positive
题目:解答:这个涉及到一个排序算法,基数排序,在有序空间内,排序复杂度为 O(m)\Omicron(m)O(m) , m不是数列的个数,而是数列的值的范围。方式是空间换时间,遍历数列,将每个数拍到自己在数组的正确序号位置上。本题也是类似解法,处理方式是首先将数值为小雨等于零或者大于len的值置为-1,然后基数排序处理其余数,最后即可找出排序中缺失的数,如果没有,则为len + 1;代码...
2018-11-13 12:53:33 105
原创 40.Combination Sum II
题目:解答:借用39题的解法,将while改为if做循环,并对第一个递归式做去重即可。代码:class Solution {public: void findCompare(vector<int>& candidates, vector<vector<int>>& r
2018-11-13 12:52:59 107
原创 39. Combination Sum
题目:解答:思路是递归求解,首先序列排序,然后依次对第一个数 a0a_0a0 取 0→⌊targeta0⌋0\to\left\lfloor\dfrac{target}{a_0}\right\rfloor0→⌊a0target⌋ ,递归处理1-len的序列,这样递归处理对第i个数,取 0→⌊target−sumpreai⌋0\to\left\lfloor\dfrac{target-su...
2018-11-12 16:18:24 249
unity shader book(5.x cookbook + 2018 shader effect)
2018-12-10
同时打开了多个unity工程,怎么使用vscode调试unity工程
2018-12-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人