首页 > TAG信息列表 > minlen

[算法] 剑指offer2 golang 面试题8:和大于或等于k的最短子数组

[算法] 剑指offer2 golang 面试题8:和大于或等于k的最短子数组 题目1: 思路1: 滑动窗口 //思路: 滑动窗口 //指针 [left,right] 记录连续子数组的区间,并记录区间和 sum //if sum < target; right ++ ;sum += nums[right] //if sum >= target; 更新最小长度 minLen; sum -= n

[专题1:数组]滑动窗口:209.长度最小的子数组

题目描述:给定一个含有n个正整数的数组和一个正整数s,找出该数组中满足其和>=s的长度最小的连续子数组,并返回其长度。如果不存在符合条件的子数组,返回0。 例如: 输入s = 7, nums = [2, 3, 1, 2, 4, 3]输出:2暴力解法 使用两层for循环从第一个元素开始求和,如果和大于s,记录下数组的

滑动窗口之LeetCode209长度最小的子数组

于2021.11.26练习 题目链接 1.1 解法1:暴力解法之两次遍历 思路:首先初始化这个子组的最小长度为Integer.MAX_VALUE,然后遍历数组的每一个下标作为子组的第一个元素,对于每一个开始下标i,需要找到大于或等于i的最小下标j,使得从nums[i]到nums[j]这个区间内元素之和大于target。如果

Leetcode.697. 数组的度---哈希map存储

697. 数组的度 给定一个非空且只包含非负数的整数数组 nums,数组的度的定义是指数组里任一元素出现频数的最大值。 你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度。 示例 1: 输入:[1, 2, 2, 3, 1] 输出:2 解释: 输入数组的度是2,因为元素1和2的出

第14题:数组的度

解题思路:用一个map将nums的值作为key存入,在value中记录出现的次数,第一次出现的位置,出现的最后一次的位置。然后第二次遍历values找到最大的次数,用最后一次位置减去第一次位置加一就可以得到最小数组了。 源代码: class Solution {     public int findShortestSubArray(i

leetcode76.最小覆盖子串(困难)

双指针经典题目,可以看一下leetcode.209 自己的思路: 记录出s中每个字符后面该字符的位置,当left指针移动之后,导致窗口内少了一个字符,right直接移动到left之前指向的那个字符。 自己的思路存在的问题: 注意题目中t的字符是可重复的,如果不重复的话才可以这样做! 官方思路: 双指针

7-35 城市间紧急救援 (25 分)

题目链接 Dijkstra: #include<iostream> using namespace std; dfs做法:不知道哪里错了   #include<iostream> #include<cstring> using namespace std; const int N = 510, INF = 0x3f3f3f3f; int num[N],path[N]; bool book[N],vis[N];//vis剪枝需要 int g[N][N]; int n,m

长度最小的子数组

滑动窗口 接下来就开始介绍数组操作中另一个重要的方法:滑动窗口。 所谓滑动窗口,就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果。 这里还是以题目中的示例来举例,s=7, 数组是 2,3,1,2,4,3,来看一下查找的过程: 最后找到 4,3 是最短距离。 其实从动画中可以发现滑动窗口也

leetcode 209. 长度最小的子数组 python

题目描述:    题解:  题解一(超时): 1.numsum保存nums数组的前缀和,即numsum[i]=nums[0]+nums[1]+...+nums[i] 2.nums[i]+num[i+1]+...+nums[j]可以转化为numsum[j]-numsum[i] 3.对numsum进行遍历,找到满足numsum[j]-numsum[i]>=target的最小的j-i。 class Solution(object): de

数组

目录标题 来源数组遍历统计数组中的元素697. 数组的度问题解决方案 来源 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problemset/all/ 数组遍历 统计数组中的元素 697. 数组的度 问题 给定一个非空且只包含非负数的整数数组 nums,数组的度的定义是指数组里任一元素

2021-08-05 数组的度

力扣 //维护一个哈希表,其中存储了每个数字出现的次数、其第一次出现的位置以及最后一次出现的位置 //最短连续子数组必然包含出现频次最高的数字的所有个体,minLen = vec[2] - vec[1] + 1 class Solution { public: int findShortestSubArray(vector<int>& nums) {

LeetCode 最长公共前缀

https://leetcode-cn.com/problems/longest-common-prefix/description/ 我的解决方案: class Solution { public String longestCommonPrefix(String[] strs) { if(strs.length==0) return ""; String res = ""; for(int i=0;i

Prim算法JAVA 清楚易懂

import java.util.Scanner; public class Prim { static int map[][];//图 static int n;//节点个数 static boolean vis[];//标记节点是否在树中 public static void main(String[] args) { Scanner in =new Scanner(System.in); n=in.nex

2021-03-15

北大 算法基础 深搜之寻路 练习代码: #include<iostream> #include<vector> using namespace std; int K, N, R, S, D, L, T;//开始城市,到达城市,路长,花费 struct Road { int d, l, t; }; vector<vector<Road>> cityMaps(110);//城市邻接表,内vector保存各城市可到达的

最小覆盖子串-滑动窗口

链接: 最小覆盖字串. from collections import defaultdict class Solution: def minWindow(self, s: str, t: str) -> str: left,right = 0,0 minlen = float('INF') match = 0 start = 0 need = defaultdict(int)

209.长度最小的子数组

给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。 示例: 输入:s = 7, nums = [2,3,1,2,4,3] 输出:2 解释:子数组 [4,3] 是该条件下的长度最小的子数组。 滑动窗口法: 1.我们在字

[BZOJ1396] 识别子串 - 后缀自动机,线段树

Description 问字符串 \(S\) 每一位的最短识别子串是多长(识别子串指包含这个字符且只出现在 \(S\) 中一次的子串)。 Solution 首先建出 SAM,由于我们要求出现次数为 \(1\),只有 \(endpos\) 集合大小为 \(1\) 的那些结点有贡献 满足这个条件的结点所表示的串的集合一定是 \([i,pos]\),

LeetCode 862. 和至少为 K 的最短子数组(前缀和+deque单调栈)

1. 题目 返回 A 的最短的非空连续子数组的长度,该子数组的和至少为 K 。 如果没有和至少为 K 的非空子数组,返回 -1 。 示例 1: 输入:A = [1], K = 1 输出:1 示例 2: 输入:A = [1,2], K = 4 输出:-1 示例 3: 输入:A = [2,-1,2], K = 3 输出:3 提示: 1 <= A.length <= 50000 -10 ^ 5

BZOJ 1396 识别子串

BZOJ 1396 识别子串 昨晚拿到这道题想到了线段树做法还以为麻烦了,码了好久过了才发现网上都这么写的。。 只出现一次实际上就是 endpos 集合大小为1,就是 parent 树上siz是1。 由于我们只需要 endpos 集合大小是1的点的 endpos 集合,也没必要线段树合并求 endpos 集合了,对每个点加进

LeetCode 727. Minimum Window Subsequence

原题链接在这里:https://leetcode.com/problems/minimum-window-subsequence/ 题目: Given strings S and T, find the minimum (contiguous) substring W of S, so that T is a subsequence of W. If there is no such window in S that covers all characters in T