首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在C++中存储不同长度的子数组

在C++中存储不同长度的子数组可以使用动态数组或者向量(vector)来实现。

动态数组是一种可以在运行时调整大小的数组。在C++中,可以使用new运算符来动态分配内存,并使用delete运算符释放内存。以下是一个示例代码:

代码语言:txt
复制
int main() {
    int n;
    cout << "请输入子数组的个数:";
    cin >> n;

    int** subArrays = new int*[n]; // 创建一个指针数组,用于存储子数组的指针

    for (int i = 0; i < n; i++) {
        int length;
        cout << "请输入第" << i+1 << "个子数组的长度:";
        cin >> length;

        subArrays[i] = new int[length]; // 创建一个长度为length的子数组
        cout << "请输入第" << i+1 << "个子数组的元素:";
        for (int j = 0; j < length; j++) {
            cin >> subArrays[i][j]; // 输入子数组的元素
        }
    }

    // 输出子数组的内容
    for (int i = 0; i < n; i++) {
        int length = sizeof(subArrays[i]) / sizeof(int); // 获取子数组的长度
        cout << "第" << i+1 << "个子数组的内容:";
        for (int j = 0; j < length; j++) {
            cout << subArrays[i][j] << " ";
        }
        cout << endl;
    }

    // 释放内存
    for (int i = 0; i < n; i++) {
        delete[] subArrays[i];
    }
    delete[] subArrays;

    return 0;
}

向量(vector)是C++标准库中提供的一种动态数组容器。它可以自动调整大小,并提供了一系列方便的成员函数来操作数组。以下是一个使用向量存储不同长度子数组的示例代码:

代码语言:txt
复制
#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n;
    cout << "请输入子数组的个数:";
    cin >> n;

    vector<vector<int>> subArrays; // 创建一个二维向量,用于存储子数组

    for (int i = 0; i < n; i++) {
        int length;
        cout << "请输入第" << i+1 << "个子数组的长度:";
        cin >> length;

        vector<int> subArray(length); // 创建一个长度为length的子数组
        cout << "请输入第" << i+1 << "个子数组的元素:";
        for (int j = 0; j < length; j++) {
            cin >> subArray[j]; // 输入子数组的元素
        }

        subArrays.push_back(subArray); // 将子数组添加到二维向量中
    }

    // 输出子数组的内容
    for (int i = 0; i < subArrays.size(); i++) {
        cout << "第" << i+1 << "个子数组的内容:";
        for (int j = 0; j < subArrays[i].size(); j++) {
            cout << subArrays[i][j] << " ";
        }
        cout << endl;
    }

    return 0;
}

以上代码示例中,我们使用动态数组和向量分别存储了不同长度的子数组,并演示了如何输入和输出子数组的内容。在实际应用中,可以根据具体需求选择合适的数据结构来存储不同长度的子数组。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

长度最小数组

长度最小数组 给定一个含有n个正整数数组和一个正整数s ,找出该数组满足其和 ≥ s长度最小连续数组,并返回其长度。如果不存在符合条件连续数组,返回0。...实例 输入: s = 7, nums = [2,3,1,2,4,3] 输出: 2 解释: 数组 [4,3] 是该条件下长度最小连续数组。...然后继续循环,当sum < s时候尾指针不断右移,因为窗口间值一直小于给定s,只有尾指针右移扩大窗口才有可能使窗口间和大于等于s,当窗口间值和大于s时,那么就使首指针右移用以减小窗口数量...,只有不断减少窗口数量才能获得长度最小连续数组,当尾指针达到边界条件即尾指针超过了nums数组长度,那么尾指针不再右移,此时将首指针不断右移,直到首指针长度与nums数组长度相等,结束循环,...最后判断target是否仍然等于无穷大,如果仍然是等于无穷大则认为没有找到合适数组长度并返回0,否则就返回target。

1.8K10

数组——209.长度最小数组

1 题目描述 长度最小数组 给定一个含有 n 个正整数数组和一个正整数 target 。...找出该数组满足其和 ≥ target 长度最小 连续数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件数组,返回 0 。...2 题目示例 示例 1: 输入:target = 7, nums = [2,3,1,2,4,3] 输出:2 解释:数组 [4,3] 是该条件下长度最小数组。...首先要思考 如果用一个for循环,那么应该表示 滑动窗口起始位置,还是终止位置。 如果只用一个for循环来表示 滑动窗口起始位置,那么如何遍历剩下终止位置?...解题关键在于 窗口起始位置如何移动 滑动窗口精妙之处在于根据当前序列和大小情况,不断调节子序列起始位置。

1.7K70

leetcode-209-长度最小数组

题目描述: 给定一个含有 n 个正整数数组和一个正整数 s ,找出该数组满足其和 ≥ s 长度最小连续数组。如果不存在符合条件连续数组,返回 0。...示例:  输入: s = 7, nums = [2,3,1,2,4,3] 输出: 2 解释: 数组 [4,3] 是该条件下长度最小连续数组。...要完成函数: int minSubArrayLen(int s, vector& nums)  说明: 1、这道题给定一个正整数s,和一个包含正整数vector,要求vector中找到最短长度连续数组...,这个子数组中所有数和>=s,返回数组长度。...2、这道题不会很难,我们用滑窗方法找到和>=s数组,接着不断更新最短长度,最终返回这个最短长度即可。

1.4K30

长度最小数组

题目描述 解题思路 代码 复杂度分析 GitHub LeetCode 项目 题目描述 题目链接 给定一个含有 n 个正整数数组和一个正整数 target 。...找出该数组满足其和 ≥ target 长度最小 连续数组 numsl, numsl+1, ..., numsr-1, numsr ,并返回其长度。如果不存在符合条件数组,返回 0 。...示例 1: 输入:target = 7, nums = [2,3,1,2,4,3] 输出:2 解释:数组 [4,3] 是该条件下长度最小数组。...,请尝试设计一个 O(n log(n)) 时间复杂度解法。...解题思路 这道题是要找长度最小连续数组,可以使用滑动窗口,核心思路就是维护滑动窗口两个数值,start 和 end: 如果 sumstart, end<target,就 end++,此时 start

56230

长度最小数组

题目描述 给定一个含有 n 个正整数数组和一个正整数 s ,找出该数组满足其和 ≥ s 长度最小 连续 数组,并返回其长度。如果不存在符合条件数组,返回 0。...示例: 输入:s = 7, nums = [2,3,1,2,4,3] 输出:2 解释:数组 [4,3] 是该条件下长度最小数组。...进阶: 如果你已经完成了 O(n) 时间复杂度解法, 请尝试 O(n log n) 时间复杂度解法。 分析 什么叫数组? 如果没有解怎么办?...返回0 暴力解 遍历所有的连续数组[i...j] 计算其和SUM,验证SUM >= s 时间复杂度O(N^3) 滑动窗口 class Solution { public: int minSubArrayLen...public: int minSubArrayLen(int s, vector& nums) { int l = 0, r = -1; // nums[l...r]为我们滑动窗口

45951

长度最小数组

长度最小数组 给定一个含有 n 个正整数数组和一个正整数 target 。...找出该数组满足其总和大于等于 target 长度最小 连续 数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。...如果不存在符合条件数组,返回 0 。 示例 1: 输入:target = 7, nums = [2,3,1,2,4,3] 输出:2 解释:数组 [4,3] 是该条件下长度最小数组。...数组[start, end] // 由于是取到最⼩,因此枚举过程要尽量让数组⻓度最⼩ // 枚举开始位置 for (int start = 0; start...32位系统,它值为2147483647;64位系统,它值为9223372036854775807。这个值可以用来进行数据类型转换、判断数据是否越界等操作。

8710

长度最小数组

找出该数组满足其和 ≥ target 长度最小 连续数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件数组,返回 0 。...二、示例 2.1> 示例 1: 【输入】target = 7, nums = [2,3,1,2,4,3] 【输出】2 【解释】数组 [4,3] 是该条件下长度最小数组。...target长度最小连续数组。...而题目中另一个关键点——连续数组其和需要大于等于target,那么就可以理解为变化窗口大小依据了,具体规则如下所示: 图片 【规则1】如果连续数组其和 大于等于 target,则扩大窗口右侧部分...; 【规则2】如果连续数组其和 小于 target,则缩小窗口左侧部分; 随着遍历结束,我们返回满足上述条件中最小长度即可;解题过程,我们可以采用双指针方式来模拟滑动窗口。

21910

长度最小数组

长度最小数组 题目描述 给定一个含有 n 个正整数数组和一个正整数 target 。...找出该数组满足其和 ≥ target 长度最小 连续数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件数组,返回 0 。...示例 1: 输入:target = 7, nums = [2,3,1,2,4,3] 输出:2 解释:数组 [4,3] 是该条件下长度最小数组。...初始化子数组最小长度为无穷大,枚举数组 nums nums 每个下标作为数组开始下标,对于每个开始下标 i,需要找到大于或等于 i 最小下标 j,使得从nums[i] 到 nums[j]...元素和大于或等于 s,并更新数组最小长度(此时数组长度是j−i+1)。

22210

LeetCode刷题DAY 33:长度最小数组

难度:中等 关键词:前缀和+二分查找、双指针 ⭐️⭐️⭐️⭐️⭐️ 1 题目描述 给定一个含有 n 个正整数数组和一个正整数 s ,找出该数组满足其和 ≥ s 长度最小连续数组,并返回其长度...如果不存在符合条件连续数组,返回 0。 ?...2 题解 思路一:前缀和+二分查找 sums[i]表示数组前i个值和,对于每个i,我们要找到最大下标tmp使得sums[i]-sums[tmp]>=s。...因为是正整数数组,所以前缀和sums为单调增,可以使用二分查找找到合适tmp,并且因为sums[i]-s>=sums[tmp],所以问题等价于找到sums[i]-ssums最大位置。...相当于一个变动窗口,根据不同规则变化窗口两端,两个指针均最多移动n次(n为nums长度),且不需要额外数组存储空间。

47610

所有奇数长度数组

题目描述 解题思路 代码 复杂度分析 题目描述 题目链接 给你一个正整数数组 arr ,请你计算所有可能奇数长度数组和。 数组 定义为原数组一个连续序列。...请你返回 arr  所有奇数长度数组和 。...示例 1: 输入:arr = [1,4,2,5,3] 输出:58 解释:所有奇数长度数组和它们和为: [1] = 1 [4] = 4 [2] = 2 [5] = 5 [3] = 3 [1,4,2]...1,4,2,5,3] = 15 我们将所有值求和得到 1 + 4 + 2 + 5 + 3 + 7 + 11 + 10 + 15 = 58 示例 2: 输入:arr = [1,2] 输出:3 解释:总共只有 2 个长度为奇数数组...计算完 sum 数组转换,只需要以每个数组位置做起点,分别找奇数长度 sum 元素,计算一下加起来即可。

44730

怎样JavaScript创建和填充任意长度数组

没有空洞数组往往表现得更好 大多数编程语言中,数组是连续值序列。 JavaScript ,Array 是一个将索引映射到元素字典。...密集数组往往表现更好,因为它们可以连续存储(内部)。一旦出现了空洞,内部表示就必须改变。我们有两种选择: 字典。查找时会消耗更多时间,而且存储开销更大。 连续数据结构,对空洞进行标记。...某些引擎,例如V8,如果切换到性能较低数据结构,这种改变将会是永久性。即使所有空洞都被填补,它们也不会再切换回来了。...关于 V8 是如何表示数组,请参阅Mathias Bynens文章“V8元素类型”【https://v8.dev/blog/elements-kinds】。...创建数组 `Array` 构造函数 如果要创建具有给定长度 Array,常用方法是使用 Array 构造函数 : 1const LEN = 3; 2const arr = new Array(LEN

3.2K30
领券