【水hash】#22 A. Second Order Statistics

本文探讨了如何在一组整数中找到第二阶统计值,即排序后位于第二位的元素,提供了有效的解决方法。

A. Second Order Statistics
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

Once Bob needed to find the second order statistics of a sequence of integer numbers. Lets choose each number from the sequence exactly once and sort them. The value on the second position is the second order statistics of the given sequence. In other words it is the smallest element strictly greater than the minimum. Help Bob solve this problem.

Input

The first input line contains integer n (1 ≤ n ≤ 100) — amount of numbers in the sequence. The second line contains nspace-separated integer numbers — elements of the sequence. These numbers don't exceed 100 in absolute value.

Output

If the given sequence has the second order statistics, output this order statistics, otherwise output NO.

Sample test(s)
input
4
1 2 2 -4
output
1
input
5
1 2 3 1 1
output
2


5min内秒掉的题呢^_^~~~

感觉良好~但是学不到东西……

用pair似乎比较省内存,但是才100,我就直接上hash表了

#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

int mark[201]; 

int main()
{
	int n=0;
	scanf("%d",&n);
	memset(mark,0,sizeof(mark));
	for(int i=1;i<=n;i++)
	{
		int now=0;
		scanf("%d",&now);
		mark[now+100]=1;
	}
	int flag=0;
	for(int j=0;j<=200;j++)
	{
		if(flag==1&&mark[j]==1)
		{
			printf("%d",j-100); 
			return 0;
		}
		if(flag==0&&mark[j]==1) flag=1;
	}
	printf("NO");
	return 0;
}




###分析 错误信息 `TypeError: crypto.hash is not a function` 通常出现在使用 Vite 创建项目或启动开发服务器时,主要与 Node.js 的内置模块 `crypto` 有关。Node.js 在某些版本中对 `crypto` 模块进行了更新和调整,导致部分函数在旧版本中不可用。 根据已知信息,`crypto.hash` 是在 Node.js **v20.12.0** 和 **v21.7.0** 之后才被引入的特性[^1]。如果当前使用的 Node.js 版本低于这些版本,调用该函数时就会报错。 ### 解决方案 #### 1. 升级 Node.js 版本 确保使用的 Node.js 版本支持 `crypto.hash` 函数。推荐使用 **Node.js v20.12.0 或更高版本**,或者 **v21.7.0 或更高版本**。可以通过以下命令检查当前 Node.js 版本: ```bash node -v ``` 如果版本不满足要求,可以使用 **nvm**(Node Version Manager)来切换 Node.js 版本: ```bash nvm install 20.12.0 nvm use 20.12.0 ``` #### 2. 确保依赖版本兼容 如果无法升级 Node.js,可以尝试调整项目依赖版本,以避免使用 `crypto.hash`。检查项目中是否使用了依赖项(如 Vite 或其他工具)直接调用了 `crypto.hash`,并尝试将相关依赖降级到兼容旧版 Node.js 的版本。 例如,Vite 在某些版本中对 Node.js 的依赖特性进行了调整。可以尝试将 Vite 版本降级到与当前 Node.js 兼容的版本,如 **Vite 5.4.11**[^3]。 #### 3. 检查项目配置 在某些情况下,项目构建工具(如 Rollup 或 Webpack)可能会对 `crypto` 模块进行打包处理,导致某些函数在运行时不可用。检查构建工具的配置,确保没有对 `crypto` 模块进行不正确的替换或处理。 #### 4. 使用 Polyfill 如果上述方法均不可行,可以考虑使用 Polyfill 替代 `crypto.hash` 功能。例如,使用 `crypto-js` 库实现类似功能: ```bash npm install crypto-js ``` 然后在代码中使用 `CryptoJS` 替代 `crypto.hash`: ```javascript const CryptoJS = require(&#39;crypto-js&#39;); const hash = CryptoJS.SHA256(&#39;your-data&#39;).toString(); console.log(hash); ``` 需要注意的是,`crypto-js` 在某些 Node.js 版本中也可能会出现问,如 `getRandomValues` 不可用的情况[^2],因此建议优先升级 Node.js 版本。 ### 总结 `TypeError: crypto.hash is not a function` 主要由 Node.js 版本过低引起。解决方法包括升级 Node.js 到支持 `crypto.hash` 的版本、调整依赖版本、检查构建工具配置,或使用 Polyfill 替代实现。优先推荐升级 Node.js 至 **v20.12.0 或更高版本**。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

糖果天王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值