
数组
有关数组的题与思想
安洁莉娅丶
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
剑指Offer:顺时针打印矩阵(JAVA实现)
这题思路不难。 很容易就想到了 从左到右, 从上到下 从右到左 从下到上 难点在于各种边界条件的判定,还有大堆的if,else判断条件,如果是现场编写代码很难做到面面俱到。 看了下别人的题解: 觉得用边界压缩这个思路来编写代码是最简洁的。 时间复杂度O(MN) 空间复杂度O(1) 用L,R,T,B分别记录左边界,右边界,上边界,下边界的位置。 每一次循环都要进行边界的压缩,并且判断边界是否已经越界了。 这种思路比用访问数组的思路要清晰,并且编写起来很舒适。 class Solution { pub原创 2020-12-09 10:55:13 · 169 阅读 · 0 评论 -
力扣工作周刷题 - 75题 颜色分类
2020.10.11 原题:点击此处 解题要求: 1、时间复杂度o(n) 2、空间复杂度o(1) 题解: 1、设置双指针(实际上有三个指针在动。) 一个指针zop记录0 该放置的位置。(从【0】开始) 一个指针twp记录2 该放置的位置。(从【nums.length-1】开始) 一个指针move从头往后遍历数值。 2、如果遇到0,就把该位置与zop交换,因为zop的位置一定是遍历过的,所以move++,无需再次检查,zop++。 3、如果遇到2,就把该位置与twp交换,因为twp的位置一定是没有遍历过的,所原创 2020-10-11 17:33:00 · 149 阅读 · 1 评论 -
力扣周末回顾1--121题 买卖股票的最好时机
从这一周开始,我给我自己定下的目标是周一到周五 刷力扣的新题,周末用于回顾自己做过的题,看看有没有新的发现,也做为一个很好地回顾。 原题:点击这里 这道题没有什么很高深的算法,刚开始刷题的时候肯定想到的是暴力匹配。 如何暴力? 即遍历数组时,找到一个低谷点,然后再从低谷点开始往后遍历所有比他高的点,记录最大值,然后回到记录的低谷点位置,重复此操作。 显然时间复杂度是O(n^2),很不好。 要解决这...原创 2020-03-14 12:06:04 · 204 阅读 · 0 评论 -
力扣2020春季每日一题 -945题 使数组唯一的最小增量
原题:点击此处 考点:排序、线性探测法 本题题解参考:线性探测法的路径压缩 解题: 本题的数字数量不会超过40000,最差情况必须考虑到80000。 第一时间想到了哈希表,可以用哈希表遍历一遍数组,得到数字与对应的频率,然后通过线性探测的方法,保证所有的数字频率都是“1”。(超时) 第二种思路是时间复杂度最为简单的“排序”,利用java内置soft函数。时间复杂度为O(nlogn); 第三种思路...原创 2020-03-22 12:05:58 · 246 阅读 · 0 评论 -
力扣周末回顾5 -1013题 将数组分成和相等的三个部分
周末回顾题5 原题:点击此处 数组简单题,做一下用来放松。 考点:数组,双指针 解题: 1.如果数组长度不够3,fasle; 2.如果数组总和取余不为0,false; 3.数组总和除3,得到判断条件situation。 3.双指针思想: 左边设一个指针,右边设一个指针。 左边往右边遍历,找到总和等于situation的时候停下。 右边往左边遍历,找到总和等于situation的时候停下。 为了保证...原创 2020-03-22 10:20:26 · 172 阅读 · 0 评论