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

做网站接广告要交税吗苏州seo关键词优化报价

做网站接广告要交税吗,苏州seo关键词优化报价,做黑彩票的网站赚钱,票务网站开发目录 1.题目 1.解法⼀(暴⼒求解)(会超时): 2.解法⼆(滑动窗⼝): 1.算法思路: 2.手撕图解 3.代码实现 1.C 2.C语言 1.题目 209. 长度最小的子数组 给定一个含有 n…

目录

 1.题目

1.解法⼀(暴⼒求解)(会超时):

 2.解法⼆(滑动窗⼝):

1.算法思路:

2.手撕图解

3.代码实现

 1.C++

2.C语言 


 1.题目

209. 长度最小的子数组

给定一个含有 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

1.解法⼀(暴⼒求解)(会超时):


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

class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {// 记录结果int ret = INT_MAX;int n = nums.size();// 枚举出所有满⾜和⼤于等于 target 的⼦数组[start, end]// 由于是取到最⼩,因此枚举的过程中要尽量让数组的⻓度最⼩// 枚举开始位置for (int start = 0; start < n; start++) {int sum = 0; // 记录从这个位置开始的连续数组的和// 寻找结束位置for (int end = start; end < n; end++) {sum += nums[end];  // 将当前位置加上if (sum >= target) // 当这段区间内的和满⾜条件时{// 更新结果,start 开头的最短区间已经找到ret = min(ret, end - start + 1);break;}}}// 返回最后结果return ret == INT_MAX ? 0 : ret;}
};

 2.解法⼆(滑动窗⼝):


1.算法思路:


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


做法:将右端元素划⼊窗⼝中,统计出此时窗⼝内元素的和:


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


▪ 如果窗⼝内元素之和不满⾜条件: right++ ,另下⼀个元素进⼊窗⼝。


相信科学(这也是很多题解以及帖⼦没告诉你的事情:只给你说怎么做,没给你解释为什么这么
做):

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


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


▪ 我们既然已经找到从 left1 开始的最优的区间,那么就可以⼤胆舍去 left1 。但是如
果继续像⽅法⼀⼀样,重新开始统计第⼆个元素( left2 )往后的和,势必会有⼤量重复
的计算(因为我们在求第⼀段区间的时候,已经算出很多元素的和了,这些和是可以在计算
下次区间和的时候⽤上的)。
▪ 此时, rigth1 的作⽤就体现出来了,我们只需将 left1 这个值从 sum 中剔除。从right1 这个元素开始,往后找满⾜eft2 元素的区间(此时right1也有可能是满⾜的,因为 left1 可能很⼩。 sum 剔除掉left1 之后,依旧满⾜⼤于等于target )。这样我们就能省掉⼤量重复的计算。
▪ 这样我们不仅能解决问题,⽽且效率也会⼤⼤提升。
时间复杂度:虽然代码是两层循环,但是我们的 left 指针和right 指针都是不回退的,两者
最多都往后移动 n 次。因此时间复杂度是O(N)

2.手撕图解

3.代码实现

INT_MAX是C语言中的一个宏定义,表示整型数据类型int的最大值。在32位系统中,它的值为2147483647;在64位系统中,它的值为9223372036854775807。这个值可以用来进行数据类型转换、判断数据是否越界等操作。

 1.C++

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++];              // 出窗⼝}}return len == INT_MAX ? 0 : len;}
};

2.C语言 

int minSubArrayLen(int target, int* nums, int numsSize)
{int sum = 0, len = INT_MAX;for (int left = 0, right = 0; right < numsSize; right++) {sum += nums[right];   // 进窗⼝while (sum >= target) // 判断{len = len < right - left + 1 ? len : right - left + 1; // 更新结果sum -= nums[left++];              // 出窗⼝}}return len == INT_MAX ? 0 : len;
}

http://www.mmbaike.com/news/42488.html

相关文章:

  • icp网站信息如何做好营销
  • 网站建设公司如何找客户火爆产品的推广文案
  • 中山建设招聘信息网站网站域名查询工具
  • 华人国际婚恋网站建设方案网站是怎么建立起来的
  • 鸡泽专业做网站线上平台推广方式
  • wap网站制作教程如何优化企业网站
  • 做游戏ppt下载网站seo营销技巧
  • 青岛自助建站软件百度广告点击一次多少钱
  • 石狮网站开发免费发帖平台
  • 网站建设公司山西黄冈网站推广厂家
  • 网站用户体验诊断百度企业官网认证
  • 重新做网站手机优化器
  • 做网站需要写代码个人开发app可以上架吗
  • 金融投资公司网站模板南京seo网络推广
  • wordpress建表seo怎么做最佳
  • 做照明出口的网站微信推广广告在哪里做
  • 网络科技有限公司英文黄山网站seo
  • 网站建设销售好泉州百度首页优化
  • 做网站客户拖着不验收seo网站权重
  • 中山网站建设半江红域名注册平台
  • 找人做公司网站黄页网络的推广网站有哪些类型
  • 典型网站建设广州今天新闻
  • 做网站白云区汕头网站建设平台
  • 网站开发公司杭州网站建设怎么做推广赚钱
  • 福田网站设计公司夸克搜索
  • 汕头 网站建设百度网址查询
  • 网站内容包括seo是什么职位缩写
  • 做威客哪个网站好东莞疫情最新通告
  • 做外贸零售和批发批发网站2022年度关键词
  • 国际新闻最新消息今天乌克兰与俄罗斯上海网络优化服务