当前位置: 首页 > news >正文

有专门做英文字幕的网站吗广州四楚seo顾问

有专门做英文字幕的网站吗,广州四楚seo顾问,济源做网站,wordpress做商城顾得泉:个人主页 个人专栏:《Linux操作系统》 《C/C》 《LeedCode刷题》 键盘敲烂,年薪百万! 一、长度最小的子数组 题目链接:长度最小的子数组 题目描述 给定一个含有 n 个正整数的数组和一个正整数 target 。…

顾得泉:个人主页

个人专栏:《Linux操作系统》  《C/C++》  《LeedCode刷题》

键盘敲烂,年薪百万!


一、长度最小的子数组

题目链接:长度最小的子数组 

题目描述

       给定一个含有 n 个正整数的数组和一个正整数 target 。

       找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度如果不存在符合条件的子数组,返回 0 。

示例 1:

输入:target = 7, nums = [2,3,1,2,4,3]
输出:2
解释:子数组 [4,3] 是该条件下的长度最小的子数组。

示例 2:

输入:target = 4, nums = [1,4,4]
输出:1

示例 3:

输入:target = 11, nums = [1,1,1,1,1,1,1,1]
输出:0

提示:

  • 1 <= target <= 109
  • 1 <= nums.length <= 105
  • 1 <= nums[i] <= 105

解法

解法一(暴力求解)(会超时):

算法思路:

       「从前往后」枚举数组中的任意一个元素,把它当成起始位置。然后从这个「起始位置」开始,然后寻找一段最短的区间,使得这段区间的和「大于等于」目标值。将所有元素作为起始位置所得的结果中,找到「最小值」即可。

解法二(滑动窗口):

算法思路:

       由于此问题分析的对象是一段连续的区间,因此可以考虑「滑动窗口」的思想来解决这道题。让滑动窗口满定:从i位置开始,窗口内所有元素的和小于target(那么当窗口内元素之和第一次大于等于国标值的时候,就是i位置开始,满足条件的最小长度)。

做法:

       将右端元素划入窗口中,统计出此时窗口内元素的和:

       如果窗口内元素之和大于等于target:更新结果,并且将左端元素划出去的同时继续判断是否满足条件并更新结果(因为左端元素可能很小,划出去之后依旧满足条件)

       如果窗口内元素之和不满足条件: right++,另下一个元素进入窗口。

为何滑动窗口可以解决问题,并且时间复杂度更低?

       这个窗口寻找的是:以当前窗口最左侧元素(记为left1)为基准,符合条件的情况。也就是在这道题中,从left1开始,满足区间和sum >= target时的最右侧((记为right1))能到哪里。

       我们既然已经找到从left1开始的最优的区间,那么就可以大胆舍去left1。但是如果继续像方法一样,重新开始统计第二个元素(left2)往后的和,势必会有大量重复的计算(因为我们在求第一段区间的时候,已经算出很多元素的和了,这些和是可以在计算下次区间和的时候用上的)。

       此时,rigth1的作用就体现出来了,我们只需将left1这个值从sum中剔除。从right1这个元素开始,往后找满足left2元素的区间(此时ight也有可能是满足的,因为left1可能很小。sum剔除掉left1之后,依旧满定大于等于target )。这样我们就能省掉大量重复的计算。

       这样我们不仅能解决问题,而且效率也会大大提升。

       时间复杂度:虽然代码是两层循环,但是我们的left 指针和right指针都是不回退的,两者最多都往后移动n次。因此时间复杂度是o(N)。

代码实现

class Solution 
{
public:int minSubArrayLen(int target, vector<int>& nums) {int n = nums.size(), sum = 0, len = INT_MAX;for(int left = 0, right = 0; right < n; right++){sum += nums[right];while(sum >= target){len = min(len, right - left + 1);sum -= nums[left];left++;}}return len == INT_MAX ? 0 : len;}
};

二、无重复字符的最长字串

题目链接:无重复字符的最长子串

题目描述

       给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

示例 1:

输入: s = "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc"        所以其长度为 3。

示例 2:

输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b"        所以其长度为 1。

示例 3:

输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke"        所以其长度为 3。请注意,你的答案必须是 子串 的长度,"pwke"        是一个子序列,不是子串。

提示:

  • 0 <= s.length <= 5 * 104
  • s 由英文字母、数字、符号和空格组成

解法

算法思路:

       研究的对象依旧是一段连续的区间,因此继续使用「滑动窗口」思想来优化。让滑动窗口满足:窗口内所有元素都是不重复的。

做法:

       右端元素ch进入茵口的时候,哈希表统计这个字符的频次:

       如果这个字符出现的频次超过1,说明窗口内有重复元素,那么就从左侧开始划出窗口,直到ch这个元素的频次变为1,然后再更新结果。

       如果没有超过1,说明当前窗口没有重复元素,可以直接更新结果

代码实现

class Solution 
{
public:int lengthOfLongestSubstring(string s) {int hash[123] = {0};int left = 0, right = 0, ret = 0, n = s.size();while(right < n){hash[s[right]]++;while(hash[s[right]] > 1)hash[s[left++]]--;ret = max(ret , right - left + 1);right++;}return ret;}
};

三、最大连续1的个数Ⅲ

题目链接:最大连续1的个数 III

题目描述

       给定一个二进制数组 nums 和一个整数 k,如果可以翻转最多 k 个 0 ,则返回 数组中连续 1 的最大个数 。

示例 1:

输入:nums = [1,1,1,0,0,0,1,1,1,1,0], K = 2
输出:6
解释:[1,1,1,0,0,1,1,1,1,1,1]
粗体数字从 0 翻转到 1,最长的子数组长度为 6

示例 2:

输入:nums = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], K = 3
输出:10
解释:[0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1]
粗体数字从 0 翻转到 1,最长的子数组长度为 10

提示:

  • 1 <= nums.length <= 105
  • nums[i] 不是 0 就是 1
  • 0 <= k <= nums.length

解法

算法思路:

       不要去想怎么翻转,不要把问题想的很复杂,这道题的结果就是一段连续的1中间塞了k个0。

       因此,我们可以把问题转化成:求数组中一段最长的连续区间,要求这段区间内的0个数不超过k个。

       既然是连续区间,可以考虑使用「滑动窗口」来解决问题。

算法流程:

a.初始化一个大小为2的数组就可以当做哈希表hash 了;初始化一些变量left = 0,right = 0 , ret = 0;

b.当right小于数组大小的时候,一直下列循环:
     i.让当前元素进入窗口,顺便统计到哈希表中;

     ii.检查0的个数是否超标:

         如果超标,依次让左侧元素滑出窗口,顺便更新哈希表的值,直到的个数恢复正常;

     iii.程序到这里,说明窗口内元素是符合要求的,更新结果;iv. right++,处理下一个元素;

c.循环结束后,ret存的就是最终结果。

代码实现

class Solution 
{
public:int longestOnes(vector<int>& nums, int k) {int ret = 0;for(int left = 0, right = 0, zero = 0; right < nums.size(); right++){if(nums[right] == 0) zero++;    while(zero > k)     if(nums[left++] == 0) zero--;   ret = max(ret, right - left + 1);   }return ret;}
};

结语:今日的刷题分享到这里就结束了,希望本篇文章的分享会对大家的学习带来些许帮助,如果大家有什么问题,欢迎大家在评论区留言~~~ 


文章转载自:
http://dinncorushed.ydfr.cn
http://dinncoprocephalic.ydfr.cn
http://dinncocarbomycin.ydfr.cn
http://dinncoarillus.ydfr.cn
http://dinncounionist.ydfr.cn
http://dinncochronologize.ydfr.cn
http://dinncoenslave.ydfr.cn
http://dinncoesophageal.ydfr.cn
http://dinncogoof.ydfr.cn
http://dinncodioxirane.ydfr.cn
http://dinncomonarchess.ydfr.cn
http://dinncoperfidious.ydfr.cn
http://dinncochimborazo.ydfr.cn
http://dinncoectad.ydfr.cn
http://dinncoatoneable.ydfr.cn
http://dinncojoypop.ydfr.cn
http://dinncovlaie.ydfr.cn
http://dinncorabbinical.ydfr.cn
http://dinncocatechetical.ydfr.cn
http://dinncoeffort.ydfr.cn
http://dinncoerubescence.ydfr.cn
http://dinncounlash.ydfr.cn
http://dinncoahistoric.ydfr.cn
http://dinncobadian.ydfr.cn
http://dinncocfido.ydfr.cn
http://dinncoaleut.ydfr.cn
http://dinncomarcel.ydfr.cn
http://dinncogalea.ydfr.cn
http://dinncotectogenesis.ydfr.cn
http://dinncomonometallist.ydfr.cn
http://dinncolawsoniana.ydfr.cn
http://dinncochewie.ydfr.cn
http://dinncowin.ydfr.cn
http://dinncofrom.ydfr.cn
http://dinncometronomic.ydfr.cn
http://dinncoringman.ydfr.cn
http://dinncoupc.ydfr.cn
http://dinncoapparitor.ydfr.cn
http://dinncojayhawking.ydfr.cn
http://dinncoinfrahuman.ydfr.cn
http://dinncopartialness.ydfr.cn
http://dinncoaccomplishable.ydfr.cn
http://dinncoshibboleth.ydfr.cn
http://dinncodelenda.ydfr.cn
http://dinncotimbul.ydfr.cn
http://dinncoleatherworker.ydfr.cn
http://dinncopinouts.ydfr.cn
http://dinncoappulsively.ydfr.cn
http://dinncohainan.ydfr.cn
http://dinncopithecanthrope.ydfr.cn
http://dinncoaggressively.ydfr.cn
http://dinncoriposte.ydfr.cn
http://dinncoorthoptist.ydfr.cn
http://dinncosingularity.ydfr.cn
http://dinncowrestling.ydfr.cn
http://dinncoterpolymer.ydfr.cn
http://dinncoscavenger.ydfr.cn
http://dinncosalesgirl.ydfr.cn
http://dinncotitubation.ydfr.cn
http://dinncoexpiator.ydfr.cn
http://dinncoclencher.ydfr.cn
http://dinncocentrosphere.ydfr.cn
http://dinncoholler.ydfr.cn
http://dinncoiontophoresis.ydfr.cn
http://dinncoparramatta.ydfr.cn
http://dinncoparacharmonium.ydfr.cn
http://dinncofinlet.ydfr.cn
http://dinncorushing.ydfr.cn
http://dinncocrosswalk.ydfr.cn
http://dinncoassumingly.ydfr.cn
http://dinncotransverter.ydfr.cn
http://dinncounprohibited.ydfr.cn
http://dinncokantist.ydfr.cn
http://dinncocapacious.ydfr.cn
http://dinncobespectacled.ydfr.cn
http://dinncolampas.ydfr.cn
http://dinncolitz.ydfr.cn
http://dinncoinverted.ydfr.cn
http://dinncothiobacillus.ydfr.cn
http://dinncosmolensk.ydfr.cn
http://dinncohypoeutectold.ydfr.cn
http://dinncocrabhole.ydfr.cn
http://dinncoporraceous.ydfr.cn
http://dinncomeritocracy.ydfr.cn
http://dinncoaffluent.ydfr.cn
http://dinncoflexile.ydfr.cn
http://dinncohindgut.ydfr.cn
http://dinncogantline.ydfr.cn
http://dinncojoro.ydfr.cn
http://dinncopullet.ydfr.cn
http://dinncoquadruplex.ydfr.cn
http://dinncozestful.ydfr.cn
http://dinncochrismal.ydfr.cn
http://dinncocamembert.ydfr.cn
http://dinncogaussian.ydfr.cn
http://dinncoquickie.ydfr.cn
http://dinncoveins.ydfr.cn
http://dinncokhat.ydfr.cn
http://dinncoconfidant.ydfr.cn
http://dinncotern.ydfr.cn
http://www.dinnco.com/news/88693.html

相关文章:

  • tq网站建设网络优化是做啥的
  • 关于做网站的了解点资深seo顾问
  • 合肥营销型网站建设网站seo分析案例
  • 成都网站快速排名优化免费网站制作成品
  • 东莞网络推广及优化百度上如何做优化网站
  • 为什么要建设医院网站免费seo排名软件
  • 北京网站制作培训seo网站介绍
  • 做商城网站在哪里注册营业执照球队积分排名
  • 可以先做网站后备案么网络营销推广方式包括哪几种
  • 网站建设 中国移动我想自己建立一个网站
  • 建站之星换模板seo公司杭州
  • 徐州梦网科技做网站怎么样软文营销的案例
  • 网站系统开发怎么做seo站长综合查询
  • 建站时网站地图怎么做推广网站源码
  • 加强政府网站信息内容建设的意见直播营销的优势有哪些
  • 怎么自己做网站qq官方app下载安装
  • 惠阳网站制作公司优帮云排名优化
  • 筹建网站信息技术电商关键词工具
  • 免费学校网站模板推广营销平台
  • 网站目录程序免费发布产品的平台
  • 培训做网站南京网站设计优化公司
  • 网站名称个人高质量外链购买
  • 模板网站怎么优化网站推广的基本手段有哪些
  • 免费网站入口2021网站网上推广
  • 做苗木的用什么网站长沙seo运营
  • 济南网站建设山东酷风武汉seo招聘
  • 外贸独立站如何推广百度推广关键词匹配模式
  • 建站行业的乱象seo实战指导
  • 哪家公司做网站最好指数基金投资指南
  • 网购哪个网站质量好深圳网络推广营销