自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 LeetCode #5. 最大回文子串

LeetCode #5. 最大回文子串I. Description:II. Solution:version 1解题思路:I. Description:II. Solution:version 1解题思路:  首先想到的是暴力破解,暴力破解的时间复杂度较高,但思路清晰。理清暴力解法的思路分析其优缺点,有时可以为后续的优化打开思路。具体的思路如下:遍历给定的字符串中长度为2及以上的所有子串(长度为1的单个字符无须遍历,若前面的过程未找到,则自然最长的回文子串是任意的一个单个字符),然后依次

2021-01-26 16:15:55 96

原创 LeetCode #53. 最大子序和

LeetCode #53. 最大子序和I. Description:II. Solution:version 1解题思路:Code:I. Description:II. Solution:version 1解题思路:  通过这道题开始尝试动态规划的算法思想。动态规划的思想主要是利用历史记录来避免一些重复计算,这些历史记录通常是用一维数组或二维数组来保存的。做动态规划题的三个重要步骤总结如下:定义数组元素的含义上面说到会用一维或二维数组来记录历史记录,假设用一维数组dp[ ]吧,一个非常

2021-01-05 15:11:16 73

原创 LeetCode #48. 旋转图像

LeetCode #48. 旋转图像I. Description:II. Solution:Version 1解题思路:Code:I. Description:II. Solution:Version 1解题思路:  起初的想法是n∗nn * nn∗n的方阵可以看做n/2个回形圈,找到每个圈中旋转前后坐标的映射关系,然后挨个遍历这些回形圈即可。但真实写代码的过程中发现,坐标变换的映射关系虽然容易找到,但实际的转换过程比较复杂不太容易实现。  看题解中的方法是,先对矩阵的行数进行反转reve

2020-12-14 21:04:23 127

原创 LeetCode #41. 缺失的第一个正数

LeetCode #. 缺失的第一个正数I. Description:II. Solution:Version 1解题思路:Code:I. Description:II. Solution:Version 1解题思路:  从答案中看到的比较巧妙的解法:理想中的正整数构成的数组是这样的,[1,2,3,...][1, 2, 3, ...][1,2,3,...],可以构建一个临时的数组副本temptemptemp(大小相同,元素均为0),将原数组中每个元素当作索引去放置到副本数组中对应的位置上,例

2020-10-26 15:40:37 100

原创 LeetCode #40. 组合总和 II

LeetCode #40. 组合总和 III. Description:II. Solution:Version 1解题思路:Code:I. Description:II. Solution:Version 1解题思路:  该题和上一题总体思路比较相似,区别就是本题中给定的数组中可能存在重复元素,并且题中明确要求数组中的每个数字在每个组合中只能出现一次。因此,在forforfor循环中进行下一步的递归调用时,传递给递归函数 backtrackbacktrackbacktrack()的起始索引

2020-10-13 15:14:54 59

原创 LeetCode #39. 组合总和

LeetCode #39. 组合总和I. Description:II. Solution:Version 1解题思路:Code:I. Description:II. Solution:Version 1解题思路:  该题采用回溯算法的思路进行分析。回溯算法的思路在于:通过枚举法,对所有的可能情况进行遍历。不过枚举的顺序是一条路走到黑,走到走无可走的时候,往前退一步,再尝试之前没走过的下一条路,重复这个过程直到所有的路都走过了。解决回溯问题,实际上就是一个决策树的遍历过程。回溯的实现,主要是

2020-10-08 20:01:18 79

原创 LeetCode #35. 搜索插入位置

LeetCode #35. 搜索插入位置I. Description:II. Solution:Version 1解题思路:Code:I. Description:II. Solution:Version 1解题思路:  首先想到的是二分法查找, 但文中还多了个额外的条件,即如果不存在数组中的时候需要返回按顺序插入的位置。可以考虑将原有的二分法改为,在有序数组中查找第一个大于等于targettargettarget的下标。同时也想到了直接用STL中的lower_bound(nums.begi

2020-09-27 20:43:03 65

原创 LeetCode #34. 在排序数组中查找元素的第一个和最后一个位置

LeetCode #34. 在排序数组中查找元素的第一个和最后一个位置I. Description:II. Solution:Version 1解题思路:Code:Version 2解题思路:Code:I. Description:II. Solution:Version 1解题思路:  本题思路不算难,首先想到的是利用find_if()的思路,查找到有序数组中所有目标值的索引,然后取首和尾。利用STL中的find()函数,先查找到第一个值的位置赋给某个迭代器itritritr,然后不断让

2020-09-23 16:28:21 84

原创 LeetCode #33. 搜索旋转排序数组

LeetCode #33. 搜索旋转排序数组I. Description:II. Solution:Version 1解题思路:Code:Version 2解题思路:Code:I. Description:II. Solution:Version 1解题思路:  比较直接的想法是原数组被最大值分为两部分,先借助C++ STL中的max_element()函数找到最大元素maxmaxmax的位置,然后再分别计算目标值在maxmaxmax前后情况下的位序。Code:cpp#inclu

2020-09-14 15:50:28 57

原创 LeetCode #31. 下一个排列

LeetCode #31. 下一个排列I. Description:II. Solution:Version 1解题思路:Code:Version 2解题思路:Code:I. Description:II. Solution:Version 1解题思路:  问题相当于是,给定几个数字组合成一个整数,如何重新排列得到一个更大的且最靠近原数的整数。首先,从数组末端索引开始查找,找到第一个当前元素大于前一个元素的索引位置,记为 iii ,前一个位置便为 i−1i-1i−1;在该索引位置到末尾的这段

2020-09-07 15:33:30 59

原创 LeetCode #18. 四数之和

LeetCode #18. 四数之和I. Description:II. Solution:Version 1解题思路:Code:I. Description:II. Solution:Version 1解题思路:  容易想到的是在三数之和的基础上加一层循环,即利用排序+双指针的思路。这种思路减少重复枚举的办法就是,在数组排序的情况下,保证每层循环层与层之间的枚举位置不重复,当前层循环中枚举到的元素不重复,最终时间复杂度为O(N3)O(N^3)O(N3)。Code:cpp#inc

2020-09-01 15:04:37 70

原创 LeetCode #50. Pow(x, n)

@[TOC](LeetCode #50. Pow(x, n))I. Description:II. Solution:version 1Code:pythonclass Solution: def myPow(self, x, n): #递归终止的边界条件 if n == 0: return 1 # n分为奇数偶数 m = int(n/2) half

2020-08-19 11:00:58 83

原创 LeetCode #27. 移除元素

LeetCode #27. 移除元素I. Description:II. Solution:version 1解题思路:Code:I. Description:II. Solution:version 1解题思路:  该题跟上一题比较类似,依然考虑使用上下两个指针 iii 和 jjj,用指针 iii 正常遍历数组,遇到要删除的目标值 iii 就正常后移,jjj 不动;遇到非目标值就用 iii 处的元素覆盖 jjj 处的元素, 然后 jjj 右移一位。Code:cppclass S

2020-08-14 20:55:58 105

原创 LeetCode #26. 删除排序数组中的重复项

LeetCode #26. 删除排序数组中的重复项I. Description:II. Solution:version 1解题思路:Code:I. Description:II. Solution:version 1解题思路:  第一想法是使用C++里的map容器对数组中出现过的元素进行存储,由于map中不会存放重复的元素,所以将map里元素顺序放置到原数组的前几位就OK了。本以为申请map会不会超过空间限制,谁知道就通过了orz。。。Code:cpp#include &lt

2020-08-12 10:57:24 79

原创 LeetCode #16. 最接近的三数之和

LeetCode #16. 最接近的三数之和I. Description:II. Solution:Version 1解题思路:Code:I. Description:II. Solution:Version 1解题思路:  借鉴“#15.三数之和”和“#11.盛最多水的容器”两道题的思路,很自然的可以想到使用排序 + 双指针的思路。对数组进行排序后,在三重循环的框架下主要是考虑如何减少枚举的次数。  #15题中提到过,在数组升序排列的情况下,只要保证每层循环层与层之间的枚举位置不重复,以

2020-08-10 15:54:01 87

原创 LeetCode #15. 三数之和

LeetCode #15. 三数之和I. Description:II. Solution:version 1解题思路:Code:I. Description:II. Solution:version 1解题思路:  开始的思路是三个数中,第一个数依次从左到右遍历,然后通过第一个数给定的情况下,也就意味着第二、三两个数的和确定了,则变为了找出某数组(原数组中除去第一个数,由剩下的数组成的数组)中两个数的和为某个给定的值的问题,可以单独写为一个函数。  另外,如何保证找出的组合不重复,考虑是

2020-08-03 00:26:24 107

原创 LeetCode #11. 盛最多水的容器

LeetCode #11. 盛最多水的容器I. Description:II. Solution:version 1解题思路:Code:version 2解题思路:Code:I. Description:II. Solution:version 1解题思路:  暴力枚举——依次将数组中的每个索引处的值赋值给变量 leftleftleft,然后每种 leftleftleft 情形下去确定当前索引右侧的所有索引从而确定变量 rightrightright ,记录下每种情形的面积值,比较后得出最

2020-07-29 20:51:59 148 1

原创 LeetCode #4. 寻找两个正序数组的中位数

LeetCode #4. 寻找两个正序数组的中位数I. Description:II. Solution:version 1解题思路:  整体思路是将A和B两个数组按照升序合并,最终计算一个有序数组的中位数。此时,需要判断下数组长度的奇偶性。Code:cpp#include <vector>class Solution {public: double findMedianSortedArrays(vector<int>& nums1,

2020-07-21 21:09:04 88

原创 图像特征之Harris角点检测

这里写自定义目录标题1. 角点定义2. 算法原理3. 角点检测算法的分类4. Harris角点检测5. 算法实现6. 代码参数说明:src: 输入图像,须为float型的单通道8位图像blockSize: 邻域大小,即滑动窗口的尺寸ksize: Sobel求导中使用的窗口大小,注意必须为奇数k: Harris角点检测方程中的自由参数,也就是上述计算角点响应值R公式中的α值合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容

2020-06-24 15:45:38 641 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除