- 嵌入式学习-Day6
不想学习\??!
学习
c语言day6模拟获取co2,pm2.5的数值,并对co2的浓度,pm2.5的浓度做出划分,详情划分在代码注释首先写写出模拟获取数值的函数,但是由于要对浓度划分,所以先枚举出来等级划分typedefenum{Excellent,//默认0往下递增Good,Average,Poor}QualityLevel;接着写出模拟获取co2函数(在这里用到了static关键字,静态函数能够确保只在co2的c文
- Three.js(three入门)
theme:condensed-night-purpleThree.js学习指南:在响应式世界里玩转三维魔法第一章:Three.js突破次元壁指南Three.js简介three.js官网:https://threejs.org/three.js中文官网https://threejs.org/docs/index.html#manual/zh/1.什么是Three.js?Three.js是用Java
- c++中介者模式mediator
源代码大师
C和C++完整教程
中介者模式mediatorr概念角色和职责模式优点案例概念Mediator模式也叫中介者模式,是由GoF提出的23种软件设计模式的一种。Mediator模式是行为模式之一,在Mediator模式中,类之间的交互行为被统一放在Mediator的对象中,对象通过Mediator对象同其他对象交互,Mediator对象起着控制器的作用。角色和职责GOOD:用一个中介对象来封装一系列的对象交互,中介者使各
- @Param(Constants.WRAPPER)是什么
ruan114514
javaspringbootmybatismybatis-plus
用下面一段代码解释@Select("SELECTg.*,d.detail"+ "FROMwms_goodg"+ "LEFTJOINwms_goods_detaildONg.goods_id=d.good_id"+ "${ew.customSqlSegment}")PageselectGoodsWithDetail(Pagepage,@Param(Constants.WRAPPER
- 【LLM安全】A Survey on Large Language Model (LLM) Security and Privacy- The Good, the Bad, and the Ugly
1.IntroductionTheGood:LLMs在代码安全和数据安全与隐私方面都做出了贡献。在代码安全的背景下,LLMs已经被用于代码(例如,安全编码、测试用例生成、脆弱代码检测、恶意代码检测、代码修复等)的整个生命周期。在数据安全和隐私方面,LLMs已被应用于确保数据完整性、数据机密性、数据可靠性和数据可追溯性。大多数研究人员发现基于LLM的方法优于传统最先进的方法。TheBad:我们将攻击
- Hexo-theme-NexT主题语法高亮
vhgcc
hexonext
目前NexT主题最新版本中已经集成了tomorrow-theme语法高亮模块儿,并且内置五种风格,下面是主题配置文件相关部分:#CodeHighlighttheme#Availablevalues:normal|night|nighteighties|nightblue|nightbright#https://github.com/chriskempson/tomorrow-themehighli
- Ansible 变量
TriAngel灬
自动化运维linux云计算运维
Ansible-变量一、Ansible变量介绍我们在PlayBook一节中,将PlayBook类比成了Linux中的shell。那么它作为一门Ansible特殊的语言,肯定要涉及到变量定义、控制结构的使用等特性。在这一节中主要讨论变量的定义和使用二、变量命名规则变量的名字由字母、下划线和数字组成,必须以字母开头#如下变量命名为正确good_aok_b#如下变量命名为错误:_aaa2_bb保留关键字
- 一站式讲解本地缓存Caffeine
想用offer打牌
后台缓存缓存
文章目录theme:condensed-night-purple引言本地缓存的必要性多级缓存访问流程使用Caffeine作为本地缓存️添加**SpringCache和Guava依赖**配置Caffeine缓存启用缓存使用缓存注解总结❤️theme:condensed-night-purple引言上次我们讲了本地缓存guava,那么有没有比它更加优秀的本地缓存呢?有的,兄弟,有的。这次我们来讲本地
- android skin 的参数选择,Android-skin-support框架使用的一些些坑
Justmeet
androidskin的参数选择
坑一:自己创建新的demo项目,测试基础控件换肤功能,发现无论如何都换肤不成功,皮肤使用下载的night.skin按照githut上面的步骤执行添加之后你会发现,仍然无法实现换肤,在监听里面一直提示资源获取失败。先说说github上面的步骤(实现最简单的换肤功能)1:导入依赖:compile'skin.support:skin-support:2.2.3',这是导入基础控件的换肤2:导入皮肤包,我
- android9 android10 修改深色模式(Dark theme) 默认值
android 系统开发
android系统开发android
方法1frameworks/base/core/res/res/values/config.xml1方法2UiModeManagermUiModeManager=(UiModeManager)mContext.getSystemService(Context.UI_MODE_SERVICE);mUiModeManager.setNightMode(UiModeManager.MODE_NIGHT_
- 大数据-linux环境搭建
zcg_good
大数据
一、虚拟机安装VMware虚拟机下载地址:https://pan.baidu.com/s/1gXspKov4RC_kHnhdYqcZlQ提取码:8nqy二、Linux操作系统安装CentOS7系统下载地址:https://pan.baidu.com/s/1az4V7fWMxFa1cPNMjHBonw提取码:afob安装过程详见:https://blog.csdn.net/zcg_good/arti
- Git clone时出现SSL certificate problem unable to get local issuer certificate
m0_73691422
gitssl网络协议
正确解决方法gitconfig--globalhttp.sslVerifyfalse错误解决方法:(主要是看错了嘿嘿,但是如果是OpenSSLSSL_read:Connectionwasreset,errno10054Failedtoconnecttogithub.comport443:Timedout原文链接:https://blog.csdn.net/good_good_xiu/article
- 小刚说C语言刷题——1035 判断成绩等级
xueyinan
c语言
1.题目描述输入某学生成绩,如果86分以上(包括86分)则输出VERYGOOD,如果在60到85之间的则输出GOOD(包括60和85),小于60的则输出BAD。输入输入只有一行,包括1个整数。输出输出只有一行(这意味着末尾有一个回车符号)。样例输入80输出GOOD2.参考代码(C语言版)#includeintmain(void){intnum;scanf("%d",&num);if(num>=86
- ES6中,箭头函数与常规函数
不能停下学习的脚步
es6前端ecmascript
###就不发表个人获奖感言了,直接开始吧,真的被自己菜到了,虽然我以前也不记记不住这玩意~正文开始——常规函数:使用function关键字定义,可声明为函数声明和函数表达式函数声明good("彩虹海")//你可以在它声明之前调用,函数声明可以提升functiongood(name){return"Hello,"+name}函数表达式hello("彩虹海")/*错误示范**///这里是无法调用的,会
- vue中 vue.config.js反向代理
m0_62782752
前端
新建一个node服务1npminit-y//创建一个package.json2.npmiexpress3.新建一个app.js4.键入代码constexpress=require("express")constapp=express()app.get("/user",(req,res)=>{res.send({"name":"good"})})app.listen(3200)5.启动node--n
- Android混合开发:统一View与Compose组件样式的终极指南
奋斗理想
Composeandroidandroid
要实现背景、弹框、按钮、Switch和Checkbox等组件在View和Compose中的完全一致,需要系统性的主题配置。以下是完整解决方案:1.统一主题基础配置在res/values/themes.xml和res/values-night/themes.xml中:@color/background@color/surface@style/Widget.MyApp.Button@style/Wid
- 【BZOJ】1419 Red is good
weixin_34129696
【算法】期望DP【题解】其实把状态表示出来就是很简单的期望DP。f[i][j]表示i张红牌,j张黑牌的期望。i=0时,f[0][j]=0。j=0时,f[i][0]=i。f[i][j]=max(0,i/(i+j)*(f[i-1][j]+1)+j/(i+j)*(f[i][j-1]-1))。直接使用期望定义式E(X)=Σpi*xi不四舍五入就是在后一位-5。空间限制必须用递推+滚动数组。#include
- 【BZOJ】1419 Red is Good
Pure_W
BZOJ
大意:桌面上有R张红牌和B张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付出1美元。可以随时停止翻牌,在最优策略下平均能得到多少钱直接期望DPf[i][j]表示开一局i红j黑的游戏的期望收益,然后f[i][j]可以由f[i-1][j]和f[i][j-1]转移要滚动#include#include#definecintconstint&usingnamespaces
- BZOJ 1419: Red is good(期望DP)
AbEver
BZOJ期望&概率DP&记忆化搜索
题目描述权限传送门题解比较水的期望DP,但也让我悟到了一点关于期望的东西。题目描述得不可描述,看起来逼格很高。但平均就是期望,关键是最优策略这点。根据我幼稚的理解,期望是均值没错,但期望之所以叫期望是因为它在预知未来,当前这个状态期望的得分就是作出决策后未来能得到分数的均值。所以或许这就是期望DP的状态要倒过来推的原因吧。考虑f[i][j]为剩下i张红牌j张黑牌的在最优策略下的期望。根据我脚推的式
- 推荐文章:探索灵活高效的存储解决方案 - Good-Storage
温艾琴Wonderful
推荐文章:探索灵活高效的存储解决方案-Good-StoragestorageastoragelibwhichsupportsessionStorageandlocalStoragewiththesameapi项目地址:https://gitcode.com/gh_mirrors/stora/storage在前端开发的日常工作中,浏览器存储是不可或缺的一部分。无论是实现持久化数据保存,还是处理页面级
- OpenHarmony AVPlayer扩展支持rtsp协议:编译gstreamer插件库(二)
少年的云河月
网络协议harmonyos
上篇传送门:OpenHarmonyAVPlayer扩展支持rtsp协议:编译gstreamer插件库(一)五、插件库1、gstrtsprtsp插件库,库名必须为libgstrtsp.z.so,不可修改third_party/gstreamer/gstplugins_good/BUILD.gn增加ohos_source_set("gstrtsp_source"){sources=["gst/rtsp
- 【GPT入门】第33 课 一文吃透 LangChain:chain 结合 with_fallbacks ([]) 的实战指南
*星星之火*
大模型gptlangchain
@[TOC](【GPT入门】第33课一文吃透LangChain:chain结合with_fallbacks([])的实战指南)1.fallback概述模型回退,可以设置在llm上,也可以设置在chain上,都带有with_fallbacks([])函数2.llm的回退2.1代码核心代码:bad_llm.with_fallbacks([good_llm])打开debug,观察执行情况fromlang
- C语言——字符串指针-strcpy
_Black_Sky
c语言strcpy指针函数
#include#includeintmain(){charstr1[]="Good";//初始化字符数组charstr2[20]="Job";//初始化字符数组,分配空间,待str1复制char*p1=str1;//初始化字符串指针,使其指向str1首部char*p2=str2;while(*p1!='\0')//判断复制str1结束{*p2=*p1;//将str1中的字符逐个复制到str2
- python 中的占位符 %f %s %d用法
买定离手m
笔记
python中的占位符%f%s%d1.%s,表示格式化一个对象为字符string="good"#类型为字符串print("string=%s"%string)#输出的打印结果为string=goodprint("string=%3s"%string)#输出的打印结果为string=good(数字3的意思是:字符串的长度为3。当字符串的长度大于3时,按照字符串的长度打印出结果)print("stri
- 使用pycharm生成csv用例,并引用用例内容。
青萍之末惹风起
python
下面是一个论坛社区的单接口测试,CNode:Node.js专业中文社区#调用csvimportcsv#tab是主题分类tab_v=['ask','share','job','good']#limit是每一页发帖总条数最大为50条limit_v=[1,50,51]#定义空列表,写入循环内容test_tab_limit_data=[]fortabintab_v:forlimitinlimit_v:""
- Lua学习二
Gerigory
Lua学习lua
1.对于Lua而言,函数其实也是一种变量,故而系统的函数名实际上也是一种变量名:a={p=print}a.p("good")输出good2.函数定义,实际上是将一个类型为function的变量(整个函数chunk)赋值给一个自定义变量3.Lua的表构造提供了一个排序函数,可以对一个表进行排序,table.sort(t,function(a,b)),此函数接受两个参数,第一个是待排序的表,而第二个则
- python的config模块的使用
Mo-莫林
pythonwindowslinux
config.py#参数options={"port":8080,"list":["good","nice","handsome"]}#配置importconfigif__name__=="__main__":print(config)print(type(config.options))print(config.options)print("list=",config.options.keys(
- 开启apache重写模块
TerryWater
apache.htaccess服务器url
1.开启rewrite模块的调用Apache2.x中URL重写,是通过mod_rewrite.so来实现的,在httpd.conf中,我们会发现类似如下的一行,是有关rewrite模块的,模块名是mod_rewrite.so。开启它。2.设置AllowOverride在httpd.conf中将AllowOverrideNone改为AllowOverrideALL3good!改好了,然后再将服务器里
- Linux下Qt窗口半透明,Qt实现嵌入桌面的半透明窗口 good
weixin_42501463
Linux下Qt窗口半透明
一、将Qt窗口嵌入到桌面中。声明一个最简单的类:classDialog:publicQDialog{Q_OBJECTpublic:Dialog(QWidget*parent=0);~Dialog();}函数实现:Dialog::Dialog(QWidget*parent):QDialog(parent){//创建个LineEdit用来测试焦点QLineEdit*le=newQLineEdit(th
- 为AI聊天工具添加一个知识系统 之75 详细设计之16 正则表达式 之3 正则表达式模板
一水鉴天
人工智能正则表达式
本文要点概念图式schema:。处理“我”立“每一个新提概念的提出都首先是语言的-含糊概念Notion{Yes,Unkown,No},然后才是程序的-模糊符号Notation{True,False},最后会是数据的-近似值Approximation{Good,Fair,Poor}。”。每一次旧概念的废除(破)则正好相反。一个概念的每一个区域的形成都需要三化方的通力合作。1启动破、立过程互翻;2集成
- C/C++Win32编程基础详解视频下载
择善Zach
编程C++Win32
课题视频:C/C++Win32编程基础详解
视频知识:win32窗口的创建
windows事件机制
主讲:择善Uncle老师
学习交流群:386620625
验证码:625
--
- Guava Cache使用笔记
bylijinnan
javaguavacache
1.Guava Cache的get/getIfPresent方法当参数为null时会抛空指针异常
我刚开始使用时还以为Guava Cache跟HashMap一样,get(null)返回null。
实际上Guava整体设计思想就是拒绝null的,很多地方都会执行com.google.common.base.Preconditions.checkNotNull的检查。
2.Guava
- 解决ora-01652无法通过128(在temp表空间中)
0624chenhong
oracle
解决ora-01652无法通过128(在temp表空间中)扩展temp段的过程
一个sql语句后,大约花了10分钟,好不容易有一个结果,但是报了一个ora-01652错误,查阅了oracle的错误代码说明:意思是指temp表空间无法自动扩展temp段。这种问题一般有两种原因:一是临时表空间空间太小,二是不能自动扩展。
分析过程:
既然是temp表空间有问题,那当
- Struct在jsp标签
不懂事的小屁孩
struct
非UI标签介绍:
控制类标签:
1:程序流程控制标签 if elseif else
<s:if test="isUsed">
<span class="label label-success">True</span>
</
- 按对象属性排序
换个号韩国红果果
JavaScript对象排序
利用JavaScript进行对象排序,根据用户的年龄排序展示
<script>
var bob={
name;bob,
age:30
}
var peter={
name;peter,
age:30
}
var amy={
name;amy,
age:24
}
var mike={
name;mike,
age:29
}
var john={
- 大数据分析让个性化的客户体验不再遥远
蓝儿唯美
数据分析
顾客通过多种渠道制造大量数据,企业则热衷于利用这些信息来实现更为个性化的体验。
分析公司Gartner表示,高级分析会成为客户服务的关键,但是大数据分析的采用目前仅局限于不到一成的企业。 挑战在于企业还在努力适应结构化数据,疲于根据自身的客户关系管理(CRM)系统部署有效的分析框架,以及集成不同的内外部信息源。
然而,面对顾客通过数字技术参与而产生的快速变化的信息,企业需要及时作出反应。要想实
- java笔记4
a-john
java
操作符
1,使用java操作符
操作符接受一个或多个参数,并生成一个新值。参数的形式与普通的方法调用不用,但是效果是相同的。加号和一元的正号(+)、减号和一元的负号(-)、乘号(*)、除号(/)以及赋值号(=)的用法与其他编程语言类似。
操作符作用于操作数,生成一个新值。另外,有些操作符可能会改变操作数自身的
- 从裸机编程到嵌入式Linux编程思想的转变------分而治之:驱动和应用程序
aijuans
嵌入式学习
笔者学习嵌入式Linux也有一段时间了,很奇怪的是很多书讲驱动编程方面的知识,也有很多书将ARM9方面的知识,但是从以前51形式的(对寄存器直接操作,初始化芯片的功能模块)编程方法,和思维模式,变换为基于Linux操作系统编程,讲这个思想转变的书几乎没有,让初学者走了很多弯路,撞了很多难墙。
笔者因此写上自己的学习心得,希望能给和我一样转变
- 在springmvc中解决FastJson循环引用的问题
asialee
循环引用fastjson
我们先来看一个例子:
package com.elong.bms;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import co
- ArrayAdapter和SimpleAdapter技术总结
百合不是茶
androidSimpleAdapterArrayAdapter高级组件基础
ArrayAdapter比较简单,但它只能用于显示文字。而SimpleAdapter则有很强的扩展性,可以自定义出各种效果
ArrayAdapter;的数据可以是数组或者是队列
// 获得下拉框对象
AutoCompleteTextView textview = (AutoCompleteTextView) this
- 九封信
bijian1013
人生励志
有时候,莫名的心情不好,不想和任何人说话,只想一个人静静的发呆。有时候,想一个人躲起来脆弱,不愿别人看到自己的伤口。有时候,走过熟悉的街角,看到熟悉的背影,突然想起一个人的脸。有时候,发现自己一夜之间就长大了。 2014,写给人
- Linux下安装MySQL Web 管理工具phpMyAdmin
sunjing
PHPInstallphpMyAdmin
PHP http://php.net/
phpMyAdmin http://www.phpmyadmin.net
Error compiling PHP on CentOS x64
一、安装Apache
请参阅http://billben.iteye.com/admin/blogs/1985244
二、安装依赖包
sudo yum install gd
- 分布式系统理论
bit1129
分布式
FLP
One famous theory in distributed computing, known as FLP after the authors Fischer, Lynch, and Patterson, proved that in a distributed system with asynchronous communication and process crashes,
- ssh2整合(spring+struts2+hibernate)-附源码
白糖_
eclipsespringHibernatemysql项目管理
最近抽空又整理了一套ssh2框架,主要使用的技术如下:
spring做容器,管理了三层(dao,service,actioin)的对象
struts2实现与页面交互(MVC),自己做了一个异常拦截器,能拦截Action层抛出的异常
hibernate与数据库交互
BoneCp数据库连接池,据说比其它数据库连接池快20倍,仅仅是据说
MySql数据库
项目用eclipse
- treetable bug记录
braveCS
table
// 插入子节点删除再插入时不能正常显示。修改:
//不知改后有没有错,先做个备忘
Tree.prototype.removeNode = function(node) {
// Recursively remove all descendants of +node+
this.unloadBranch(node);
// Remove
- 编程之美-电话号码对应英语单词
bylijinnan
java算法编程之美
import java.util.Arrays;
public class NumberToWord {
/**
* 编程之美 电话号码对应英语单词
* 题目:
* 手机上的拨号盘,每个数字都对应一些字母,比如2对应ABC,3对应DEF.........,8对应TUV,9对应WXYZ,
* 要求对一段数字,输出其代表的所有可能的字母组合
- jquery ajax读书笔记
chengxuyuancsdn
jQuery ajax
1、jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()
- JWFD工作流拓扑结构解析伪码描述算法
comsci
数据结构算法工作活动J#
对工作流拓扑结构解析感兴趣的朋友可以下载附件,或者下载JWFD的全部代码进行分析
/* 流程图拓扑结构解析伪码描述算法
public java.util.ArrayList DFS(String graphid, String stepid, int j)
- oracle I/O 从属进程
daizj
oracle
I/O 从属进程
I/O从属进程用于为不支持异步I/O的系统或设备模拟异步I/O.例如,磁带设备(相当慢)就不支持异步I/O.通过使用I/O 从属进程,可以让磁带机模仿通常只为磁盘驱动器提供的功能。就好像支持真正的异步I/O 一样,写设备的进程(调用者)会收集大量数据,并交由写入器写出。数据成功地写出时,写入器(此时写入器是I/O 从属进程,而不是操作系统)会通知原来的调用者,调用者则会
- 高级排序:希尔排序
dieslrae
希尔排序
public void shellSort(int[] array){
int limit = 1;
int temp;
int index;
while(limit <= array.length/3){
limit = limit * 3 + 1;
- 初二下学期难记忆单词
dcj3sjt126com
englishword
kitchen 厨房
cupboard 厨柜
salt 盐
sugar 糖
oil 油
fork 叉;餐叉
spoon 匙;调羹
chopsticks 筷子
cabbage 卷心菜;洋白菜
soup 汤
Italian 意大利的
Indian 印度的
workplace 工作场所
even 甚至;更
Italy 意大利
laugh 笑
m
- Go语言使用MySQL数据库进行增删改查
dcj3sjt126com
mysql
目前Internet上流行的网站构架方式是LAMP,其中的M即MySQL, 作为数据库,MySQL以免费、开源、使用方便为优势成为了很多Web开发的后端数据库存储引擎。MySQL驱动Go中支持MySQL的驱动目前比较多,有如下几种,有些是支持database/sql标准,而有些是采用了自己的实现接口,常用的有如下几种:
http://code.google.c...o-mysql-dri
- git命令
shuizhaosi888
git
---------------设置全局用户名:
git config --global user.name "HanShuliang" //设置用户名
git config --global user.email "
[email protected]" //设置邮箱
---------------查看环境配置
git config --li
- qemu-kvm 网络 nat模式 (四)
haoningabc
kvmqemu
qemu-ifup-NAT
#!/bin/bash
BRIDGE=virbr0
NETWORK=192.168.122.0
GATEWAY=192.168.122.1
NETMASK=255.255.255.0
DHCPRANGE=192.168.122.2,192.168.122.254
TFTPROOT=
BOOTP=
function check_bridge()
- 不要让未来的你,讨厌现在的自己
jingjing0907
生活 奋斗 工作 梦想
故事one
23岁,他大学毕业,放弃了父母安排的稳定工作,独闯京城,在家小公司混个小职位,工作还算顺手,月薪三千,混了混,混走了一年的光阴。 24岁,有了女朋友,从二环12人的集体宿舍搬到香山民居,一间平房,二人世界,爱爱爱。偶然约三朋四友,打扑克搓麻将,日子快乐似神仙; 25岁,出了几次差,调了两次岗,薪水涨了不过百,生猛狂飙的物价让现实血淋淋,无力为心爱银儿购件大牌
- 枚举类型详解
一路欢笑一路走
enum枚举详解enumsetenumMap
枚举类型详解
一.Enum详解
1.1枚举类型的介绍
JDK1.5加入了一个全新的类型的”类”—枚举类型,为此JDK1.5引入了一个新的关键字enum,我们可以这样定义一个枚举类型。
Demo:一个最简单的枚举类
public enum ColorType {
RED
- 第11章 动画效果(上)
onestopweb
动画
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
- Eclipse中jsp、js文件编辑时,卡死现象解决汇总
ljf_home
eclipsejsp卡死js卡死
使用Eclipse编辑jsp、js文件时,经常出现卡死现象,在网上百度了N次,经过N次优化调整后,卡死现象逐步好转,具体那个方法起到作用,不太好讲。将所有用过的方法罗列如下:
1、取消验证
windows–>perferences–>validation
把 除了manual 下面的全部点掉,build下只留 classpath dependency Valida
- MySQL编程中的6个重要的实用技巧
tomcat_oracle
mysql
每一行命令都是用分号(;)作为结束
对于MySQL,第一件你必须牢记的是它的每一行命令都是用分号(;)作为结束的,但当一行MySQL被插入在PHP代码中时,最好把后面的分号省略掉,例如:
mysql_query("INSERT INTO tablename(first_name,last_name)VALUES('$first_name',$last_name')");
- zoj 3820 Building Fire Stations(二分+bfs)
阿尔萨斯
Build
题目链接:zoj 3820 Building Fire Stations
题目大意:给定一棵树,选取两个建立加油站,问说所有点距离加油站距离的最大值的最小值是多少,并且任意输出一种建立加油站的方式。
解题思路:二分距离判断,判断函数的复杂度是o(n),这样的复杂度应该是o(nlogn),即使常数系数偏大,但是居然跑了4.5s,也是醉了。 判断函数里面做了3次bfs,但是每次bfs节点最多