- opencv交叉编译
月光下的麦克
opencv人工智能计算机视觉
适用于瑞芯微,海思,酷芯等ARM平台。采用编译脚本配置编译选项,方便编译。目录一、创建目录二、工具链配置三、编译脚本四、编译一、创建目录mike@mike-virtual-machine:opencv-4.12/opencv/opencv$tree.-L1.├──3rdparty├──apps├──armlinux.toolchain.cmake├──build├──build.sh├──cmak
- [Java] 一个少见的get请求发送 (生成特殊格式的url)
后端javageturl
记录用java后端(springboot)发送一个特殊的GET请求时遇到的问题特殊的GET请求:形如http://target.domain.com?params={id:22,name:"Mike"}上面这个特殊的GET请求,无论是下面哪种格式(双引号是否完全),在postman以及浏览器中都能正常获取数据http://target.domain.com?params={id:22,name:"
- Leetcode热题100题 5.最长回文子串 Java实现
wenxiang99
leetcodeleetcode算法
5.最长回文子串题目描述给你一个字符串s,找到s中最长的回文子串。示例1:输入:s="babad"输出:"bab"解释:"aba"同样是符合题意的答案。示例2:输入:s="cbbd"输出:"bb"暴力解法:时间复杂度O(n*n);publicStringlongestPalindrome(Strings){intlen=s.length();Stringans=s.charAt(0)+"";for
- LEETCODE#234回文链表
Azanulbizar
LEETCODE
请判断一个链表是否为回文链表。1.前半段链表元素进栈,找到中间节点后边比较边出栈boolisPalindrome(ListNode*head){if(head==NULL||head->next==NULL)//特殊处理returntrue;ListNode*fast=head;ListNode*slow=head;ListNode*left=head;stacks;s.push(head->va
- AtCoder备赛刷题 ABC 363 | Avoid Palindrome 2
热爱编程的通信人
c++算法
学习C++从娃娃抓起!记录下AtCoder(日本算法竞技网站)备赛学习过程中的题目,记录每一个瞬间。附上汇总贴:AtCoder备赛刷题|汇总【ProblemStatement】YouaregivenastringSSSoflengthNNNconsistingonlyoflowercaseEnglishletters.给定一个长度为NNN的字符串SSS,仅由小写英文字母组成。Findthenumb
- 判断列表中是否存在一个元素
baner4853
python
name=['alex','java',3,65,3,2,6,8,2,4,7,xiao,mike]判断列表中是否存在一个元素:if3inname:print("3inname")统计元素个数:name.count(3)#判断列表中元素3的个数全部替换:#将3替换成33333333foriinrange(name.count(3)):#统计元素3的个数并做为循环次数ele_of_name=name.
- 最长回文字串的多种解法(java)
心 -
java
文章目录1.暴力解法2.中心扩散法3.动态规划法题目要求:给你一个字符串s,找到s中最长的回文子串1.暴力解法列举所有子串;将字符串分解为字符数组char[]arr,方便后续判断是否为回文字符串,接着使用两层for循环去跑字符串s,使用maxf初始化为1去记录最长回文字符串的长度,min记录最长字符串的起始下标。代码如下:publicStringlongestPalindrome(Strings)
- C++ | Leetcode C++题解之第409题最长回文串
Ddddddd_158
经验分享C++Leetcode题解
题目:题解:classSolution{public:intlongestPalindrome(strings){unordered_mapcount;intans=0;for(charc:s)++count[c];for(autop:count){intv=p.second;ans+=v/2*2;if(v%2==1andans%2==0)++ans;}returnans;}};
- Codeforces Round 972 (Div. 2) A-C 题解
AKDreamer_HeXY
Codeforces比赛题解c++算法动态规划数据结构贪心算法
本来以为B2难度会1900什么的,结果感觉1200还没有,先做的B1,后悔了QwQ关于我现场没切出C这件事……现场排名:A.SimplePalindrome题意构造一个长度为nnn的字符串,只包含aeiou五种字母,需要使得构造出来的字符串所包含的回文子序列数量最小思路当n≤5n\le5n≤5时,只要555个字母不重复出现都是最优情况当n>5n>5n>5时,可以证明:把相同字母放在一起是最优情况:
- 【百日算法计划】:每日一题,见证成长(013)
码上一元
数据结构与算法算法
题目回文链表给你一个单链表的头节点head,请你判断该链表是否为回文链表。如果是,返回true;否则,返回false。输入:head=[1,2,2,1]输出:true思路找到中间节点反转后半部分链表前后链表顺序比对publicbooleanisPalindrome2(ListNodehead){if(head==null||head.next==null)returntrue;ListNodep=
- 慢时光,慢生活:因为画画得来的感悟
北欧慢时光
文北欧慢时光欢迎关注我的《慢时光,慢生活日记系列——记录北欧生活日常》连载时间:2020年12月28日地点:斯德哥尔摩天气:阴假期在家,无事可做,妹妹倒是很期待她的画画课。第二次网课上完,我能看到她明显的进步,比如直线比如平涂的技法。于是,我小心地试探Mike,想问问他愿不愿意继续画画。说起Mike的学画过程,真的是一波三折。五六岁时,我看他特别喜欢画画(估计那个年龄段正好是对颜色画画感兴趣的阶段
- 每日一题 东方博宜(1942 - 回文质数 Prime Palindromes)
雨颜纸伞(hzs)
算法c++
题目描述因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以151是回文质数。写一个程序来找出范围[a,b](5≤ausingnamespacestd;constintN=1e6+10;vectork;intprime[N];intcnt;boolvis[100000001];voidget_primes(intn)for(inti=2;i0){k.push_back(n%1
- 132. Palindrome Partitioning II (Hard)
Ysgc
Description:Givenastrings,partitionssuchthateverysubstringofthepartitionisapalindrome.Returntheminimumcutsneededforapalindromepartitioningofs.Example:Input:"aab"Output:1Explanation:Thepalindromepartit
- C语言详细笔记--构造数据类型(结构体指针)
Jasmine5606
C语言c语言笔记开发语言c#
目录一、指向结构体变量的指针二、通过指针访问结构体变量的成员1.通过“(*指针变量名).成员名”方式访问2.通过指针变量名->成员名访问三、指向结构体数组的指针四、结构体应用举例一、指向结构体变量的指针由于结构体变量占一定内存空间,所以可以通过定义结构体指针变量来存储结构体变量的首地址。一般格式如下:struct结构体名*指针变量名structstutypestu={1001,"mike",{20
- 【百日算法计划】:每日一题,见证成长(004)
码上一元
数据结构与算法算法java数据结构
题目回文数一个整数x,如果x是一个回文整数,返回true,否则,返回false回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数示例1:输入:x=121输出:true思路1取余取整反转这个数字,反转后的数跟原数比较。publicstaticbooleanisPalindrome(intx){if(x0){y=y*10+x%10;x=x/10;}returnm==y;}思路2转成字符数组,
- LeetCode 336. Palindrome Pairs
z6491679
acmleetcode
Givenalistofuniquewords.Findallpairsofdistinctindices(i,j)inthegivenlist,sothattheconcatenationofthetwowords,i.e.words[i]+words[j]isapalindrome.Example1:Givenwords=[“bat”,“tab”,“cat”]Return[[0,1],[1,0
- leetcode题解-336. Palindrome Pairs
liuchongee
leetcode刷题leetcode
题目:Givenalistofuniquewords,findallpairsofdistinctindices(i,j)inthegivenlist,sothattheconcatenationofthetwowords,i.e.words[i]+words[j]isapalindrome.Example1:Givenwords=[“bat”,“tab”,“cat”]Return[[0,1],[
- [LeetCode]336. Palindrome Pairs
gqk289
LeetCode
https://leetcode.com/problems/palindrome-pairs/找出两个字符串拼接可形成回文的所有组合遍历数组,把word和所在位置加入map,再遍历数组,内层遍历当前字符串,将字符串分隔成前后两个部分,判断这两个部分是否为回文,如果是,则将另一部分翻转,并在map中找是否存在,如果存在则这两者可以构成回文publicclassSolution{publicList>
- Leetcode 336. Palindrome Pairs- FB tag
a568093361
leetcode
Givenalistofuniquewords,findallpairsofdistinctindices(i,j)inthegivenlist,sothattheconcatenationofthetwowords,i.e.words[i]+words[j]isapalindrome.Example1:Input:["abcd","dcba","lls","s","sssll"]Output:[
- 回文子串问题梳理
灵海之森
算法python
https://leetcode.cn/problems/palindromic-substrings/https://leetcode.cn/problems/longest-palindromic-subsequence/https://leetcode.cn/problems/palindrome-partitioning/description/https://leetcode.cn/pr
- Leetcode面试经典150题-5.最长回文子串
鱼跃鹰飞
Leetcode字节跳动高频面试题leetcode面试算法
解法都在代码里,不懂就留言或者私信classSolution{ publicstaticStringlongestPalindrome(Strings){ if(s==null||s.length()==0){ returnnull; } //加工字符串,例如abcdcba加工成#a#b#c#d#a#b#c#d# Stringstr=getManacherStr
- 17.LeetCode刷题For Swift·680.回文字符串 Valid Palindrome II (Easy)
富城
1、原题Input:"abca"Output:TrueExplanation:Youcoulddeletethecharacter'c'.题目描述:可以删除一个字符,判断是否能构成回文字符串。2、思路使用双指针方法,3、代码classSolution{funcvalidPalindrome(_s:String)->Bool{//字符串转数组letstrArr=Array(s)//双指针vari=0
- 《见识》第九章 讲话做事都要达到目的
第一个太阳
去年在英国访学,发现中西教学法的不同。在中国大学英语课堂上,每篇文章课后都有至少三页纸的词汇,教师通常的做法是选取其中一些重点单词进行全方位的解读;在英国的非本族人大学生课堂上,每节课只涉及生词量5个左右,教师主要专注于这5个单词的用法上,一节课下来,学生基本能够会读、会写、会应用。英国的教师拿到中国大学英语教材课本时,他们内心是很震惊的,他们认为这么多单词,怎么记得住?我还记得MIKE用的一个单
- 【每日刷题Day85】
开敲
每日刷题算法数据结构leetcode
【每日刷题Day85】个人主页:开敲所属专栏:每日刷题文章目录1.125.验证回文串-力扣(LeetCode)2.43.字符串相乘-力扣(LeetCode)3.557.反转字符串中的单词III-力扣(LeetCode)1.125.验证回文串-力扣(LeetCode)//思路:双指针遍历。两头向中间遍历,判断是否有不同字母。boolisPalindrome(char*s){char*arr=(cha
- 英语语法-15【名词】复合名词、所有格名词、可数名词和不可数名词
ltc0907
1、复合名词(CompoundNouns)。两个名词结合。可以黏在一起:如notebook,downtown。。可以分开:Postoffice,BloodPressure。。可以用连词:Son-in-law,three-year-old。。2、所有格名词(PossessiveNouns)。表从属关系。Mike'sdog...Thestudent'steacher....SarahandBob'sm
- 回文链表(leetcode)
wx20041102
链表leetcodelinux
我自己第一个写的代码:boolisPalindrome(structListNode*head){structListNode*tail=NULL;structListNode*pos=NULL;if(head->next==NULL){returntrue;}while(1){if(head->next==NULL||(head->next->next==NULL&&head->val==hea
- 回文串(三种方法)
喜欢刷dp的菜菜
leetcode算法c++数据结构
暴力o(n3)中心拓展法o(n2)动态规划o(n2)动态规划思路根据一名分析回文串如果两边字符相同,那么必须中间是回文子串,整体才会回文既且二维遍历,ij确定,子串也就确定,但由于需要先计算出i+1,j-1,所以我们的遍历顺序需要从下往上,既i从大到小,j从小到大,j最小从i开始取classSolution{publicStringlongestPalindrome(Strings){intlen
- Day62 验证回文串
Shimmer_
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写https://leetcode-cn.com/problems/valid-palindrome/将空字符串定义为有效的回文串示例1:输入:"Aman,aplan,acanal:Panama"输出:true示例2:输入:"raceacar"输出:falseJava解法思路:这个属于很基础的题,使用双指针左右同时遍历即可
- 慢时光,慢生活:开学季来临,祝我的小王子新学年学业进步
北欧慢时光
文北欧慢时光欢迎关注我的《慢时光,慢生活日记系列——记录北欧生活日常》连载时间:2020年8月17日地点:斯德哥尔摩天气:晴弟弟妹妹的幼儿园上周就已经正式开园。这周周二,也就是明天,Mike正式开学。秋季开学之后,Mike就是五年级学生了。Mike的学校按照惯例,通常在开学前一周就开始信件轰炸。上周五,我一下子就收到了11封信,比他刚从其他学校转入该校读四年级时还要多。Mike如今所在的学校,是一
- 慢时光,慢生活:开学三周,病倒一片
北欧慢时光
文北欧慢时光欢迎关注我的《慢时光,慢生活日记系列——记录北欧生活日常》连载时间:2020年9月7日地点:斯德哥尔摩天气:多云开学不过三周,幼儿园也好,小学校也罢,病倒了一大片。Mike班上上周陆陆续续地有同学生病请假。上周五,Mike放学回家,跟我说:“妈妈,我觉得今天一天都很累。脚跟灌了铅一样。”我着急慌忙地给他量体温,就怕他发烧。好在温度倒是没有,不过看他鼻子堵得厉害,嗓子里好像也有痰。估计是
- 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节点最多