![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法题回顾
文章平均质量分 63
努力学习的小田
这个作者很懒,什么都没留下…
展开
-
leetcode54-螺旋矩阵
我们需要观察打印出循环数组要什么条件,首先,是顺时针打印,我们会一层一层的打印,如图先打印红色,在打印蓝色,以此类推。这是一个大的规律,接下来开始顺时针遍历根据条件进行遍历,是比较简单的。这个题主要考察的就是循环遍历,如何根据题意来进行循环的控制,主要的难点就是要对各种情况进行周全考虑。输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]输出:[1,2,3,6,9,8,7,4,5],返回矩阵中的所有元素。原创 2024-08-03 11:28:00 · 260 阅读 · 0 评论 -
leetcode33-搜索旋转数组(二分法)
我们可以明显的看到旋转位置为蓝线所在的位置,它将数组分为了两个有序数组s1,s2,我们现在就是要找到这个位置,这个位置的特点就是后面的元素要比前面的小,通过二分的方法。这道题使用一般遍历的方法是很好解决的,但是题目要求时间复杂度,简单的遍历就会时间复杂度过高为O(n),不能满足题目中的要求,使用二分查找的方法能够满足题目的要求并达到好的效果,速度还是很快的。然后记下这两个数据的位置,比较题中的target与最后一个元素的大小如果大,则在S1串中进行二分查找,否则在S2中进行二分。按升序排列,数组中的值。原创 2024-08-02 14:13:51 · 596 阅读 · 0 评论 -
leetcode15-三数之和
这道题首先限制了三个元素的位置不能相同,并且不能包含数相同但顺序不同的三元组,如[-1,0,1]与[0,-1,1]算作是相同的元素。如何移动指针这个问题我们搞定了,现在还会存在一个问题,就是我们移动这三个指针的时候,下一个元素可能是重复元素,因此还要判断移动指针后的元素遇上一个元素是否相同。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]输入:nums = [0,0,0]输出:[[0,0,0]]原创 2024-08-01 15:32:53 · 289 阅读 · 0 评论 -
leetcode11-盛最多水的容器
缩放规则按照左边的右边与右边的左边进行比较,指针指向较大的。比如h[0]与h[8],先计算两者围成的容积,在比较h[1]和h[7]哪一个比较大如上图则左指针指向h[1]。假如X为两者里面较小的,我们不移动x而移动y,那么无论我们怎么移动其结果也不会超过x*t,因为我们要取最小值,所以选取的值只会≤x。原因是这样的当前左指针和右指针指向的数分别为 x 和 y,不失一般性,我们假设 x≤y。解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。输入:[1,8,6,2,5,4,8,3,7]原创 2024-07-31 11:45:12 · 147 阅读 · 0 评论 -
leetcode59-螺旋矩阵II
假如不做螺旋矩阵,直接做螺旋矩阵II的话,是比较难想到循环遍历这个方法的。leetcode通过引导1和2,使得2这个题还是比较好解决的。的一个变体,这个思路还可以按照螺旋数组进行遍历,只不过在遍历的时候不用把数组加入列表中了,而是应该填入数据,之后我们返回添加后的二维数组就可以了。输出:[[1,2,3],[8,9,4],[7,6,5]]所有元素,且元素按顺时针顺序螺旋排列的。原创 2024-08-03 11:39:10 · 260 阅读 · 0 评论 -
leetcode105-从前序与中序遍历序列构造二叉树
[左子树的中序遍历结果], 根节点, [右子树的中序遍历结果] ] 只要我们在中序遍历中定位到根节点,那么我们就可以分别知道左子树和右子树中的节点数目。它的前序遍历顺序为:preorder = [A,B,D,G,H,C,E,I,F](规则是先是根结点,再前序遍历左子树,再前序遍历右子树)它的中序遍历顺序为:inorder = [G,D,H,B,A,E,I,C,F](规则是先中序遍历左子树,再是根结点,再是中序遍历右子树)[ 根节点, [左子树的前序遍历结果], [右子树的前序遍历结果] ]原创 2024-08-04 14:12:05 · 262 阅读 · 0 评论 -
leetcode128-最长连续序列
这样的做法会有较高的时间复杂度,因为好多数都是没有必要遍历的,而且一旦出现[0,1,2,4,8,5,6,7,9,3,55,88,77,99,999999999]这样的数据,时间复杂度必然会超标。想必应该是遍历数组的问题,里面会存在大量重复元素,应该直接遍历Set集合,要使用增强for循环来遍历Set集合。,因此不能对数组进行排序。解释:最长数字连续序列是 [1, 2, 3, 4]。输入:nums = [0,3,7,2,5,8,4,6,0,1]输入:nums = [100,4,200,1,3,2]原创 2024-08-05 11:01:07 · 209 阅读 · 0 评论 -
leetcode71-简化路径
2.两个目录名之间必须只有一个斜杠 '/' ,多个‘/’视为一个‘/’。4.此外,路径仅包含从根目录到目标文件或目录的路径上的目录(即,不含 '.' 或 '..')‘.’表示本目录可以直接清除 ‘..’表示上一级目录要 清除上一级目录。这道题目是一道字符串截取的问题,这道题主要考虑的就是有关字符串截取的规范,整体来说要有一个清晰的思路。此外,路径仅包含从根目录到目标文件或目录的路径上的目录(即,不含。输入:path = "/a/./b/../../c/"输入:path = "/home//foo/"原创 2024-08-06 14:40:10 · 362 阅读 · 0 评论