type
status
date
slug
summary
tags
category
icon
password
学习小结:
例题一:
题目描述:
给定一个含有
n
个正整数的数组和一个正整数 target
。找出该数组中满足其总和大于等于
target
的长度最小的子数组
,并返回其长度
。
如果不存在符合条件的子数组,返回
。
示例 1:
示例 2:
示例 3:
题解:
问题and重点
使用二分法的关键是了解两个问题
1、为什么要加sums[i]:
sums[r]−sums[l−1]≥target
变形得到:
sums[r]≥target+sums[l−1]
2、二分法为什么可以确保是这个字串:
此时根据上面的那个变形公式可以当作他是一个tarfet,这个就是我们想要找到的一个二分法的最左值,可以把他当作一个固定的l,此时通过二分法就是确保找到这个r,此时r和l配合相减就是我们想要的位置
解法二:
滑动窗口,这个也是我最开始想到的方法,但是最开始没有思考到怎么具体实现
通过这个题目。了解到千万不要只停留到死记算法模板,还需要理解思想,尤其是这些抽象地思维
两道题地思想都是先固定l,然后移动r,逐渐缩小区间长度
例题二:
题目描述
给你一个整数数组
nums
,返回 数组 answer
,其中 answer[i]
等于 nums
中除 nums[i]
之外其余各元素的乘积 。题目数据 保证 数组
nums
之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。请 不要使用除法,且在
O(n)
时间复杂度内完成此题。示例 1:
示例 2:
题解:
问题and重点
双指针算法,就是难想
- Author:xiaowaaa
- URL:https://www.xiaowaaa.asia//article/12d5df8d-8884-805f-8615-c2bbe815db84
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!