检索
肩上杯雪
自强不息,知行合一
展开
-
LeetCode 209. 长度最小的子数组
题意:给定一个数组nums以及一个s,找出在nums中 >= s的长度最小的连续子数组,并返回其长度。思路:1、前缀和 + 二分查找首先想到的是暴力解法,第一个循环枚举子数组的左端点,第二个循环枚举右端点,同时维护一个最小的ans。for (int i = 0; i < n; i++) { int sum = 0; for (int j = i; j < n; j++) { sum += nums[j]; if (sum >=.原创 2020-06-28 13:54:28 · 164 阅读 · 0 评论 -
LeetCode 3.无重复字符的最长子串——滑动窗口
链接 :原题题意 : 给定一个字符串s,寻找没有重复字符的最长子串,输出长度。例如 pwwkew 最长子串 wke。则长度为3.思路 :首先注意一下,子串 ≠ 子序列,子串是连续的。此题用的是双指针的一个应用,滑动窗口。思路即是,初始时,left = right = 0,然后只要满足条件 right指针右移,维护一个ans 代表最长子串的长度。如果不满足条件,则left 右移,缩减窗...原创 2020-05-03 14:43:14 · 152 阅读 · 0 评论 -
LeetCode 1095 山脉数组中查找目标值——二分寻找极值
链接 : 原题题意 : 给定一个山脉数组,即凸函数,寻找一个数值等于target的index。思路 :因为凸函数峰值的左右都是一个单调函数,所以只要找到峰值,再对两边分别进行二分查找就可。凹凸函数找峰值,本来我是想用三分查找的,但是三分查找能确定峰值是double类型,即连续函数才适用的。整数点构成的凹凸函数,三分查找只能缩减一个区间。例如此题 :牛客算法周周练4 E题装备合成...原创 2020-04-29 22:50:58 · 356 阅读 · 0 评论 -
牛客算法周周练4 E题装备合成——三分搜索
链接 :装备合成题意 :思路 :控制变量设 方法一生成的装备数量为 m,则方法二生成的装备数量是min((x - 2 * m)/4, y - 3* m)。所以生成的总量函数 f(m) = m + min((x - 2 * m)/4, y - 3* m)。m 的范围是 [0, min(x/2,y/3) ] ,即使用方法一生成的个数。而直接线性维护此函数的极值,复杂度最高是 1e9/...原创 2020-04-29 18:01:52 · 244 阅读 · 0 评论 -
POJ 3301——三分搜索
题意:给定一些点,找出包含这些点的最小的正方形。分析:首先在标准坐标系中,确定一个边平行于坐标轴的正方形。然后旋转坐标轴,在(0,π/2)区间内旋转,每次确定的正方形面积是凹函数,找出其中面积最小的正方形即可。注意:坐标旋转公式代码#include "bits/stdc++.h"using namespace std;#define mem(a,b) memset(a,b,siz...原创 2020-03-24 23:05:14 · 202 阅读 · 0 评论 -
HDU 4355 Party All The Time——三分搜索
网页无法写原创 2020-03-24 15:42:43 · 134 阅读 · 0 评论 -
HDU 2899 Strange fuction——三分搜索
链接 : http://acm.hdu.edu.cn/showproblem.php?pid=2899题意 : 给定一个函数,判断其最小值。分析:首先回顾一下,单调函数查找特定的值,是通过二分搜索得到的。即 l = min, r = max. mid = (l + r) /2 此处是下界。 mid = l + (l+r)/2 是上界。三分搜索,则针对的是凹凸函数。如图:其中 ...原创 2020-03-23 23:37:27 · 173 阅读 · 0 评论