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

数据结构数组总结

 

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

n = 1 的时候直接返回 

n = 偶数的时候最后的一个元素的下标是results[i ] [j + 1]

n = 奇数的时候最后一个元素的下标是results[i + 1] [j + 1]

public int[][] generateMatrix(int n) {int [][] results = new int [n][n];int start = 1;int i = 0;int j = 0;int x = 0;int y = 0;int x1 = n - 1;int y1 = n - 1;if(n == 1){return new int [][]{{1}};}while(start <= n * n){for(j = y; j < y1 ; j++) {results[x][j] = start++;}for(i = x; i < x1 ; i++){results[i][y1] = start++;}for(j = y1; j > y; j--){results[x1][j] = start++;}for(i = x1; i > x; i--){results[i][y] = start++;}if(start == n * n){if(n % 2 == 0){results[i][j +  1] = start;}else {results[i + 1][j + 1] = start;}break;}x = x + 1;y = y + 1;x1 = x1  - 1;y1 = y1  - 1;}return results;}

给定一个含有 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
   public int minSubArrayLen(int target, int[] nums) {int i = 0;int sum = 0;int len = Integer.MAX_VALUE;for(int j = 0; j < nums.length; j++){sum += nums[j];while(sum >= target){ // 过滤结果len = Math.min(len,j - i +  1);sum -= nums[i]; // 缩小窗口i++;}}return len == Integer.MAX_VALUE? 0: len;}

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

输入描述

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

输出描述

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

输入示例

5
1
2
3
4
5
0 1
1 3

1
2
3
4
5
6
7
8

输出示例

3
9

1
2

数据范围:

0 < n <= 100000

 

 

  public static void prefixTotal(){Scanner sc = new Scanner(System.in);int n = sc.nextInt();int [] nums = new int [n];for(int i = 0;i < n; i++){nums[i] = sc.nextInt();}int [] p = new int [n +  1];int sum = nums[0];p[0] = nums[0];for(int i = 1; i < n; i++){ //  1  2  3  4  5sum += nums[i - 1];p[i] = p[i - 1] + nums[i - 1];}while(sc.hasNext()){int left = sc.nextInt();int right = sc.nextInt();System.out.println(p[right + 1] - p[left]);}}

相关文章:

  • 【Dify系列教程重置精品版】第十一章:Dify与slenium
  • 3d GIS数据来源与编辑工具
  • 3D拟合测量水杯半径
  • Vert.x学习笔记-什么是Handler
  • 海上石油钻井平台人员安全管控解决方案
  • 华为OD机试真题——战场索敌(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • 【第4章 图像与视频】4.5 操作图像的像素
  • Spring框架学习day4--Spring集成Mybatis(IOC)
  • 《深入解析UART协议及其硬件实现》-- 第三篇:UART ASIC实现优化与低功耗设计
  • SpringBoot:统一功能处理、拦截器、适配器模式
  • Ubuntu 22.04 上安装 PostgreSQL(使用官方 APT 源)
  • 2025 一带一路暨金砖国家技能发展与技术创新大赛 第一届“信创适配及安全管理赛项”样题
  • 开发时如何通过Service暴露应用?ClusterIP、NodePort和LoadBalancer类型的使用场景分别是什么?
  • UDP编程
  • 4.1.1 Spark SQL概述
  • 2025年信息素养大赛 图形化编程复赛 官方样题绘制图形答案解析
  • 循环神经网络(RNN)模型
  • 【机器学习基础】机器学习入门核心算法:K均值(K-Means)
  • 强化学习(十三)DQN
  • CSS基础巩固-选择
  • 网站色彩学/百度推广如何计费
  • 景观设计师做交通分析常用网站/太原做推广营销
  • 增城建设局网站/外链推广
  • 学校校园网站建设实施方案/平台推广策略都有哪些
  • 阀门专业网站建设/关键词是怎么排名的
  • 揭阳网站设计制作/网络营销方案如何写