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螺旋矩阵
曾经的笔试题里出现过。看到题目完全没想法,写的时候脑子一定要清醒,细节很多。