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

做网站需要几个人分工网络工程师培训一般多少钱

做网站需要几个人分工,网络工程师培训一般多少钱,广州建设营销型网站,三亚app开发公司题目 209.长度最小的子数组 题目建议: 本题关键在于理解滑动窗口,这个滑动窗口看文字讲解 还挺难理解的,建议大家先看视频讲解。 拓展题目可以先不做。 力扣题目链接(opens new window) 给定一个含有 n 个正整数的数组和一个正整数 s &am…

题目

209.长度最小的子数组

题目建议: 本题关键在于理解滑动窗口,这个滑动窗口看文字讲解 还挺难理解的,建议大家先看视频讲解。 拓展题目可以先不做。

力扣题目链接(opens new window)

给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。

示例:

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

提示:

  • 1 <= target <= 10^9
  • 1 <= nums.length <= 10^5
  • 1 <= nums[i] <= 10^5

视频讲解:拿下滑动窗口! | LeetCode 209 长度最小的子数组_哔哩哔哩_bilibili

59.螺旋矩阵II

题目建议: 本题关键还是在转圈的逻辑,在二分搜索中提到的区间定义,在这里又用上了。

力扣题目链接(opens new window)

给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。

示例:

输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]

视频讲解:一入循环深似海 | LeetCode:59.螺旋矩阵II_哔哩哔哩_bilibili

区间和

前缀和是一种思维巧妙很实用 而且 很有容易理解的一种算法思想,大家可以体会一下

题目链接(opens new window)

题目描述

给定一个整数数组 Array,请计算该数组在每个指定区间内元素的总和。

输入描述

第一行输入为整数数组 Array 的长度 n,接下来 n 行,每行一个整数,表示数组的元素。随后的输入为需要计算总和的区间,直至文件结束。

输出描述

输出每个指定区间内元素的总和。

输入示例

5
1
2
3
4
5
0 1
1 3

输出示例

3
9

数据范围:

0 < n <= 100000

开发商购买土地

#TODO,少这道题,明天补

代码

public class Array2 {/*** 寻找满足其和 ≥ s 的长度最小的子数组* 时间复杂度:O(n),空间复杂度:O(1)* * @param s 目标和* @param nums 输入数组* @return 满足条件的最小子数组长度,如果不存在则返回0*/public static int minSubArrayLen(int s, int[] nums) {int left = 0;                  // 滑动窗口左边界int sum = 0;                   // 当前窗口内的元素和int minLength = Integer.MAX_VALUE;  // 最小子数组长度,初始化为最大整数值int n = nums.length;           // 数组长度// 右指针遍历整个数组for (int right = 0; right < n; right++) {sum += nums[right];        // 将当前元素加入窗口// 当窗口内元素和大于等于目标值时,尝试缩小窗口while (sum >= s) {int subLength = right - left + 1;  // 计算当前窗口长度minLength = Math.min(minLength, subLength);  // 更新最小长度sum -= nums[left];     // 移除窗口最左侧元素left++;                // 左指针右移}}// 如果minLength仍为初始值,说明没有找到满足条件的子数组return minLength == Integer.MAX_VALUE ? 0 : minLength;}/*** 生成螺旋矩阵* 按照顺时针螺旋顺序填充1到n²的元素到n×n矩阵中* 时间复杂度:O(n²),空间复杂度:O(n²)* * @param n 矩阵大小* @return 生成的n×n螺旋矩阵*/public static int[][] generateMatrix(int n) {// 创建n×n的二维数组用于存储结果int[][] nums = new int[n][n];// 定义每一圈的起始坐标点int startX = 0, startY = 0;  // startX表示行起点,startY表示列起点// offset用于控制每一条边遍历的长度,初始值为1是因为左闭右开的遍历方式int offset = 1;// count表示当前要填入矩阵的数字,从1开始递增int count = 1;  // 矩阵中需要填写的数字// loop表示当前遍历的圈数,从最外圈开始int loop = 1; // 记录当前的圈数// i和j用于在循环中表示当前的行和列索引int i, j; // j 代表列, i 代表行;// 对于n×n的矩阵,最多有n/2个完整的圈// 例如:3×3矩阵有1个完整圈,4×4矩阵有2个完整圈while (loop <= n / 2) {// 每一圈的遍历分为四个步骤:上边、右边、下边、左边// 步骤1:从左到右遍历上边// 左闭右开区间[startY, n-offset),即不包含最右侧的元素for (j = startY; j < n - offset; j++) {nums[startX][j] = count++; // 填充数字并递增}// 步骤2:从上到下遍历右边// 左闭右开区间[startX, n-offset),即不包含最下侧的元素for (i = startX; i < n - offset; i++) {nums[i][j] = count++; // 注意此时j已经是上一个循环结束的值}// 步骤3:从右到左遍历下边// 左闭右开区间(startY, j],即不包含最左侧的元素for (; j > startY; j--) {nums[i][j] = count++; // 注意此时i已经是上一个循环结束的值}// 步骤4:从下到上遍历左边// 左闭右开区间(startX, i],即不包含最上侧的元素for (; i > startX; i--) {nums[i][j] = count++; // 注意此时j已经是上一个循环结束的值}// 完成一圈的遍历后,更新下一圈的起始点和参数startX++; // 行起点向下移动一位startY++; // 列起点向右移动一位offset++; // 偏移量增加,使得下一圈的边长减少loop++;   // 圈数增加}// 特殊情况处理:当n为奇数时,矩阵中心位置需要单独赋值if (n % 2 == 1) { // n 为奇数时,单独处理矩阵中心的值nums[startX][startY] = count; // 此时startX和startY正好指向矩阵中心}return nums; // 返回填充完成的螺旋矩阵}/*** 计算指定区间内元素的总和* 使用前缀和优化区间查询* 时间复杂度:预处理O(n),每次查询O(1)* 空间复杂度:O(n)* * @param arr 输入数组* @param queries 查询区间数组,每个查询是一个长度为2的数组,表示[left, right]* @return 每个查询区间的元素总和*/public static int[] rangeSum(int[] arr, int[][] queries) {int n = arr.length;int q = queries.length;// 计算前缀和数组// prefixSum[i]表示arr[0]到arr[i-1]的和int[] prefixSum = new int[n + 1];for (int i = 0; i < n; i++) {prefixSum[i + 1] = prefixSum[i] + arr[i];}// 计算每个查询区间的和int[] results = new int[q];for (int i = 0; i < q; i++) {int left = queries[i][0];int right = queries[i][1];// 区间和 = prefixSum[right+1] - prefixSum[left]results[i] = prefixSum[right + 1] - prefixSum[left];}return results;}/*** 打印矩阵* * @param matrix 要打印的矩阵*/public static void printMatrix(int[][] matrix) {System.out.println("[");for (int i = 0; i < matrix.length; i++) {System.out.print("  [");for (int j = 0; j < matrix[0].length; j++) {System.out.print(matrix[i][j]);if (j < matrix[0].length - 1) {System.out.print(", ");}}System.out.print("]");if (i < matrix.length - 1) {System.out.println(",");} else {System.out.println();}}System.out.println("]");}public static void main(String[] args) {// 测试最小子数组长度int[] arr = {2, 3, 1, 2, 4, 3};int s = 7;System.out.println("最小子数组长度: " + minSubArrayLen(s, arr));// 测试螺旋矩阵System.out.println("\n生成3×3螺旋矩阵:");int[][] spiralMatrix = generateMatrix(3);printMatrix(spiralMatrix);System.out.println("\n生成4×4螺旋矩阵:");spiralMatrix = generateMatrix(4);printMatrix(spiralMatrix);// 测试区间求和System.out.println("\n测试区间求和:");int[] testArr = {1, 2, 3, 4, 5};int[][] queries = {{0, 1}, {1, 3}, {0, 4}};System.out.println("原始数组: ");for (int num : testArr) {System.out.print(num + " ");}System.out.println();int[] sums = rangeSum(testArr, queries);System.out.println("区间查询结果:");for (int i = 0; i < queries.length; i++) {System.out.println("区间 [" + queries[i][0] + ", " + queries[i][1] + "] 的和: " + sums[i]);}}
}

http://www.dtcms.com/wzjs/354427.html

相关文章:

  • webmaster网站制作seo引擎优化怎么做
  • 订阅号可以做网站吗什么网站做推广比较好
  • 企业网站的最高形态是综合型网站电商平台有哪些
  • 静态网站可以做留言板爱网站查询
  • 网站建设公司有哪些比较知名的免费建站免费推广的网站
  • 缩短网址做钓鱼网站刷推广链接人数的软件
  • 网站建设与管理课程标准百度竞价点击价格
  • extract wordpress优化内容
  • 建设银行可以查房贷的网站苏州seo关键词优化软件
  • 做英文网站建设注册城乡规划师含金量
  • 做产品展示网站免费网站生成器
  • 微信借口的网站怎么做北京疫情最新消息情况
  • 仿站建站教程搜索引擎优化的简称是
  • 购物网站建设百度seo优化技术
  • 公司制作网站需要百度指数的数据怎么导出
  • 沈阳网站开发外包商丘网络推广外包
  • 网站正在建设中中文线上推广方案模板
  • 四会市城乡规划建设局网站seo平台
  • 腾讯云 网站备案手机网站制作教程
  • 网站手机模板和pc模板要分开做新站网站推广公司
  • 青岛制作网站的合肥网络关键词排名
  • 个体户可以做企业网站武汉百度网站优化公司
  • 产品介绍网站设计百度小说风云榜总榜
  • 仿网站建设seo网站分析工具
  • 做网站电脑配置seo优化几个关键词
  • 漫画网站做任务给金币成都谷歌seo
  • 优惠券网站要怎么做的制作网页的软件有哪些
  • 家装公司网站网络营销做得好的品牌
  • 西安模板网站建设套餐北京网站优化合作
  • 武汉搞网站建设工资多少什么是搜索引擎优化