• 给定一个 n × n 的矩阵，求它顺时针旋转 90 度的结果，且必须在原矩阵上修改（in-place）。...vector> using namespace std; class Matrix { public:Matrix(); ~Matrix(); void rotate(vector<vecto
记录直接声明并定义二维数组vector：
 vector<vector<string>> tickets = { {"MUC""LHR"}, { "JFK" "MUC" }, { "SFO" "SJC" }, { "LHR" "SFO" } };

给定一个 n × n 的矩阵，求它顺时针旋转 90 度的结果，且必须在原矩阵上修改（in-place）。
怎样能够尽量不创建额外储存空间呢？
#pragma once
#ifndef MATRIX_H_INCLUDE
#define MATRIX_H_INCLUDE
#include <vector>
using namespace std;

class Matrix
{
public:Matrix();
~Matrix();
void rotate(vector<vector<int> >& vec);
private:

};

#endif // !MAXT

注释掉的初始化和利用迭代器输出vector二维数组都是可运行的
void main()
{
int n = 3;
int temp;
vector<vector<int> > vec(n);
Matrix matrix;

//初始化vector
//for (int i = 0; i < n; i++)
//{
//	vec[i].resize(n);
//}

//输入
printf("INPUT：[\n");
for (int i = 0; i < n; i++)
{
printf("[");
for (int j = 0; j < n; j++)
{
cin >> temp;
vec[i].push_back(temp);

}
printf("] ");
}
printf("]");
cout << endl;
//cout << vec[2].back();
//矩阵旋转90
matrix.rotate(vec);

//使用迭代器
/*vector<int>::iterator it;	//it 是一个地址
vector<vector<int>>::iterator iter;
vector<int> vec_tmp;

cout << "OUTPUT : " << endl;
for (iter = vec.begin(); iter != vec.end(); iter++)
{
vec_tmp = *iter;
for (it = vec_tmp.begin(); it != vec_tmp.end(); it++)
cout << *it << " ";
cout << endl;
}*/

//输出
printf("OUTPUT：[\n");
for (int i = 0; i < n; i++)
{
printf("[");
for (int j = 0; j < n; j++)
{
cout<< vec[i][j]<<" ";

}
printf("],\n");
}
printf("]");
}



展开全文
• 其实那个dp二维数组，没有必要 class Solution { public: int maxProduct(vector<int>& nums) { int n=nums.size(); int m=nums[0]; int big=m; int small=m; for(int i=1;i;i++) { int tmpbig=big; ...
Given an integer array nums, find the contiguous subarray within an array (containing at least one number) which has the largest product.

Example 1:

Input: [2,3,-2,4]
Output: 6
Explanation: [2,3] has the largest product 6.

Example 2:

Input: [-2,0,-1]
Output: 0
Explanation: The result cannot be 2, because [-2,-1] is not a subarray.

题目链接：https://leetcode.com/problems/maximum-product-subarray/

class Solution {
public:
int maxProduct(vector<int>& nums) {
int n=nums.size();
int m=nums[0];
vector<vector<int>> dp(n,vector<int>(2,0));
dp[0][0]=m;
dp[0][1]=m;//dp[i][0]最大值，dp[i][0]最小值

for(int i=1;i<n;i++)
{
dp[i][0]=max(nums[i],max(nums[i]*dp[i-1][0],nums[i]*dp[i-1][1]));
dp[i][1]=min(nums[i],min(nums[i]*dp[i-1][0],nums[i]*dp[i-1][1]));
if(dp[i][0]>m)
m=dp[i][0];
}
return m;
}
};

其实那个dp二维数组，没有必要

class Solution {
public:
int maxProduct(vector<int>& nums) {
int n=nums.size();
int m=nums[0];
int big=m;
int small=m;
for(int i=1;i<n;i++)
{
int tmpbig=big;
big=max(nums[i],max(nums[i]*big,nums[i]*small));
small=min(nums[i],min(nums[i]*tmpbig,nums[i]*small));//一定是上一次的big，也就是tmpbig
if(big>m)
m=big;
}
return m;
}
};


展开全文
• 原文：... 在LeetCode刷算法的时候发现，使用vector<vector<int>> 时如果声明时不初始化，会报空指针引用错误：reference binding to null pointer of type 'value_type'。 根据《...
原文：https://blog.csdn.net/weixin_37832275/article/details/84573267

在LeetCode刷算法的时候发现，使用vector<vector<int>> 时如果声明时不初始化，会报空指针引用错误：reference binding to null pointer of type 'value_type'。

根据《C++ primer第五版》P40：
默认初始化：

如果是内置类型的变量未被显示初始化，它的值由定义的位置决定。定义于任何函数体之外的变量被初始化为0。一种例外情况是，定义在函数体内部的内置类型变量将不被初始化。一个未被初始化的内置类型变量的值是未定义的，如果试图拷贝或者其他形式访问此类型将引发错误。

初始化方法：
int numRows=10,zone=5;//层数，每层需要的空间
vector<vector<int>> vec(numRows, vector<int>());//初始层数，赋值
for (int i = 0; i < numRows; i++) {
vec[i].resize(zone);
}


展开全文
• int main() { vector<vector<int> >num = { {1,1,1,0,1,1},{1,0,1,1,1,1},{1,1,1,0,0,1},{1,0,1,0,0,1},{1,1,1,1,1,1} }; ...


int main() {
vector<vector<int> >num =
{ {1,1,1,0,1,1},{1,0,1,1,1,1},{1,1,1,0,0,1},{1,0,1,0,0,1},{1,1,1,1,1,1} };

//二维数组初始化
//vector<vector<int>> vec(10, vector<int>(10));
vector<vector<int> >right(num.size(), vector<int>(num[0].size()));
vector<vector<int> >down(num.size(), vector<int>(num[0].size()));
construct(num, right, down);
cout << calculate(num, right, down) << endl;
return 0;
}

初始化了一个 6*5的二维矩阵矩阵，初始值为0.


展开全文
• 1. vector二维数组初始化方法: 2.示例代码 unsigned int rows = costMatrix.rows(); unsigned int cols = costMatrix.cols(); vector< vector<double> > costFunc(rows,vector<double>...
• 之前我一直以为vector不能用vec = {1,2,3}这种方式直接定义，直到我看到下面的代码 vector<vector<int> >num = { { 1, 1, 1, 0, 1, 1 }, { 1, 0, 1, 1, 1, 1 }, { 1, 1, 1, 0, 0, 1 }, { 1, 0, 1, 0,...
• ## C++ vector 实现二维数组，赋值

万次阅读 多人点赞 2019-05-11 15:19:30
vector二维数组赋值 vector<vector<float> >bk; vector<float> MM; MM.push_back(1); MM.push_back(22); MM.push_back(3); MM.push_back(6); bk.push_back(MM); 原文链接 （1...
• 很多时候，我们要使用动态数组来存储一开始未知...如果我们知道行数，那么初始化可以如此写：vector>Name(row,vector(0))。这样的含义是：行数为row，列数为0。那如何对这个数组赋值呢？例如简单做一个已知3行，但是
• 历届试题 大臣的旅费： 1遇到的问题 大家都能想到的是用： 枚举+dfs。就能很轻松的解决，这样可以直接拿到75%分！！ 但是时间复杂度会超过。...开始想用 容器定义一个二维数组vector < vector > mapp;
• 类结构中容器一维二维数组初始赋值初始长度设置的一种方法 class sample //定义sample类 { public: vector<double> a; //一维容器 vector<vector<double>>...
• 出现java.lang.NullPointerException异常 总结 数组是对象类型数据，声明数组时注意new的使用 二维数组就是数组数组，里面的数组大小不要求一样 不管是一维数组还是二维数组，在使用前（赋值，访问）必须初始化，...
• vector二维数组注意使用前要分配空间，不然就会出现以下错误： error: reference binding to null pointer of type 'value_type' 错误不唯一 所以最好在vector二维数组定义时就分配好空间 vector<vector<int&...
• 《C++笔记》 Part7 一维数组二维数组初始化问题（vector）转载自： C++——二维vector初始化大小方法 C++ vector多维数组初始化及清零一. 一维数组初始化问题数组元素初始化时，若没有显式提供幸元素的值，则...
• ## vector二维数组

千次阅读 2020-10-20 21:56:22
//p=new int(8)表示分配一个int空间并初始化为8； for (int i = 0; i < m; ++i) { p[i] = new int[5]; } 利用Vector的push_back函数 vector<vector<int>> vec; //外层 vector<int> a; ...
• 使用vector初始化二维数组，并且获得二维索引的方法：
• new方法创建动态二维数组vector创建动态二维数组 #include<iostream> #include<vector> using namespace std; void main() { int n ; int m ; printf("input:\n"); scanf_s("%d,%d", &n,&...
• vector<vector<int>> generate(int numRows) { vector< vector<int> > result;/*定义一个名为result的数组,中间要有空格，否则可能报错*/ for (int i = 0; i < numRows; i++) {/*...
• vector的初始化有很多方式，在N维初始化时还会一些容易出现错误的地方。下面进行总结 以下的总结均以int作为模板参数 1.一维vector的初始化 vector的构造函数通常来说有五种，如下： vector():创建一个空vector ...
• vector就是动态数组二维也相当于特殊的一维，只是每一个元素都是一个数组二维vector 定义 //=================== 头文件 ======================= #include <vector> //=====...
• 1 vector二维数组的创建和初始化 vector vec(10,90); //将10个一维动态数组初始为90 vector<vector > vec(row,vector(col,0)); //初始化row * col二维动态数组初始化值为0 2 获取一维数组的长度 int size = ...
• 图像处理中，有的算法需要获取图像的尺寸，并创建一个二维数组...使用vector创建动态二维数组的方法如下： int main() { Mat Image, grayImage; Image = imread("a.png"); //namedWindow("原图...
• 1 vector二维数组的创建和初始化 std::vector <int> vec(10,90); //将10个一维动态数组初始为90std::vector<std::vector<int> > vec(row,vector<int>(col,0)); //初始化row * col二维动态...

...