算法作业
文章平均质量分 53
zsrose
这个作者很懒,什么都没留下…
展开
-
算法课第二周作业 | Majority Element
写在前面:本周算法课讲解了分治算法(Divide-and-conquer algorithms),特地选了一道此类型的题目。题意解读:给定一个整数组,找出其中出现次数大于n/2的整数,其中n为整数组的数量。并假定一定存在一个这样的整数。解题思路:一开始的解题思路是遍历数组计数,存在哈希表里,整数值为索引,值从0计数,出现一次遍+1。再从中找出值最大的坐标。复杂度原创 2017-03-05 17:10:37 · 431 阅读 · 0 评论 -
算法课第十二周作业 | Combination Sum III
写在前面:选取题目216,已知目标求全部可能的组合,可看作路径规划的变种。题意解读:找出所有可能的和为n的k项组合,组合的项仅能从1-9中选择,且组合中数字不能重复。解题思路:在求解时我们把关注点放在给和等于n的k项组合选择第一项上,这样,加入我们已经选择好了第一项x,剩下的问题就是给和等于n-x的k-1项组合选择第一项。另外,由于本题还有其他约原创 2017-05-18 00:59:48 · 182 阅读 · 0 评论 -
算法课第十四周作业 | Search for a Range
写在前面:选取题目34,采用二分法实现。题意解读:给定一个升序整数数组和一个目标整数target。求目标整数在这个数组中的起始位置和结束位置。如果找不到返回[-1,-1]要求算法复杂度是log(n)解题思路:由于数组是升序数组,可以拆解分两步进行,先找到起始位置,再找到结束位置。通过二分法先找到起始位置begin,方法是找到最接近并且小于targ原创 2017-05-28 16:40:28 · 224 阅读 · 0 评论 -
算法课第十五周作业 | Median of Two Sorted Arrays
写在前面:选取leetcode的第4题,使用排序的方法解题。题意解读:给定两个整数数组,两个数组的大小不一样,求这两个数组集合的中位数。如果数组集合是偶数,则中位数是中间两个数的平均值,如果是奇数个,则中位数就是最中间的一个。要求计算复杂度不要找过O(log(m+n)),其中m,n分布是两个数组的个数。解题思路:现将两个数组合并为一个,放进all里,用v原创 2017-06-04 18:23:39 · 191 阅读 · 0 评论 -
算法课第十三周作业 | Counting Bits
写在前面:选取题目338,采用动态规划的方法解题。题意解读:给定一个非负整数num,输出每个大于等于0并小于等于num的整数二进制中的1的个数。例如num=5,则输出[0,1,1,2,1,2]计算时间复杂度要求和存储空间复杂度要求为O(n)解题思路:根据复杂度要求,所有处理只能在一个循环里面完成。如果数出每个数的1的个数,有num个数,复杂度就会变成原创 2017-05-21 15:32:23 · 249 阅读 · 0 评论 -
算法课第十七周作业 | Same Tree
写在前面:这周我们老师给了期末考试模拟题,做模拟题去了忘记写作业,刚好有一道模拟题跟leetcode上的一样,将解题思路总结如下。题意解读:给定两个树,判断这两个树是不是一模一样的树。解题思路:分析树的结构,树由TreeNode组成的,分别是一个顶点值val和2个TreeNode指针组成。用分治的思想,先判断val是否一样,再判断两个左边部分和两个右边部分是原创 2017-06-20 21:01:42 · 227 阅读 · 0 评论 -
算法课第十六周作业 | Single Number
写在前面:选取题目136,采用排序的方法解题。题意解读:给定一个整数数组,里面的数字只有1个出现1次,其他都出现两次。请找出这个例外的整数。算法的时间复杂度应该是线性的,并且无须使用额外的内存。解题思路:先排序,排序的实现是快排,时间复杂度符合要求。排序后对比每对偶数位和奇数位是否相同,如果不同就返回。如果是最后一位数,也返回。一个循环,线性时间符合原创 2017-06-12 23:35:54 · 233 阅读 · 0 评论 -
算法课第十八周作业 | Course Schedule II
写在前面:下周要考试了,紧张!赶紧复习一下考试要点。选取题目210,是第四周做的那道的升级版,练练手。题意解读:给定numCourses个课程以及课程的学习次序对集合,【0,1】代表需先学完1再学习0.求输出正确的学习顺序,如果不能学完所有课程,则输出空集合。解题思路:将每个课程视为一个点,学习顺序变成点与点之间点有向边。如果这些课程存在环,则不能学完。原创 2017-06-25 12:38:56 · 463 阅读 · 0 评论 -
算法课第十一周作业 | Longest Consecutive Sequence
写在前面:选取题目388,采用深度优先搜索解决问题。题意解读:这道题给了我们一个字符串,里面包含\n和\t这种表示回车和空格的特殊字符,让我们找到某一个最长的绝对文件路径。解题思路:可以用哈希表来建立深度和当前深度的绝对路径长度之间的映射,那么当前深度下的文件的绝对路径就是文件名长度加上哈希表中当前深度对应的长度,我们的思路是原创 2017-05-07 23:49:19 · 276 阅读 · 0 评论 -
算法课第九周作业 | Arithmetic Slices
写在前面:选取题目413,用动态规划算法解决问题。题意解读:给定一个整数数组,问其可以按顺序切分成多少个数量不少于3的等差序列。举例【1,2,3,4】可以切成:【1,2,3】【2,3,4】【1,2,3,4】解题思路:用数组dp存储以A[i]结束的等差序列数,从A[3]开始,如果A[i]-A[i-1]=A[i+1]-A[i],那么dp[i+1]原创 2017-04-23 00:53:02 · 232 阅读 · 0 评论 -
算法课第一周作业 | tow sum
写在前面:因着算法课每周作业采用了leetcode这个平台,据说是个很棒的平台,以前也有听说。而我是第一次使用,注册完平台推荐的第一道题便是two sum,第一周以这个简单开始吧!题目链接:https://leetcode.com/problems/two-sum/?tab=Description题意解读:给定一个不定数量以及无序的整数数组和一个整数结果原创 2017-02-26 22:35:16 · 528 阅读 · 0 评论 -
算法课第四周作业 | Course Schedule
写在前面:这种算法课在前面DFS的基础上讲了拓扑排序/寻找有向无环图。这道题正是用此思路解答题意解读:给定一个课程的数量n,课程编号为0~n-1,给出课程学习顺序对,比如【1,2】,则必须先学了课程1再能学课程2问所有可能能不能学完。解题思路:将每个课程视为一个点,学习顺序变成点与点之间点有向边。如果这些课程存在环,则不能学完。如果不存在环,则能学完。原创 2017-03-19 18:06:00 · 354 阅读 · 0 评论 -
算法课第三周作业 | Subsets
写在前面:本周算法课老师讲解了DFS,特此选一道可以用DFS解决的题目。题意解读:给定一个整数集,里面的整数互不相同,输出这个数组的所有子集。解题思路:如果将整数集的每个元素都看成一个点,点与点之间相互联通,那么所有子集既是找出点到点间所有不重复的路径。每多一个元素,子集就是原来所有子集加上原来所有子集到这个元素的路径。如:当集是空时,子集是[]。当原创 2017-03-12 17:57:20 · 366 阅读 · 0 评论 -
算法课第七周作业 | Word Break
写在前面:本周找了一道动态规划相关的题目练手。题意解读:给定一个非空字符串和一个单词表,单词表非空并且里面的单词都不重复。问这个字符串能不能被空格切割单词表里面的单词。如,s = "leetcode",dict = ["leet", "code"].就返回true,因为leetcode可以背拆分成leet code解题思路:一开始想用匹配,但原创 2017-04-09 17:58:36 · 184 阅读 · 0 评论 -
算法课第六周作业 | Jump Game
写在前面:本周算法课主题内容是贪心算法,这道LeetCode 55正是用贪心算法解决。题意解读:给定一个非负整数组,每个位置的整数代表从当前位置可以前进的最大步数。每次都是从第一个位置出发,请问给定的数组能否到达最后一个位置。解题思路:应用贪心算法,从第一个位置开始遍历,计算每一步能够到达的最大步数,如果最后一个位置在这个步数内,则可以到达。如果在前进的原创 2017-04-02 16:37:20 · 281 阅读 · 0 评论 -
算法课第五周作业 | Word Ladder
写在前面:最近学习的都是图相关的算法,这次以BFS为主题找了一道题目。题意解读:给定两个单词——起始词和结束词以及一个单词序列,从起始词开始,每次只变动一个字母,成为序列中的另外一个词,n次变化后变成结束词。起始词不在序列中。求最小变化次数,如果不能变为结束词则返回0. 且所有单词都一样的长度都一样。解题思路:将序列中都单词以及起始词视作节点,单词与单词之间原创 2017-03-27 13:00:07 · 466 阅读 · 0 评论 -
算法课第十周作业 | Minimum Path Sum
写在前面:选取题目64,采用动态规划算法解决问题。题意解读:给定一个包含m*n个非负整数的表格,找到一条从左上角到右下角的路径,使得经过该路径上的数字之和和最小。 解题思路:可采用动态规划的方法,设f(i, j)是从左上角到位置(i, j)的一条和最小的路径,那么该路径要么经过(i-1, j),要么经过(i, j-1),因此,最优子结构可以写为递归式:f(i, j) =原创 2017-04-30 01:49:02 · 226 阅读 · 0 评论 -
算法课第八周作业 | Unique Paths
写在前面:这两周都是DP主题,讲解了DP两种实现方式(递推和记忆化搜索)、Floyd-Warshall算法等。题意解读:给定一个m*n的格子,机器人只能向下走或者向右走,机器人从左上出发,终点为右下格子,问说一共有多少个唯一路径。解题思路:采用DP思想解决问题,用数组来保存每个点可到达路径总数。从(x,y)出发,每次可以通过(x-1,y)和(x,y-1)原创 2017-04-16 23:29:40 · 207 阅读 · 0 评论 -
NP完全问题 课后习题
8.8 题原文:In the EXACT 4 SAT problem, the input is a set of clauses, each of which is a disjunction of exactly four literals, and such that each variable occurs at most once in each clause. The goal i原创 2017-07-05 13:06:08 · 862 阅读 · 0 评论