![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode刷题之路
宣宣啊
毕业于家里蹲大学,爱好写字,旅行。
展开
-
LeetCode算法题(数组相关)(十四)——种花问题
问题:假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数n。能否在不打破种植规则的情况下种入n朵花?能则返回True,不能则返回False。输入: flowerbed = [1,0,0,0,1], n = 1输出: True输入: flowerbed = [1,0,0,0,1], n = 2输出: False算法:...原创 2020-10-28 20:28:35 · 364 阅读 · 0 评论 -
LeetCode算法题(数组相关)(十三)——最大连续1的个数
问题:给定一个二进制数组, 计算其中最大连续1的个数。输入: [1,1,0,1,1,1]输出: 3解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.算法:我的算法总体思路就是,遇到1就计数累加,遇到0就计数清0重新计数。其实思路挺简单的,直接上代码吧。因为计数变量会变,因此定义两个计数变量,每次遇到0时要比较两个计数变量哪个大,把大的留下。因此就会得到最大连续1的个数。实现:class Solution { public int findMax原创 2020-10-28 19:12:38 · 516 阅读 · 0 评论 -
LeetCode算法题(数组相关)(十二)——多数元素
问题:给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。输入: [3,2,3]输出: 3输入: [2,2,1,1,1,2,2]输出: 2算法:这道题我偷懒了,直接用了Java中的Map集合,太方便了。Map集合是一个一个的键值对,key代表数组中的每个不相同的元素,value代表出现的次数。将数组的所有元素循环完放入Map集合后,直接选择value值大于n/2的ke..原创 2020-10-28 18:30:03 · 281 阅读 · 0 评论 -
LeetCode算法题(数组相关)(十一)——加一
写在前面刷算法题是真的会上瘾,本来这周打算早早看完论文,没想到一刷算法题就停不下来了,论文也被搁置了。做出这道题就去看论文。。。。。问题:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。算法:刚刚看到这个题的时候,感觉出这个题的人是不是脑子冒泡了出这么简单的题,做着做着发现还是自己太年轻了。这道题要考虑到进位的问题,当然如果把数组转换成整数,加原创 2020-10-28 17:43:54 · 184 阅读 · 0 评论 -
LeetCode算法题(数组相关)(十)——移动零
问题:给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。输入: [0,1,0,3,12]输出: [1,3,12,0,0]算法:其实,数组移动的问题,几乎是大同小异。我们的核心问题是知道每个元素到底要移动到哪里。我的思路如下图所示:当循环完成后,在把后面cnt个元素赋值为0即可。实现:class Solution { public void moveZeroes(int[] nums) { int len...原创 2020-10-28 16:00:32 · 166 阅读 · 0 评论 -
LeetCode算法题(数组相关)(九)——丢失的数字
问题:给定一个包含[0, n]中n个数的数组nums,找出[0, n]这个范围内没有出现在数组中的那个数。输入:nums = [3,0,1]输出:2解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。输入:nums = [0,1]输出:2解释:n = 2,因为有 2 个数字,所以所有的数字都在范围 [0,2] 内。2 是丢失的数字,因为它没有出现在 nums 中。算法:这道题目也简单的...原创 2020-10-28 15:37:50 · 672 阅读 · 0 评论 -
LeetCode算法题(数组相关)(八)——移除元素
问题:给你一个数组 nums和一个值 val,你需要 原地 移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。给定 nums = [0,1,2,2,3,0,4,2], val = 2,函数应该返回新的长...原创 2020-10-28 12:55:53 · 169 阅读 · 0 评论 -
LeetCode算法题(数组相关)(七)——存在连续三个奇数的数组
问题:给你一个整数数组arr,请你判断数组中是否存在连续三个元素都是奇数的情况:如果存在,请返回true;否则,返回false。输入:arr = [2,6,4,1]输出:false解释:不存在连续三个元素都是奇数的情况。输入:arr = [1,2,34,3,4,5,7,23,12]输出:true解释:存在连续三个元素都是奇数的情况,即 [5,7,23] 。算法:这个应该算比较简单的问题了,我们可以在循环数组的同时,判断是否有连续的三个奇数。连续的问题我们可以通过...原创 2020-10-28 12:39:35 · 447 阅读 · 0 评论 -
LeetCode算法题(数组相关)(六)——三个数的最大乘积
问题:给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。输入: [1,2,3]输出: 6输入: [1,2,3,4]输出: 24算法:还没有看其他人怎么实现的这个功能,但是我自己写的程序耗时太多了。我的思路是这样的,对于任意给定的一个数组(长度大于等于3的数组),这个数组是无序的,我们想要求三个数乘积的最大值,就可以先将这个数组排序。排序后的数组有以下这几种情况:如果只有三个数,那么直接返回这三个数的乘积。如果数组所有的数都是负数,.原创 2020-10-26 10:59:55 · 585 阅读 · 1 评论 -
LeetCode算法题(数组相关)(五)——有序数组的平方
问题:给定一个按非递减顺序排序的整数数组A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。输入:[-4,-1,0,3,10]输出:[0,1,9,16,100]算法:看到这个题,有一个重点是数组的顺序,是非递减顺序。如果按照一个简单的思路来实现,那当然是将所有数组元素的平方,赋值给一个新的数组,之后再对新的数组进行排序。但是这样的思路做的话,题目中的非递减顺序有什么用呢?于是我写的程序利用了这个非递减顺序的条件,但是实现的过程比简单思路更复杂。下面介绍一下算法:以这个数.原创 2020-10-26 09:16:54 · 279 阅读 · 1 评论 -
LeetCode算法题(数组相关)(四)——搜索插入位置
问题:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。算法:这道题很显然,可以使用二分查找来解。只不过,二分查找的找不到该怎么办?实现:class Solution { public int searchInsert(int[] nums, int target) { int start = 0,end = nums.length-1,mid=(start原创 2020-10-23 15:33:19 · 168 阅读 · 0 评论 -
LeetCode算法题(数组相关)(三)——删除排序数组中的重复项
问题:给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。算法:在这个题中,很重要的一个条件就是,是一个排序数组。算法的核心就是,记录相同的元素总共有多少个,才能知道数组的元素要前移多少个。举个例子如下图所示:实现:class Solution { public int removeDuplicates(int[] nums)原创 2020-10-22 21:11:31 · 104 阅读 · 0 评论 -
LeetCode算法题(数组相关)(二)——两数之和
问题:给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。算法:首先,我们用一个具体的例子来走一遍,两个数是怎么找出来的。假如给定的整数数组为[15,11,7,2],那么,找到7和2的过程如下图所示:我们能看到找到7和2的过程中有一个规律,那就是下标的规律。假如下标用(i,j)表示,可以看到j逢四进一,当j进一之后,重新赋值j等于i+1。...原创 2020-10-22 20:49:00 · 230 阅读 · 0 评论 -
LeetCode算法题(数组相关)(一)——转置矩阵
问题:给定一个矩阵A,返回A的转置矩阵。矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。作为一个算法的菜鸟,这是自己独立做出来的第一道题。虽然很简单,但也是里程碑,从这里开始我的刷题之旅。算法思想:实在想不到什么能减少复杂度的算法,一个很简单的思想就是:step1:将给定矩阵A的行列长度分别计算出来step2: 新创建一个二维数组B,将二维数组B的长度和宽度,分别设置为给定矩阵的宽度和长度。step3:通过B[j][i] = A[i][j]来对矩阵进...原创 2020-10-22 20:21:33 · 283 阅读 · 0 评论