随笔分类 - LeetCode
摘要:最近英文版的访问特别慢,转战中文吧 和上一题一样,递归会超时 使用数组可以通过,和上题相比,这题思路就更直接,但是效率比之前更低一点,使用的result和题目所给的格子大小一样,从右下向左上遍历,更加清晰,就是需要额外处理终点
阅读全文
摘要:使用动态规划,思路很清晰 使用如下代码,发现超时了 这段代码遍历出了所有的路径,而题目只需要路径的数目。 使用数组记录,关键在于怎么确定边界条件
阅读全文
摘要:一、问题描述 给定一个数n,将它螺旋形填入n*n的矩阵之中 例子:n=3 输出矩阵:[[1,2,3] [8,9,4] [7,6,5]] 二、问题解决 具体思路见这里,只是将输出该为赋值,代码重新整理了一下,思路清晰多了。
阅读全文
摘要:一、问题描述 给定一个字符串s,s是由多个单词组成,单词之间以‘ ’分开,找出最后一个单词的长度。如果没有最后单词则返回0。 二、问题描述 先找到最后一个单词的末尾,因为s可能以空格结尾,所以从后往前找到第一个不是空格的字符。然后再向前找到该单词的起始位置。
阅读全文
摘要:一、问题描述 给定一系列区间,要求将其中重叠的、临接的区间合并成一个区间 例子: 给定[1,3],[2,6],[8,10],[15,18] 输出[1,6],[8,10],[15,18] 二、问题解决 第一步:先对区间按区间头进行排序 第二步:从第一个区间开始遍历,如果后一个区间与前一个区间有重叠或是
阅读全文
摘要:一、问题描述 给定一个数组nums,给定一个非负整数数组, 您最初定位在数组的第一个索引处。数组中的每个元素表示该位置上的最大跳转长度。确定是否能够到达最后一个索引。 例子: A = [2,3,1,1,4], return true. A = [3,2,1,0,4], return false. 二
阅读全文
摘要:一、问题描述 给定一个矩阵、要求螺旋型输出矩阵结果。 例子:给定矩阵[[1,2,3],[4,5,6],[7,8,9]]。输出结果为1,2,3,6,9,8,7,4,5。 二、问题解决 将矩阵分解成多个嵌套的空心矩形来遍历,将每个空心矩形的遍历分为四个部分:向右增长,向下增长,向左增长,向上增长。(代码
阅读全文
摘要:一、问题描述 求x的n次方 二、问题解决 1、最简单的思路,当n大于0时,对1乘n次x。当n小于0时,对1乘n次1/x。 2、时间复杂度为log的解决。每次对n取n/2,对x取x的平方(如果n%2 == 1时结果还需乘一个n)。 三、问题思考 本题注意n<0的情况,能转化成1/x的多少次方来求。但是
阅读全文
摘要:一、问题描述 二、问题解决 自己的想法,最后一个用例超时了,太过于复杂繁琐。(使用map数组来保存每个字符串字母出现的频率) 别人的解答 三、问题思考 关键在于两点没有把握好:1、string能使用sort算法,即string的遍历器不够了解。2、multiset的使用。关键还是STL不够熟悉。
阅读全文
摘要:一、问题描述 全排列问题的升级,给定数组有重复元素,要求输出结果无重复元素。 二、问题解决 考虑全排列问题重复的情况。按照全排列的递归思想。重复情况有两种,第一种是开始位置和交换位置重复,第二种是交换位置和交换位置之后的元素有重复。见代码。 上面写的比较乱,后来做剑指offer,又遇到了一样的题,写
阅读全文
摘要:一、问题描述 就是全排列问题。 二、问题解决 应该哪一本数据结构的书上都有讲了。
阅读全文
摘要:一、问题描述 翻译一下:给定两个string表示的数num1和num2,以string返回他们的乘积。num1满足如下条件: 1、num1和num2的长度都小于110。 2、num1和num2都只含有0-9。 3、num1和num2前都不以0开头。 4、不能使用string转int的任何函数 二、问
阅读全文
摘要:一、问题描述 这个题目是39题的拓展,本题中,给定的数组有可能有重复元素,要求最后结果不能有重复,一个元素只能用一次。 二、问题解决 思路一:在向result中添加结果的时候,做一个判断去重 思路二:再进行添加-递归-删除操作之前做一个判断,如果是重复的,则直接跳过该值(i要改成i+1,因为本题中不
阅读全文
摘要:一、问题描述 简介概括,给定一个没有重复元素的数组,要求找出所有相加结果为target的组合(同一个元素可以多次使用,元素个数也不限)。 二、问题解决 使用递归,每次碰到合适的数就加入到结果之中。 三、问题思考 熟悉递归的使用即可。
阅读全文
摘要:一、问题描述 判断一个不完整的数独是否正确。 判断数独是否正确的条件:1、每行的数不重复。2、没列的数不重复。3、划分成的9个3*3的块中没有数重复。 例子看下面代码中的测试用例。 二、问题解决 思路一:分3次循环来解决,第一次横向遍历,第二次纵向遍历,第三次以块遍历。每一次遍历一行、一列、或是一块
阅读全文
摘要:一、问题描述 这个题面是很难理解,简单总结一下: 从1开始,序列是1。到2的时候,读1的序列,发现只有1个1,2的序列为11。到3的时候,去读2的序列,发现2个1,即3的序列为21。到4的时候,读3的序列,发现3的序列为1个2加1个1,所以4的序列为1211。到5的时候,读4的序列,发现4为1个1,
阅读全文
摘要:一、问题描述 二、问题解决 应该是很简单了。4行代码解决。
阅读全文
摘要:一、问题描述 这是问题33的升级版,在数组中有重复元素。 二、问题解决 思路和问题33一样,不同点在于判断nums[left]==nums[middle]的时候不能得出左右哪个是单调递增,哪个是循环递增。这时候简单递增一下left,应为此时left一定不为target,可以使代码进一步往下运行。 和
阅读全文
摘要:一、问题描述 给定一个升序排列的数组nums,和一个目标数target,找出nums中target的索引范围。 例子:给定数组为{5, 7, 7, 8, 8, 10},target=8。返回{3,4} 二、问题解决 思路一:直接遍历就可以,第一次碰到target的时候记录位置1,继续遍历到不是tar
阅读全文
摘要:一、问题描述 一个有序数组,将它截成两部分,然后两部分换位置,得到数组nums。比如对于01234567这个数组,分成012和4567这两个部分,然后把这两个部分调换位置,012放在后,4567放在前,假设得到的数组为nums。 二、问题解决 思路一:最简单的遍历一遍,找到和target相等的数,返
阅读全文

浙公网安备 33010602011771号