- 博客(16)
- 收藏
- 关注
原创 Capacitated Facility Location Problem - 带容量工厂选址问题
题目描述Suppose there are n facilities and m customers. We wishto choose:(1) which of the n facilities to open(2) the assignment of customers to facilitiesThe objective is to minimize the sum of t...
2018-12-22 15:40:17
643
原创 51. N-Queens
查看题目皇后可以横着、竖着、斜着走。也就是皇后所在的行、列、对角线不能有另一个皇后。每行有一个皇后,一行一行进行判断当前行某位置是否可以放置,进行DFS。有性质,若(x,y)放置了皇后,那么不可以再有一个位置(i,j),x+y == i+j || x-y == i-jclass Solution {public: vector<vector<string>&...
2018-12-09 15:40:48
229
原创 57. Insert Interval
查看题目一种很简洁的方法,只需要三个while循环,时间复杂度为O(n)第一个while循环负责在n新区间左部的,第二个while负责和新区间重合的,第三个while循环负责在新区间右部的。/** * Definition for an interval. * struct Interval { * int start; * int end; * I...
2018-12-01 21:23:51
173
原创 887. Super Egg Drop
查看题目谷歌当年的面试题的加强版,仿佛脑筋急转弯一步一步来,要求的是最小的 最大步数。最大是指,在最坏情况下,求得F需要的步数;最小是指,在各种策略下,所能求出的最小的最大值。优秀的dp走起来,那最优值即最小的最大步数,状态dp[n][k]表示n层k蛋的最优值接下来,求dp[n][k]时,假设一个鸡蛋从第i层扔下,有两种情况:碎了。碎了不能再用。那接下来测i之下的层数,即dp...
2018-11-25 21:27:12
219
原创 943. Find the Shortest Superstring
查看题目如果将每个字符串看作一个节点,并且记录下两两之间的重叠字符数,那么问题就变成,遍历所有的节点(每个节点访问一次),消除掉重叠的字符。类似于TSP问题。状态方程dp[V][j]表示访问过集合V中所有节点(即包含所有字符串),以j结尾的superstring。V由二进制编码表示(即1代表在集合中,0代表不在),这样,表示n个节点需要n位(共2^n个集合)。状态转移方程dp[V]...
2018-11-18 23:46:29
598
原创 44. Wildcard Matching
查看题目根据判断s串前i个和p串前j个来进行动态规划状态转移方程为match[i][j] =match[i-1][j-1] and 当前字符达成匹配match[i-1][j] and 当前匹配符为*match[i][j-1] and 当前匹配符为*class Solution {public: bool isMatch(string s, string p) { ...
2018-11-08 23:17:21
116
原创 547. Friend Circles
查看题目可以先求出矩阵的闭包,再判断有几个强连通图使用Floyd-Warshall算法算法求出闭包,一个强连通图代表一个Circleclass Solution {public: int findCircleNum(vector<vector<int>>& M) { int size = M.size(); vec...
2018-11-04 17:28:44
114
原创 416. Partition Equal Subset Sum
查看题目可以看作是一个背包问题,当背包内的总和达到所有数总和的一半时,达到目标,状态转移方程为dp[i][j] = dp[i-1][j] | dp[i-1][sum/2-j]考虑到若dp[i-1][j]为真,则dp[i][j]为真,可以将二维数组变成一维数组,此时需要从后向前循环。class Solution {public: bool canPartition(vecto...
2018-10-27 21:39:40
100
原创 45. Jump Game II
查看题目每次选择的时候都选择最有利的,即跳得最远。class Solution {public: int jump(vector<int>& nums) { int s = nums.size(); if (s == 1) return 0; int rtn = 0; //一次循环就是一跳 ...
2018-10-20 15:14:36
155
原创 4. Median of Two Sorted Arrays [Merge]
查看题目经典的归并排序,相当于两个数组已经排好序,要合并到一起。在合并的过程中,我们可以找到中位数class Solution {public: double findMedianSortedArrays(vector&lt;int&gt;&amp; nums1, vector&lt;int&gt;&amp; nums2) { int n1 = nums1.si...
2018-10-12 18:58:37
96
原创 743. Network Delay Time [Dijkstra]
查看题目经典Dijkstra算法typedef pair&lt;int, int&gt; intint;const int INF = 10000; //100*100, N和w最大值均为100class Solution {public: int networkDelayTime(vector&lt;vector&lt;int&gt;&gt;&amp; times, in
2018-10-07 21:50:24
172
原创 332. Reconstruct Itinerary
查看题目默认起始站为JFK,压入vector查找以vector末端为起始站的pair,找到自然排序最小的,压入vactor,并将此pair从tickets中删除。重复步骤2,直到tickets为空class Solution { public: vector<string> solution; vector<string> findIt...
2018-09-30 17:48:37
126
原创 124. Binary Tree Maximum Path Sum [Leetcode] [DFS] [c++]
查看题目在DFS的过程中,计算路径和对任一节点,可能是最大路径树的根节点,起始节点,中间节点class Solution {public: int maxSum; int maxPathSum(TreeNode* root) { //对maxSum初始化为root-&gt;val或者最小负数 maxSum = root-&gt;val;...
2018-09-23 17:21:19
136
原创 43. Multiply Strings [Leetcode] [FFT] [python]
查看题目 一道大数相乘的题,大数也可以看成是多项式,再运用FFT来处理。 粗略步骤: 1. 将多项式从系数表示转为点值表示 2. 把两个多项式的点值表示相乘 3. 将相乘后的点值表示转为系数表示1. 将多项式从系数表示转为点值表示系数表示: A(x)=a0+a1x+a2x2+⋅⋅⋅+an−1xn−1A(x)=a0+a1x+a2x2+···+an−1xn−1...
2018-09-16 20:59:39
807
1
原创 493. Reverse Pairs [Leetcode] [Based on Merge-Sort] [java]
查看问题计算目标对数while (i &lt;= m) { j = m+1; while (j &lt;= r &amp;&amp; nums[i] &gt; (long)nums[j]*2) j ++; count += j-m-1; i ++;}归并排序while (i &lt;= m &amp;&amp; j
2018-09-09 14:04:24
329
原创 软件工程专业
软件工程专业16340111 本人学院目录简介二级学科课程就业简介 软件工程是将工程应用于软件的设计、开发、实施、测试和维护的一种系统化方法。 软件工程的典型形式定义是: 1.研究、设计、开发和测试操作系统级软件、编译器和网络分发软件,用于医疗、工业、军事、通信、航空航天、商业、科学和通用计算应用。 2.科学和技术知识、方法和经验的系统应用,设计、实施、测试和文档软
2016-10-04 16:03:34
2389
7
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人