- 博客(18)
- 资源 (20)
- 问答 (1)
- 收藏
- 关注
原创 LeetCode55. 跳跃游戏
题目大意:判断是否可以从数组的第一个位置调到最后一个位置,每次跳得步数必须小于等于当前位置上的值题目分析:使用贪心算法,每次选择最远能达到的地方,假设从某一点最远可以到达A点,那么A点之前的所有点都是可以到达的。所以我们只要不断的更新最远可达到的点,然后看是否最远的点超过了终点即可。具体来说,就是根据A点之前所有的点加上其最远的距离,求它们的一个最大值,求到一个reach之后,迭代地求最大值即可。...
2018-06-14 19:48:20 725
原创 LeetCode40. 组合总和II
题目大意:给定一个数组,和一个目标值,找出数组中所有可以使数字和为target的组合。数组中的数字可以重复,并且每个元素只能使用一次。题目分析:本题和LeetCode39. 组合总和很类似,唯一的区别在于每个元素不能无限制地取。所以我们只要在递归的时候将参数改成从后一个元素开始递归。同时,同一位置上的元素不能重复,例如说,有一种情况是(?,?,?,?),表示有四个元素的组合情况,其中第一位置上的?...
2018-06-13 20:11:40 1458
原创 LeetCode39. 组合总和
题目大意:给定一个数组和一个目标值,返回数组内可以使数字和为target的组合,注意数组内的数字可以重复选,但是组合的结果要求不能重复。题目分析:本题采用递归较容易解答。首先,将数组内的元素由小到大排序,然后不断地进行试探,直到和为target。若当前和小于target,则继续往里面加元素;若当前和等于target,就可以将结果保留下来;若当前和已经大于target,那就可以排除掉这种情况,回溯到...
2018-06-13 19:31:59 3415 3
原创 LeetCode53. 最大子序和 (动态规划/分治法)
题目大意:求出一个序列的最大子序和,顾名思义,就是一段最大的连续序列的和题目分析:本题可以用两种解法求解,动态规划或分治法法一:动态规划,用result[i]保存以数字nums[i]结尾的最大子序和,然后不断更新result数组的最大值即可。时间复杂度O(n)代码展示:class Solution(object): def maxSubArray(self, nums): ...
2018-06-12 10:43:31 6090 2
原创 LeetCode41. 缺失的第一个正数
题目大意:找到一个未排序序列中的第一个缺失的正数。简而言之,就是看1在不在这个序列中,如果不在的话输出1;否则看2在不在这个序列中,如果不在的话输出2;否则看3在不在这个序列中……题目分析:本题的难点在于只能使用常数级别的空间,也就是说,不能开辟一个flag数组,若出现某个数,就将flag值标1,最后看flag数组第一个为0的下标。本题的思路是从前往后将数放到它正确的位置上去。举个例子,假设有序列...
2018-06-12 09:23:15 3816 3
原创 LeetCode12. 整数转罗马数字
题目大意:将一个1到3999范围内的整数转为罗马数字题目分析:首先熟悉转换规则,然后可以使用两个list存储对应的映射关系,然后每次从大到小看num是否大于1000,大于900,大于500,若在某个区间的话,就将罗马数字加进来,num减去相应的数值,直到num为0代码展示:class Solution(object): def intToRoman(self, num): ...
2018-06-11 20:10:26 760 1
原创 LeetCode47. 全排列 II
题目大意:给定一个含有重复元素的序列,返回这个序列所有不重复的全排列题目分析:与最基本的全排列递归算法相比,本题要对重复的元素进行特别的处理。例如序列“112”,第一个1和第二个1就不需要交换了,因为交换前后排列的序列是重复的。例如序列“211”,当“2”与第一个“1”交换了之后,变成第一个数字是1,后两个数12全排列。这种情况和“2”与第二个“1”交换了之后的情形是一样的。简而言之,只要要处理数...
2018-06-11 15:46:13 598
原创 Leetcode46. 全排列
题目大意:求出一个序列的全排列题目分析:全排列问题都可以用递归的方式来解决,将第一个数分别与后面的每一个数交换,然后对后面的数进行全排列。全排列问题的模板如下:#include <iostream>using namespace std;void Perm(char s[], int m,int n){ if(m==n){ for(int i=0;i<...
2018-06-10 22:01:36 799 1
原创 LeetCode50. Pow(x,n)
题目大意:实现一个计算机中求指数幂的操作。题目分析:我觉得这道题是不需要考虑大数问题的,因为如果幂取到2^30的级别,底数取2的话,这个结果是无法用float或double表示的。本题在计算过程中需要优化,常规的解法会出现内存不够的情况。我们知道,求a的n次方,可以用以下公式来表示:当n为偶数时,就是第一种情况;当n为奇数时,是第二种情况。同时,可以用n>>1位操作代替除以2,效率更高...
2018-06-10 12:40:56 244
原创 Leetcode28. 实现strStr()
题目大意:实现字符串匹配函数,即在文本串S中查找一个模式串P的出现位置,若不出现返回-1题目分析:暴力解法,将模式串P与文本串S一位一位的比较,若相同,则继续比较下一位;若不同,则将模式串P向后移动一位,继续往后比较。时间复杂度为O(m*n),假设文本串S的长度为m,模式串P的长度为n。代码展示:class Solution(object): def strStr(self, haysta...
2018-06-10 10:34:52 540
原创 Leetcode33. 搜索旋转排序数组
题目大意:返回旋转排序数组中的值等于目标值的元素的索引题目分析:使用二分法查找。根据旋转数组的性质,将这个数组从中间切开,前后两个子数组必定有一个是按照升序排列的,我们在升序的子数组中判断是否存在等于目标值的元素,若没有,则在另一个部分查找。代码展示:class Solution(object): def search(self, nums, target): ...
2018-06-09 21:26:03 1153
原创 Leetcode34. 搜索范围
题目大意:给定一个升序的整型数组和一个目标值,找到这个目标值在数组中的开始和结束的位置题目分析:本题使用二分查找的思想,不断地取中间元素,比较它和目标值的大小。若中间元素的值比目标值小,则在后面的部分查找;若比目标值大,则在前面的部分查找。若相等,则在该中间元素前后试探是否还有和目标值相等的元素,最后返回这个区间代码展示:class Solution(object): def search...
2018-06-09 20:44:50 412
原创 LeetCode18. 四数之和
题目大意:在一个数字序列中找出不重复的四个元素,使得它们的和等于目标值target题目分析:本题和LeetCode15 三数之和思路基本相同,只要设置两重循环,先固定前两个数,后两个数的话,只要分别用两个指针指向剩余元素的一头一尾,若当前的和比target大,则后面的指针前移;若当前的和比target小,则前面的指针后移;相等的话,就保存一下。因为结果不能有重复,所有在多处需要去重。去重的思路和L...
2018-06-05 21:32:13 517
原创 LeetCode22. 括号生成
题目大意:给定n表示括号的对数,输出所有有效的括号的组合题目分析:递归求解,用leftnum和rightnum分别表示剩余可用的左括号和右括号的个数,当使用了一个( ,则leftnum-1; 同理,使用了一个 ),则rightnum-1。 当leftnum>0时,可用( 填充; 当leftnum<rightnum,并且rightnum>0时,表示当前可用 )填充,直到leftnu...
2018-06-05 20:43:32 525
原创 Leetcode21. 合并两个有序的链表
题目大意:给定两个有序的链表,要求给出合并之后的一个链表题目分析:鉴于两个链表是有序的,用两个指针分别指向各自第一个元素,将其中小的那个元素作为新链表的第一个元素,同时将指向较小元素的指针后移一格,直到指向两个链表的末尾。若有一个链表已经到了末尾,直接将另一个链表的元素添加进来即可。代码展示:class Solution: def mergeTwoLists(self, l1, l2):...
2018-06-05 19:58:14 710
原创 Leetcode26. 删除排序数组中的重复项
题目大意:要求删除给定排好序的数组中的重复项题目分析:因为数组已经排好序,所以可以从前往后遍历查找,若发现当前一个元素值与前一个值相同,则表示重复了。如果一发现重复的项,就将后面的元素前移,会导致时间超,时间复杂度O(n*2).本题思路是:将第一个元素定为标记元素,从第二个元素开始,若元素与标记元素相同,则不考虑;若不相同,就将该元素前移到某个位置,并将该元素指定为标记元素。代码展示:class ...
2018-06-05 19:33:05 340
原创 LeetCode19. 删除链表的倒数第N个节点
题目大意:删除一个单链表中的倒数第N个结点题目分析:首先,获得单链表中的结点个数count,然后从前往后找到第count-N+1个结点,即我们要删除的结点,删除即可。时间复杂度:两次遍历单链表即可。代码展示:# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# se...
2018-06-03 16:47:45 2114
原创 Leetcode20. 有效的括号
题目大意:判断给定的字符串是否有效,即左右括号必须按序匹配。题目分析:本题可以用栈来实现,每次遇到'(' 或 '[' 或 '{',就将其入栈; 遇到其他情况,就弹出栈顶的元素,并分析栈顶元素和当前元素是否可以匹配,若可以匹配,就继续循环,否则就输出无效。当循环结束时,若栈中还有元素,表明有多余的括号,输出无效。代码展示:class Solution: def isValid(self, s...
2018-06-03 15:48:21 161
暴力音频检测VioAudio数据集.rar
2019-05-28
Voicebox语音处理包
2017-05-25
磁盘调度算法
2016-09-08
黑客与画家
2016-01-27
matlab 数据变量net,不显示内容
2016-01-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人