- 博客(16)
- 资源 (2)
- 收藏
- 关注
原创 [计算机网络] localhost,127.0.0.1,0.0.0.0
当我们在启动server服务的时候,我们需要指定本地IP。这时候我们有三种方法localhost: client也必须是写localhost127.0.0.1 client可以写localhost,127.0.0.10.0.0.0 client可以是写localhost,127.0.0.1,本地IP,并且此种情况下别的IP地址也可以访问,不局限于本地IP...
2019-05-22 15:09:29 981
原创 [leetcode] BestTimeSellStock I, II, III, IV
BestTimeSellStock I问题描述:给定一组数字,代表每天股票的价格。假定现在只能进行一笔交易,计算出所能获得利润的最大值。解法:针对每个价格,我们只要知道它前面价格的最小值即好。所有我们可以遍历整个数组,并用一个数字代表之前的所有数字的最小值。所以针对数组里面的每个数,我们都能获得一个如果在该点卖出的最大利润值。我们计算这些利润值里面的最大值即可。时间复杂度:O(N), 空间...
2019-05-18 11:49:41 312
原创 [leetcode] Longest Increasing Subsequence
Longest Increasing Subsequence问题描述:计算一个数组的最长上升子序列。这个子序列内的元素不一定要是相邻的。比如说数组{1, 100, 2, 3, 4}的LIS就为{1, 2, 3, 4}解法1-动态规划首先我们将问题划分成子问题=>我们该序列一定是以某一个点为起点的。所有我们另dp[i]表示以i为起点的LIS长度。构造父问题的解。假设说我们已经知道了...
2019-05-17 16:12:20 127
原创 [leetcode] PerfectSquares
PerfectSquares问题描述:首先定义完美数字是{1, 4, 9, 16 … , n^2}.然后给定一个整数N,试计算N最少由几个完美数字求和得到。比如12=4+4+4,13=4+9分析:对于一个数字N,它所能选择的最大完美数字就是int(sqrt(N))^2=X。所以对于N的结果他可以由min{N-{1,4,…,X}} + 1构造得到。所以该题是一个动态规划的题目。dp[...
2019-05-16 23:09:41 108
原创 [leetcode] PalindromeLinkedList
PalindromeLinkedList问题描述:给定一个单向链表,试判断该链表是否是回文链表。解决思路1因为该链表是单向的,所以我们不能想vector那样从后向前访问。所以我们可以先将ListNode存储起来,然后再判断或者是说我们可以利用递归的方法来判断。我们首先用tmp保存head元素。然后利用递归遍历head,访问每一个元素。访问最后一个时候比较该元素和tmp如果...
2019-05-16 23:00:35 108
原创 [leetcode] LowestCommonAncestor
LowestCommonAncestor问题描述:给定一颗二叉树,和二叉树的两个节点,计算出这两个节点的最低公公祖先。解法1:最低公公祖先可能出现的最高值就是根节点。我们找到从根节点到两个节点的路径,path1和path2.则两者一定是Y字型或者是V字形(root节点)则我们就把问题转化成了计算两个list的相交点问题。首先长的path先走他们之间长度差值步,使得后续的两个pat...
2019-05-16 22:38:39 1139
原创 [leetcode] findDuplicateNumber
FindDuplicateNumber问题描述:给定一个数组长度为N,里面元素的取值范围是1~N-1。所有会有一个数是重复的,请找到这个重复的数字并返回。解法1:暴力最直接的办法就是利用两重循环来寻找当碰到相同的数字的时候就返回时间复杂度是O(N)解法2: 二分法我们知道我们N个数是分布在1~N-1之间的。所有假设我们统计1~N/2, N/2-N-1之间的数字,如果哪一方的...
2019-05-16 22:10:20 185
原创 [leetcode] Maximal Square
Maximal Square问题描述:在一个给定的矩阵中,找到一个最大的方阵。矩阵中的元素都是0或者1.方阵内的元素要求都是1.动态规划:dp[i][j]代表以ij结束的点所能构成的最大方阵的边长。转移方程dp[i][j] = min{dp[i-1][j-1], dp[i-1][j], dp[i][j-1]} + 1. 注意这里min相当于计算交集。//// Created b...
2019-05-15 23:25:36 99
原创 [leetcode] CourseSchedule
CourseSchedule问题描述:输入一个n代表我们有N门课程,编码成0-n-1, 然后给一系列课程的前置条件,问这样安排课程是否合理。问题可以转化成判断图中是否有环的问题。我们将每门课程看成一个节点。前置条件是条有向的边。所有图是有向图。如果图中存在环则前置课程必定存在冲突,否则则不冲突。是否存在环?解法1我们首先计算每个节点的入度。将所有入度为0的节点加入队...
2019-05-15 23:22:31 154
原创 [leetcode] ReverseListI II
ReverseList I, II问题描述,给定一个list,起点m,终点n。试只遍历一次链表达到将m->n之间反转的目的。对于I来m=第一个节点,n=最后一个节点。我们可以假设0<=m<=n<=length of the list.分析:因为我们只能遍历一次列表,所以我们考虑在遍历列表的时候计数,计算当前是第几个节点。假设当前是第i个节点。如果i<m我们不操作...
2019-05-12 13:57:26 135
原创 [leetcode] HouseRobI, II, III
HouseRob I问题描述:一个强盗要抢劫一个房屋,但是他不能抢连续的两个房间,比如说ABC房间,他只能抢A和C或者是B,否则就会触发警报,将其抓住。我们知道每个房间都有money,并且money>=0的。这个题我们可以看作动态规划来解决。划分子问题 dp[i]表示的是从第1个房间到第i个房间,所能抢到的最大金额。根据子问题求解父问题 dp[i] = max(dp[i-2] +...
2019-05-10 14:40:12 99
原创 [leetcode] Sort List
Sort List问题描述:尝试用O(nlgn)的时间复杂度,O(1)的空间复杂度对一个链表排序分析因为是O(nlgn)的时间复杂度,所以我们第一感觉就是快排是否可以?因为对于每一段数组来说,快排即需要从前向后也需要从后向前。所以对于我们的单向链表来说有点不适合。那么另一个排序方法:归并排序呢?归并排序常规的做法是up-to-bottom,即先分只一个元素,然后再合并。但...
2019-05-08 22:50:27 138
原创 [leetcode] WordBreak && MaximumProductSubarray
今天这两道题是两道动态规划的题目。Word break问题描述:给定一个字符串s,和一个字典d。试问有没有办法使用d中的字符串构造出s。d中的每个字符串可以使用多次。分析最直观的解法肯定是暴力搜索。我们遍历d中所有组合,看能否构成s。如果不能则返回false,如果可以则返回true。这种暴力搜索肯定是超时,那么我们是否还有其他做法呢?我们试想如果s中的每个字符c,我们都可以在d...
2019-05-08 22:30:10 152
原创 [leetcode] Longest Consecutive Sequence
Longest Consecutive Sequence问题描述:给定一个乱序的数组,让你计算最长的包含连续数字的子集大小是多少?要求O(n)的时间复杂度。比如说[100, 0, 2, 1, 100, 3, 5, 200, 4] => {0, 1, 2, 3, 4, 5}.所以长度是5.分析对于这么一个乱序的数组,并且要求O(n)的时间复杂度,所以我们肯定不能排序。我们首先可以利...
2019-05-08 22:05:03 176
原创 [leetcode] BinaryTreeMaximumPathSum
Binary Tree Maximum Path Sum题意:从二叉树的任意一个起点出发,到另一个点所经过的路径和最大。注意,这里的路径就包含了一个点最多只能经过一次。分析:我们最大路径一定是要路过某些点的(不支持路径长度为0)。我们的路径都可以抽象成如下所示的路径。左边的长度和右边的长度都可以为0。所以我们就是要计算所有类似路径的长度之和。按照上面的思路,我们已经将问题转化成了所有类似...
2019-05-08 21:51:50 128
原创 [leetcode] 二叉树相关题目
中序遍历二叉树递归做法void inorderTraversalBase(TreeNode* root, vector<int>& res){ if(root == NULL) return; inorderTraversalBase(root->left, res); res.push_back(root->val...
2019-05-01 22:14:12 189
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人