【复习】代码随想录算法训练营第二天|数组part02

8.7 周一

【没做出】977有序数组的平方

题目:

将非递减数组平方后,仍按非递减顺序排列

题解:

1、平方后,较大的数在两端,较小的在中间。所以定义左右两个指针,由两端向中间移动

2、将左右指针指向的数中较大的放入结果数组(从后往前放)

【没做出】209长度最小的子数组

题目:求长度最小的和大于等于target的子数组

题解:

1、滑动窗口法,遍历数组,i为窗口的结束位置

2、在遍历过程中,如果sum>=target了,就是缩小窗口,left++,同时记录子数组长度。

3、注意,缩小窗口是一个循环的过程,使用while。

新知识点:

Integer.MAX_VALUE

相关题目:

题解:好难。

1、首先理解题意,fruits[i]表示第i课树上的水果种类编码(比如1代表是苹果,2代表是桃子)。所以这道题就是求最多包含两种数(两种水果)的最长子序列

2、使用滑动窗口法,但是这题和上一题的第一个不同点是:

上题在满足条件时缩小窗口,在while里记录result;本题是在不满足条件时缩小窗口,在while外记录条件。

3、本题使用哈希表来记录水果种类。

新知识(哈希表):

创建:HashMap<Integer, Integer> map = new HashMap<Integer, Integer>()

插入:map.put(key,value)

更新value的值:

map.put(fruits[right], map.getOrDefault(fruits[right], 0)+1);(标红的函数表示返回value,如果没找到就返回给定值)

返还value:map.get(key)

删除:map.remove(key)

题解:难死了

59螺旋矩阵

曾经的笔试题里出现过。看到题目完全没想法,写的时候脑子一定要清醒,细节很多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值