20200723广联达笔试(hashmap的错误引址,vector大小一定要设置!调试)

1.平行四边形构造
我认为就是计算矩形的大小 然后在数组中取最大的两个个数超过2 的数

#include<iostream>
#include<vector>
#include<algorithm>
#include<map>
using namespace std;

int main() {
	cout << "hello, jianwen" << endl;
	int n;
	cin >> n;
	vector<int>data(n);
	vector<int>hash(1000);
	int temp;
	for (int i = 0;i < n;i++) {
		cin >> data[i];
		hash[data[i]]++;
	}
	sort(data.begin(), data.end());
	vector<int>res;
	int better = data[n - 1];
	while (better > 0) {
		if (hash[better] >= 2) {
			res.push_back(better);
		}
		better--;
		if (res.size() == 2) { break; }
	}
	int ress = res[0] * res[1];
	cout << ress << endl;

	return 0;
}

调试程序如上

(1)输入的时候data数组只需要N个数 如果你不想设大小 那只能用push_back
否则直接引址会导致错误 你不初始化的时候它是一个空数组vector


vector<int>data;
for(int i=0;i<n;i++){
int temp;
cin>>temp;
data.push_back(temp);
}

如果想直接cin的话就必须对数组大小进行规定(你要么规定一个大数 要么就n )(但是你定一个大数你就要注意之后要不要进行排序等操作 排序的话你大数组就会导致前面是超多的0)

vector<int>data(n);
for(int i=0;i<n;i++){
	cin>>data[i];
}

所以不提倡直接定义一个大数组
哈希表不需要排序所以可以定义一个大的 毕竟你也不知道他有多少个数 最大是多少

(2) 后面的排序就是因为刚开始定义了1000个数所以很多0

2.设了大小n必须用下标 没设大小必须用push_back

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值