![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
LeetCode刷题
deshany
乾坤未定,你我皆是黑马!
展开
-
【数组】螺旋矩阵II
题目链接:螺旋矩阵 II关键点:【1】正整数【2】顺时针排列思路:分为四条边和中间一个独立的数,如:[1,3)、[3,5)、[5,7)、[7,1)、9,依次填入。原创 2021-09-10 09:35:46 · 236 阅读 · 0 评论 -
【数组】长度最小的子数组
题目链接:长度最小的子数组关键点:【1】满足最小子数组之和小于等于给定值;【2】最小子数组不存在时返回0。思路:暴力解法:先假设最终最小子数组的长度为INT_MAX,然后直接2个for循环嵌套遍历,第一for循环作为最小子数组的起点,第二个用来遍历最小子数组,当满足最小子数组之和大于等于给定值时,与最终最小子数组长度进行比较,若小于,就认为此时最小子数组长度为最终最小数组长度。滑动窗口法:将最小子数组看做是一个窗口,用两个指针最为窗口左右边界,移动这两个指针可以改变窗口的长度,找到满足条件的最小原创 2021-09-03 15:30:28 · 353 阅读 · 0 评论 -
【数组】有序数组的平方
题目链接:有序数组的平方关键点:【1】原数组是按照非递减顺序排序的整数数组;【2】平方后的新数组也是按照非递减的顺序排序。思路:暴力解法:遍历数组,将每个数组元素平方后,按照从小到大进行排序。双指针解法:定义一个和原数组大小相同的新数组,使用一个指针指向该数组最后一个元素的位置。然后定义左右指针分别从原数组的左右两端向中间移动,每次取最大值从新数组最后位置依次向前填入。1)暴力解法#include <iostream>#include <vector>#inclu原创 2021-09-01 15:13:23 · 249 阅读 · 0 评论 -
【数组】移除元素
题目链接:移除元素关键点:【1】不能使用额外的数组空间;【2】不需要考虑数组中超出新长度后面的元素。思路:数组的存储空间是连续的,不能直接删除某个元素,只能选择覆盖,因此最简单直接的办法就是每遇到需要移除的元素就将它后面的所有元素向前移动一位。这里有两种解法,一种是暴力解法,一种是双指针解法。1)暴力解法#include <iostream>#include <vector>class Solution{public: int removeElement(st原创 2021-08-27 16:15:41 · 578 阅读 · 0 评论 -
【数组】二分查找
题目链接:二分查找关键点:【1】数组为有序数组;【2】数组中无重复元素(有重复元素,则找到的下标不唯一)。思路:二分法对于区间的判定非常重要,一般有[Left,Right]左闭右闭和[Left,Right)左闭右开两种区间。因此区间不同,写法也不同。1)左闭右闭区间写法#include <iostream>#include <vector>class Solution{public: int search(std::vector<int>&原创 2021-08-26 16:19:43 · 146 阅读 · 0 评论