<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Nino</title>
    <link>https://www.ninojay.top/</link>
    
    <image>
      <url>https://www.ninojay.top/img/favicon.png</url>
      <title>Nino</title>
      <link>https://www.ninojay.top/</link>
    </image>
    
    <atom:link href="https://www.ninojay.top/rss2.xml" rel="self" type="application/rss+xml"/>
    
    <description>Web开发者｜阅读写作爱好者</description>
    <pubDate>Tue, 17 Mar 2026 13:39:11 GMT</pubDate>
    <generator>http://hexo.io/</generator>
    
    <item>
      <title>欢迎，2026年春天</title>
      <link>https://www.ninojay.top/2026/welcome-2026-spring/</link>
      <guid>https://www.ninojay.top/2026/welcome-2026-spring/</guid>
      <pubDate>Mon, 16 Mar 2026 14:58:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>2026年的第一个季度快要过去了。</p><p>胡乱地在各种软件里散落了些文字，今天放在这里祭奠。</p><p>写下的时间是由近到远。</p><hr><p>如果能统计出每天会遇到的事，除了上班之外，还会遭遇那么多重复的事。事情一遍遍重复，对待这些事的反应也一遍遍重演，我们的情感在一遍遍宣泄，疲惫不堪，懊恼不已，却，还蕴含着一丝，乐此不疲。</p><p>想远离一切痛苦的我们，同时惧怕着万里无云。</p><hr><ul><li>酒！酒！酒！</li><li>傍晚的珠海跑进我的心里了。</li><li>艺术将人拉近，极端的科学将我们推远。</li><li>你写诗，文学创作，是为了讨好机器吗？</li><li>跟大家待在一起，让我自己变小了。</li><li>我还是在过一种幻觉的生活，总是不记得上一个月做的事，去过哪些地方，见过的那些人，总是没有太深的印象。日子就这样在过下去。</li><li>你会不断自己告诉自己，不再年轻。</li><li>前几年有人说我离生活太远。这几年主动离生活很近，心里依然觉得很远，心不在焉。</li><li>昨天算是宿醉，连续两天喝一瓶白葡萄酒，今天起床脑袋里好像放了一根木头，舌头一直在发麻，手脚控制力也下降了。</li></ul><hr><p>哲学和文学好像都不能再让我的心平静下来了。过去很多的内心深处的爱好，都失去了本来的意义。</p><p>我是行尸走肉。我在迷失。</p><hr><ul><li>你以为你踏实上班懂得越来越多了，其实懂得面越来越窄，反而对这个世界了解的越来越少了。</li><li>把我的心打开吧，给你们看，空无一物。</li><li>我并不觉得缺少什么，我并不为未来的物质焦虑，我对当下已然满意。</li><li>他们的改变太难。</li><li>新住的地方附近少了电影院，我便少看看了一些院线电影。</li><li>我怎么觉得就只有我想在社交网络上充满消极。为什么他们的社交网络只分享快乐，是大家的一种默契吗。</li><li>想去流浪。</li></ul><hr><p>我的内心浑浊，披着一层迷雾，扒不开，吹不散。丧失内核。混沌。我没有自我，即使有自我，任何问题，都不再能给出属于我这个人的解答，我活成了什么样子，批评自我，哀怨自我，又去每个方面肯定自我。迷幻的精神。谁都能批评，谁都必须尊敬。我是个病人。</p><hr><ul><li>旅行一两天只能够让你回到老地方安心生活一两天。</li><li>海明威说：巴黎是一席流动的盛宴。而上海就是我心中的巴黎，可我却不是海明威。至少目前还不是。</li><li>合肥路灯上站着的鸟儿，有想过飞去外地吗。</li><li>能够睡的越来越早，越来越虚无。</li></ul><hr><p>我现在好像没有什么烦恼，也没有什么希望。</p><hr><ul><li>没有过去，只有作品。</li><li>人就是拿来伤害的。</li><li>有些问题一直没有解决，得过且过生活到现在，思维无时无刻不在漂流，花很多时间在内心嘲笑自己。</li><li>大差不差的城市，还好有不同的故事。</li><li>日子是一天一天过吗，是一团一团的。</li><li>强迫自己和一些人待久了，都忘了自己可以有多酷了。</li><li>我的心被空无塞满，无法用任何爱填补，只有一层壳。</li><li>那个房间整洁的人，却可以随地吐口水。</li></ul><hr><p>四川让我痛苦。</p><hr><ul><li>既怕喧闹，又怕安静。</li><li>连可怜都没意识到，究竟是幸福还是更可怜。</li><li>有一种听到别人认真讨论，就想笑的轻蔑感。</li><li>俗不可耐</li><li>如果有一条抑郁，活着无欲望的狗。</li><li>浮华生活总是流于表面，但是确实相当带劲呀。</li><li>一个月有那么一两天断网，你会去咀嚼曾经的收获。</li><li>一个人开心，全世界光明。</li><li>我的生命力在减弱，在减弱…</li></ul></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/">情绪</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      
      <comments>https://www.ninojay.top/2026/welcome-2026-spring/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>港湾的味道</title>
      <link>https://www.ninojay.top/2026/hongkong/</link>
      <guid>https://www.ninojay.top/2026/hongkong/</guid>
      <pubDate>Wed, 31 Dec 2025 16:00:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>厌恶生活的大巴车司机更厌恶生活一点之后，</p><p>我就踏入了一门新的菜系里。</p><p>属于这儿的，生活的滋味扑面而来，</p><p>不自觉用回忆这把筷子，挑出熟悉的一部分来品尝：</p><p>我尝到，停在港湾的船和泛在小河的舟在汇合。</p><p>我尝到，笑容的甜度和冲突的盐味混合在一块儿。</p><p>我尝到，那艘大船运输过的一道道完整的颜色。</p><p>我也能也会被接纳，我继续品尝。</p><p>味觉让我知道，如果在这里生活，</p><p>我也可以是，构成下一道霓虹里的一种。  </p><p>被这艘姓名美丽的大船尽心运输。</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/">情绪</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      
      <comments>https://www.ninojay.top/2026/hongkong/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>2025年用无聊的诗结束吧</title>
      <link>https://www.ninojay.top/2025/my-boring-poem/</link>
      <guid>https://www.ninojay.top/2025/my-boring-poem/</guid>
      <pubDate>Tue, 30 Dec 2025 16:00:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>没有什么想总结的。只想说一句话：对合肥，对目前的工作和同事，统统都厌倦了。</p><hr><h5 id="罗盘"><a href="#罗盘" class="headerlink" title="罗盘"></a>罗盘</h5><p>从万缕缠绵中抽出预定的思念。<br>用指尖剥离花生的红衣。<br>松油意欲包裹的这一句：<br>“但是，他的性格有些怪异。”<br>作为琥珀成型的咒语。<br>由潮汐牵引至荫蔽，<br>满仓的松鼠表演焦急，<br>零碎的月光聚于夜的中心。<br>大地的炎症尽管熟悉，<br>罗盘岂有一天失灵？</p><br><h5 id="第八宗"><a href="#第八宗" class="headerlink" title="第八宗"></a>第八宗</h5><p>是一种诅咒，<br>需要一生克服的<br>从深山泥土中传递出的<br>一脉的诅咒：</p><p>盾牌防御了一次攻击，就扔掉<br>催发种子散发浓烈情感后，不播种<br>海边迎逆风启航，收帆，目睹搁浅的过程<br>滥用独一无二的连系，琢磨万人唾弃，暗含的<br>珍重  </p><p>酒神不能诱发悲情或欢愉<br>爱神的天敌镇守在灵魂中</p><p>剩余的神佛在基因上雕刻：<br>是这一族罪过的第八宗。</p><br><h5 id="扔春风"><a href="#扔春风" class="headerlink" title="扔春风"></a>扔春风</h5><p>信封装着剑鞘，粘住一叶舟<br>锈蚀甘愿坠入，星河窟窿<br>梵高拎着黄红，填充平流层<br>清风只留我，一个时辰<br>留有余温的邮票，染黑双手<br>镜子是大地的眼眸，白里泛红<br>清道夫指着窗口说：<br>“可以在那儿，扔春风”</p><br><h5 id="进化"><a href="#进化" class="headerlink" title="进化"></a>进化</h5><p>在被一条鱼遗忘之际<br>海仍对它说：“勿忘平静”<br>曲折夺目的身姿<br>蓄势搅动地壳的神力<br>狰狞，鱼，锚定陆地<br>侍奉蓝天的飞禽<br>轻蔑地散播白羽<br>四脚的野兽们<br>守候膜拜阳的权力<br>哪只猿在月下<br>悄悄地直立<br>欲将星穹献给<br>爱恋的土地</p><br><h5 id="心中鸟"><a href="#心中鸟" class="headerlink" title="心中鸟"></a>心中鸟</h5><p>吟唱摇篮曲的鸟儿<br>你还会留意——<br>叶间的青虫吗<br>你这自大的鸟儿<br>究竟在为什么歌唱呢<br>雨打风吹、寒冬酷暑<br>定要颤动胸脯幻化线谱<br>从地上荆棘到树的枝头<br>你分明连自己也弄不清楚<br>却将一切缝补在一块儿<br>引得无名的草丛<br>为了看你的模样<br>探向天空<br>引得我为你写下<br>连我自己也不清楚的<br>触动</p><br><h5 id="一颗星"><a href="#一颗星" class="headerlink" title="一颗星"></a>一颗星</h5><p>一种模式，在宇宙燃烧<br>一个星系，在银河筑巢</p><p>地球上有一种生命<br>用双眼观察到：<br>一颗星，正在闪耀</p><p>这颗星，如何知道：<br>他的夜空里，藏着一颗星<br>星上有无数的眼睛<br>在瞭望</p><br><h5 id="翅膀"><a href="#翅膀" class="headerlink" title="翅膀"></a>翅膀</h5><p>你好像很容易被赏赐一对翅膀，<br>海也预备生出波涛为你做向导。<br>有哪些心灵在对岸替你祈祷着：<br>太阳呀月亮呀，勿忘临摹土地之形状，<br>果实亦跌落在你开展的眉毛。<br>拂拭着，珍视着，你飞行的许可。<br>你好像感受到了，翅膀的心跳。</p><br><h5 id="岩浆与海"><a href="#岩浆与海" class="headerlink" title="岩浆与海"></a>岩浆与海</h5><p>岩浆被推着<br>从海底来到了海面<br>领悟上方另一种湛蓝<br>海在旁诉说，我在被伤害。<br>黑色的皮肤得以浮现。<br>炽热血脉蛰伏起来。</p><p>海被永远占据一块。</p><br><h5 id="寺庙里的咖啡机"><a href="#寺庙里的咖啡机" class="headerlink" title="寺庙里的咖啡机"></a>寺庙里的咖啡机</h5><p>一台咖啡机，<br>在山顶的寺庙里。</p><p>“要不要来一杯有缘咖啡。”<br>师傅问我，“免费。”</p><p>我问师傅，“这个缘分，”<br>“能不能取名为dirty。”</p><p>师傅喃我，“执念太深。”<br>“众生皆苦，美式也行”，<br>我回。</p><p>师傅不再语。</p><p>缘分已尽，<br>我想。</p><br><h5 id="幕布"><a href="#幕布" class="headerlink" title="幕布"></a>幕布</h5><p>好像没什么话想对自己说了<br>好像就失去了对情感的感悟<br>好像生命知晓了这一种平和<br>好像身体背着心灵掌握欢乐<br>好像在被谁俯视学不会融合</p><p>允许着自己怜悯我</p><p>我推我至人群<br>我拉我至自然</p><p>反复</p><p>阅读帮助巩固</p><p>随木头的脉搏起舞</p><p>我是我的一块幕布</p><br></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/">情绪</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      <category domain="https://www.ninojay.top/tags/%E8%AF%97/">诗</category>
      
      
      <comments>https://www.ninojay.top/2025/my-boring-poem/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>立冬了</title>
      <link>https://www.ninojay.top/2025/winter-is-coming/</link>
      <guid>https://www.ninojay.top/2025/winter-is-coming/</guid>
      <pubDate>Mon, 10 Nov 2025 16:22:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><blockquote><p>光标在不会有人注意的地方闪烁，在向着只有我知道的方向移动。同我脑里想的事务一样，行为也在背着大家，做自己真正想做的事。瞒着周围的人，思考自己真正关注的事。</p></blockquote><p>立冬了。</p><p>坦白说，我最近没有怎么靠近文学。</p><p>好像是触摸到了一种清晰的物质上的幸福：客观上并不算富足的我，嘴上虽然也总是在说钱不够，心里面其实没有觉得自己贫穷过，无论身上有多少钱，我其实都有一种满足感。</p><p>我目前感兴趣的物件，都能买到，那些周围的人都渴望买但是买不到的东西，我也都发自内心的不感兴趣。想去的地方，也都不必穷游，旅途中，想走便走，想留便留。听到我不管在哪儿，出行基本上都是打车，周围的人/旅行中认识的人，都说我生活地像个少爷。</p><p>等等，好像这样的描述，会让人觉得因为我都能负担，所以这般。可我内心清楚，如果不能负担旅行，那么我也就不向往旅行，会去寻找周围生活的美好。如果不能买更好的电子产品，我也不会困扰，因为我清楚工具的好坏并不会真正决定你想产出的内容的质量。初中上下学每天都要坐四趟公交车，我也没有一天觉得难受，公交车上挤满了人的那些日子，在当时或者是现在，我仍然觉得十分有趣。</p><p>让我自己给我的心态找个原由，我想是因为，这些都是基于我自己的选择，是这些自己的选择就只带来了这些物质，那么就应该满足于这些物质，这些物质就是你目前能得到的最好，想要新的物质，那么只管做出新的选择，否则你就是在自寻烦恼。可大家为什么不明白呢。</p><p>我觉得自己目前真正匮乏的，是属于自己的时间。安静的时间。做自己的时间。更多思考的时间。</p><hr><p>立冬了。</p><p>都说身体自带一个闹钟，生物钟。我的钟和去年的这个时候一样，响起了病号铃。同样的感受，先是鼻子尽头一遇到空气就闹别扭，努力产出鼻涕，却始终无法成型。接着连一句话也说不完整，咳嗽之神总是在我说到关键之处提醒我谨言慎行。</p><p>深夜里，身体自觉地升温想杀死病菌，却先杀死了我的睡意。这股温度烧进了我的脑海，一块块尘封的记忆被炼成一幅幅镣铐，急欲重操旧刑折磨我。还好我终究是成长了一些，想起自己所在之地，自己提醒着自己，又是幻觉，我已经获得了全新的自由，已经不可能再像去年一样难过。</p><p>枕头被我垫高，缓解呼吸的障碍。空调在这个季节被我打开，调至18摄氏度，利用科技舒缓身与心的烧灼。</p><p>天亮，忘掉只睡了四个小时。带着终于能成型的鼻涕，和新的两个朋友，去吃一个星期前就约定好的非遗面馆。吃完，起意去爬山出出汗。两个朋友总是走在我前面，上面，回头看我，低头望我，满头大汗，气喘吁吁，他们笑我，他们等我，我很快乐，我在恢复。</p><p>登顶，只见一片雾霾。相机里的树木背后，呈现的是一片白，像是一张a4纸。我对朋友们说，现在看到的这一片白和我目前的人生一样，模糊不清。你知道这片白被驱散，就是五光十色。但是你目前就是只能看到这片白。朋友们调侃我又感慨起来了。</p><p>坐在一棵树下，就这样，闲聊一会儿，开一会儿玩笑。</p><p>下山，去往动物园。</p><p>上一次，还是小时候。</p><hr><p>立冬了。</p><p>我最近买了一个动感单车，放在房间里。已经连续5天，下班后骑一个小时，消耗500大卡左右。</p><p>有一个女生说，要是我能够减15斤，她就给我报销动感单车。</p><p>所以，我就买了一个动感单车。</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/">情绪</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      
      <comments>https://www.ninojay.top/2025/winter-is-coming/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>最近的三个月</title>
      <link>https://www.ninojay.top/2025/the-past-three-months/</link>
      <guid>https://www.ninojay.top/2025/the-past-three-months/</guid>
      <pubDate>Sat, 09 Aug 2025 16:00:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>最近的我在过一种怎样的生活呢。</p><p>不过是三个月的时间，工作上做了不少项目，去了不少的地方，看了不少的电影和书籍，接触又分离不少的人。</p><p>短短的三个月，原来足够发生许多的事。从而想通：原来是这样，那些身患绝症的人，即便知道化疗的折磨，即便已被叮嘱（就算手术成功）生命只能延续一段时间。他们还是愿意继续。除了对死亡的恐惧，原来就这么一段时间，还有机会经历很多的事。</p><hr><p>因为双休，朝九晚六，基本不用加班。这三个月去了：三亚、北京、重庆、合肥不少的酒吧/餐馆/景点/剧场。</p><p>这些活动都是去见人/和人一起去（可能是前些年太习惯一个人的自在），实际上都让我不是完全放松，即便是和熟人一同出游，在间隙我总是容易想过多和旅行无关的事。</p><p>我主动来看朋友们，他们看到我都很高兴。我当然也高兴，之余更多的是去看他们的这一行为的新奇体验。</p><p>去年以前，我都很少主动去另一个城市见见谁。</p><p>衷心感谢目前的这份工作给我的这些机会。毕竟今年目前为止，所有的机票都是公司给我买的。</p><p>感恩。</p><hr><p>最近看过的电影：《落水狗》1992、《苏利文的旅行》1941、《巴顿·芬克》1991、《本杰明·巴顿奇事》2008、《日落大道》1950、《骗中骗》1973、《普通人》1980、《洛奇》1976、《犹在镜中》1961、《卡萨布兰卡》1942、《克莱默夫妇》1979、《唐人街》1974、《还有明天》2023、《没有过去的男人》2002、《一一》2000、《迁徙的鸟》2001、《奇爱博士》1964、《一个叫欧维的男人决定去死》2015、《彗星来的那一夜》2013、《海街日记》2015、《搏击俱乐部》1999、《喜宴》1993、《饮食男女》1994</p><p>最近看过的书：《窄门》、《冯雪科学减肥法》、《边喝边写》、《道德故事集》、《论生命之短暂》、《白夜》、《树上的男爵》、《伊万·伊利奇之死》、《海街日记》、《故事》、《一个孤独漫步者的遐想》、《美丽新世界》</p><p>可以知晓，我寻常工作日下班后除了打lolm、刷短视频之外，在做些什么。</p><hr><p>可我想坦白，我的生活只是看起来“紧凑”，内在其实还是随意。</p><p>我会在备忘录时不时写一些自己的感受。大多数都悲观，不太能够给熟人看。</p><p>这段时间写过一条：</p><blockquote><p>我现在好像没有什么烦恼，也没有什么希望。</p></blockquote><p>我说给室友听，室友安慰我说：</p><blockquote><p>那就是最好的状态。</p></blockquote><hr><p>再聊一点点工作上的吧。</p><p>对目前的全职工作，我很认可且认真，沉浸上班了七个月后，觉得之前，我对时间是否太不够尊重了。总认为一件事就是需要以一月/半年的单位去规划完成。实际上在社会机器里运转，分配到你头上的大量事的处理时间由不得你来决定。大部分的事儿都是突然开始，刚有些头绪时，还可能悄然结束。</p><p>一件件迅速地来，一件件惯性般地交付。偶然得空，想起来，来去不由得自己控制，中间五感发挥再尽兴，这种完成的成就感真的属于自己吗。</p><p>工资，是公司给我发的安慰剂。即便我认可目前的公司和项目，抗药性已在时不时地折磨我。</p><hr><p>我实在应该多喝些酒、多写些文字。</p><p>毕竟这几个月已经刻苦学习了之前自认为还不够了解的那些技巧。</p><hr><h2 id="心与心"><a href="#心与心" class="headerlink" title="心与心"></a>心与心</h2><p>是有一种感觉，</p><p>填充在空气分子的间隙，</p><p>我应该是吸入过多，</p><p>寻求着窒息。</p><p>摸索着清醒。</p><p>沙漏在焦虑。</p><p>白夜还未醒。</p><p>流光已暂停。</p><p>谁活得怪异？</p><p>间隔那爱意！</p><p>物质生虚幻。</p><p>抽象渗具体。</p><p>蜉蝣问星辰。</p><p>心与心。</p><p>— 2025年06月05日写的无聊的诗</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%80%9D%E8%BE%A8/">思辨</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      <category domain="https://www.ninojay.top/tags/%E8%AF%97/">诗</category>
      
      
      <comments>https://www.ninojay.top/2025/the-past-three-months/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>《这个哲学家救了我》-（意）马西莫·匹格里奇</title>
      <link>https://www.ninojay.top/2025/this-philosopher-saved-me/</link>
      <guid>https://www.ninojay.top/2025/this-philosopher-saved-me/</guid>
      <pubDate>Mon, 05 May 2025 16:24:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h2 id="背景"><a href="#背景" class="headerlink" title="背景"></a>背景</h2><p>上上周（2025-04-28），复读了整本小书。在去年的12月份，读完的第一遍。</p><p>从这本书我才开始察觉，斯多葛哲学，对我很有吸引力。</p><p>我曾经仅仅因为书名购买看过马可的《沉思录》、塞涅卡的《论生命之短暂》。</p><p>我曾经摘抄过叔本华的《人生的智慧》中的一句话：“使我们快乐或者忧伤的事物，不是那些客观、真实的事物，而是我们对这些事物的理解和把握。”，叔本华接着说：“这就是爱比克泰德所说的‘扰乱人们的不是客观事情，而是人们对客观事情的见解。’”</p><p>而马可、塞涅卡、爱比克泰德，都是斯多葛哲学的代表人物。</p><p>后来我终于读到了系统性讲述斯多葛哲学的《这个哲学家救了我》、《像哲学家一样生活》，这两本书提到了上面这些斯多葛哲学的代表人物们，我惊呼都有过接触。</p><p>甚至，在我好奇心驱使下看过的几本现代人讲述佛学的书中，也提到了斯多葛哲学和佛学有相近的地方。</p><p>斯多葛哲学在现代是一门十分实用的哲学。</p><p>感谢斯多葛哲学，最近这些年救我于水火。</p><hr><h2 id="第一部分：信奉爱比克泰德的智慧"><a href="#第一部分：信奉爱比克泰德的智慧" class="headerlink" title="第一部分：信奉爱比克泰德的智慧"></a>第一部分：信奉爱比克泰德的智慧</h2><h3 id="1-3-斯多葛哲学入门"><a href="#1-3-斯多葛哲学入门" class="headerlink" title="1.3 斯多葛哲学入门"></a>1.3 斯多葛哲学入门</h3><ul><li>智慧<ul><li>区分什么是对我们真正有益或有害的知识。</li></ul></li><li>勇气<ul><li>面临危险，或者宁愿遭受批评报复，也要采取合乎道德行动的倾向。</li></ul></li><li>正义<ul><li>以公平的方式对待他人，以你希望他人对待你的方式对待他人，永远尊重他们作为人的尊严。</li></ul></li><li>节制<ul><li>做事要有恰当的分寸，既不太少，也不太多。（平衡）</li></ul></li></ul><h3 id="1-4-爱比克泰德哲学入门"><a href="#1-4-爱比克泰德哲学入门" class="headerlink" title="1.4 爱比克泰德哲学入门"></a>1.4 爱比克泰德哲学入门</h3><ul><li>控制二分法<ul><li>矛或箭射中某个点</li></ul></li><li>斯多葛派实践三原则<ul><li>欲望（及厌恶）原则</li><li>行动原则</li><li>认同原则</li></ul></li></ul><hr><blockquote><p>控制二分法</p></blockquote><h2 id="第二部分：人生哲学指南"><a href="#第二部分：人生哲学指南" class="headerlink" title="第二部分：人生哲学指南"></a>第二部分：人生哲学指南</h2><h3 id="2-1-把事情弄清楚：学到最重要、最实用的智慧"><a href="#2-1-把事情弄清楚：学到最重要、最实用的智慧" class="headerlink" title="2.1 把事情弄清楚：学到最重要、最实用的智慧"></a>2.1 把事情弄清楚：学到最重要、最实用的智慧</h3><p>其他一切都不完全取决于你，特别是你的身体、人际关系、事业、名誉和财富-本质上你可以影响它们，但结果取决于他人。</p><p>请记住，只有那些完全取决于你的东西，才真正属于你。其他一切都是从宇宙中暂借来的，宇宙可能会随时以任何收回。</p><p><strong>这个建议非常重要：每当你对某事有强烈的欲望（或有强烈的厌恶，实际上是一回事）时，训练自己与欲望（或厌恶）的源头对话，并说：”你只是一个表象，可能根本不是你所描绘的那样！让我仔细看看到底是怎么回事。”然后对表象进行关键测试，问问你自己，这是否最终取决于你?</strong></p><hr><blockquote><p>欲望（及厌恶）原则</p></blockquote><h3 id="2-2-欲望及厌恶训练：重新定位可能已被误导的欲望和厌恶"><a href="#2-2-欲望及厌恶训练：重新定位可能已被误导的欲望和厌恶" class="headerlink" title="2.2 欲望及厌恶训练：重新定位可能已被误导的欲望和厌恶"></a>2.2 欲望及厌恶训练：重新定位可能已被误导的欲望和厌恶</h3><h4 id="重新调整你的优先事项"><a href="#重新调整你的优先事项" class="headerlink" title="重新调整你的优先事项"></a>重新调整你的优先事项</h4><p><u>你拼命渴望那根本不由你决定的事情，与此同时，却忘记了把精力投入到实际由你决定的事情上。</u></p><p><strong>反复告诉自己，你的目的不是击中目标，而是尽你所有射出最好的一箭：不是为了获得晋升，而是为了成为最佳候选人；不是为了让别人爱你，而是全心全意成为一个最有爱的人。如果你能以这种方式重新引导你的注意力和欲望，你将会获得平静与快乐。</strong></p><h4 id="你自以为所拥有的一切就是你的吗"><a href="#你自以为所拥有的一切就是你的吗" class="headerlink" title="你自以为所拥有的一切就是你的吗"></a>你自以为所拥有的一切就是你的吗</h4><p>你自以为所拥有的一切其实都不是你的：你最喜欢的杯子，你的房子，你的工作，甚至你的伴侣或孩子。总有一天，你会以这样或那样的方式失去它们。你应该为此做好准备，同时清楚地知道，你要对这样的拥有心存感激。</p><h4 id="如何应对可能发生的状况"><a href="#如何应对可能发生的状况" class="headerlink" title="如何应对可能发生的状况"></a>如何应对可能发生的状况</h4><p>对于你要做的每一件事，预估最有可能发生的情况，并提前预演你将如何面对。</p><h4 id="困扰你的不是事情本身，而是你对事情的判断"><a href="#困扰你的不是事情本身，而是你对事情的判断" class="headerlink" title="困扰你的不是事情本身，而是你对事情的判断"></a>困扰你的不是事情本身，而是你对事情的判断</h4><p>困扰你的不是事情本身，而是你对事情的判断。看看周围，你会注意到人们对同样的事情有着完全不同的反应，也就是说他们对事情的判断不同。</p><p><strong>智慧有三个阶段：</strong></p><ul><li>第一，愚者把自己对事物的判断归咎于他人；</li><li>第二，<u>走向智慧的人</u>不怪别人只怪自己；</li><li>第三，智者甚至都不会责怪自己。</li></ul><h4 id="立刻开始真正的生活"><a href="#立刻开始真正的生活" class="headerlink" title="立刻开始真正的生活"></a>立刻开始真正的生活</h4><p>享受生活的乐趣，有时愉悦自己未尝不可。但你应该永远记住，航行在某一刻终会结束，不会永远持续下去。请为那一刻的来临做好准备，当你回首往事时，确保自己不会因为虚度了上岸时间而追悔莫及。</p><p><strong>避免这种情况的最好方法，是常常问自己什么才是最重要的，并采取相应的行动。</strong></p><h4 id="事事如你所愿"><a href="#事事如你所愿" class="headerlink" title="事事如你所愿"></a>事事如你所愿</h4><p>要记住，你真正可以决定的，是全力以赴去实现自己的目标；同时也要记住，是否真正实现目标并不完全取决于你。在生活中，你有时会赢，有时会输，有时会以平局收场。</p><p><u>培养对外在事物的平静态度。</u><strong>当它们与你有益时，你要高兴并感激；反之，也不要恼怒。</strong></p><h4 id="你的意志永远是自由的"><a href="#你的意志永远是自由的" class="headerlink" title="你的意志永远是自由的"></a>你的意志永远是自由的</h4><p>那些可能以某种方式限制你行动的东西，无法限制你的意志。这是自由的唯一意义，你的自由取决于你。</p><h4 id="找到内在的能力"><a href="#找到内在的能力" class="headerlink" title="找到内在的能力"></a>找到内在的能力</h4><p>这是<strong>驾驭</strong>生活的良方。记住，<u>对于发生在你身上的任何事情，你都可以找到内心的能力去应对。</u></p><p>比方说，你被情欲诱惑，你会找到节制力；如果你正经历痛苦，你会找到承受力；如果有人侮辱了你，你会用忍耐来对付那个砂锅。</p><p>时常练习你的能力，你就不会被生活的境遇击垮。</p><h4 id="像旅人一样度过此生"><a href="#像旅人一样度过此生" class="headerlink" title="像旅人一样度过此生"></a>像旅人一样度过此生</h4><p>你应该像暂住在客栈的旅人一样度过此生，永远不要认为任何东西真正属于你，它们只是你向宇宙暂借来的。</p><h4 id="从小事开始练习保持内心平静"><a href="#从小事开始练习保持内心平静" class="headerlink" title="从小事开始练习保持内心平静"></a>从小事开始练习保持内心平静</h4><p>宁可少赚点钱、<strong>错过晋升机会</strong>或<u>被轻视</u>，你也不能失去平静和自我价值。</p><p>有一些事，不值得生气，经过你的智慧，你要判断出生气只会因为已经发生的事情而徒增对自己的伤害。</p><h4 id="你能接受别人说你愚蠢吗"><a href="#你能接受别人说你愚蠢吗" class="headerlink" title="你能接受别人说你愚蠢吗"></a>你能接受别人说你愚蠢吗</h4><p><strong>如果你想取得进步，你就要勇于接受别人依据外在事物而评判你愚蠢。不必设法用你的知识去打动他们，因为你真的没什么知识。</strong></p><p>当追求外在分散了你的注意力时，你就很难在完善自己的判断方面取得进展。</p><h4 id="只渴望由你决定的东西"><a href="#只渴望由你决定的东西" class="headerlink" title="只渴望由你决定的东西"></a>只渴望由你决定的东西</h4><p>悲伤完全是你的意念营造出来的。<strong>如果你奢望事情不是如此，只能说明你很愚蠢，因为你根本无力改变。</strong></p><p>同样，如果你希望同事不要那么烦人，或者政客不要腐败，富人不要贪婪，你就是个傻瓜，<u>因为那是他们的本性。</u>总之，如果你希望人们都与众不同，那你就是傻瓜。</p><p>相反，如果你不想让自己的希望落空，<strong>那就训练自己只渴望由你决定的东西，也就是你自己的判断、意见和价值观。除此之外，别无他法。</strong></p><p><u>如果你确实渴望一些不由你决定的东西，你就是把自己变成了他人或境遇的奴隶。</u></p><p><strong>自由掌握在你的手中：只渴望由你决定的东西，只厌恶不能使你变得更好的东西。</strong></p><h4 id="一个关于如何生活的比喻"><a href="#一个关于如何生活的比喻" class="headerlink" title="一个关于如何生活的比喻"></a>一个关于如何生活的比喻</h4><p>不要贪恋它们，拥有时就好好珍惜享受，失去时不要懊悔，因为这就是事物的本质。</p><h4 id="事实有多可怕取决于个人的判断"><a href="#事实有多可怕取决于个人的判断" class="headerlink" title="事实有多可怕取决于个人的判断"></a>事实有多可怕取决于个人的判断</h4><p><strong>你要时刻提醒并训练自己，平和应对逆境，牢记宇宙既不为你工作，也不与你作对。宇宙将永远运行下去，并且与你毫不相干。</strong></p><p>然而，当你与他人互动时，不要漠视他们的苦恼或悲伤。<u>实际上，他们只是需要你的安慰。</u>但不要错误地认为，他们对外在事物的判断时必要的或正确的。</p><h4 id="打好别人眼里的一手烂牌"><a href="#打好别人眼里的一手烂牌" class="headerlink" title="打好别人眼里的一手烂牌"></a>打好别人眼里的一手烂牌</h4><p>你玩过扑克吗？生活就是这样。你不能决定拿到什么样的牌，这主要取决于充满随机性的运气。但无论如何最重要的是你如何采取策略打好手中的牌。如果你不是个好万家，即使有一手好牌，你也可能会输；如果你有能力，也可以打好别人眼里的一手烂牌。</p><p>不论什么样的命运，决定自己是否要全力以赴，也是衡量一个人优秀与否的标准。</p><h4 id="不要迷信"><a href="#不要迷信" class="headerlink" title="不要迷信"></a>不要迷信</h4><p>不要迷信。不能用星座、纸牌、茶叶占卜或通灵术来预测你的未来。无论宇宙为你安排了什么，你都要做到尽力而为。所以，让一切顺其自然吧，你已做好准备。</p><h4 id="获取自由的方法"><a href="#获取自由的方法" class="headerlink" title="获取自由的方法"></a>获取自由的方法</h4><p><u>只参加那些你确保能赢的比赛。</u>唯一符合这种条件的比赛就是成为一个更好的人，别无其他。</p><p><strong>那些由我们决定的才是真正好的东西，如果这是对的，那么你根本无须嫉妒或效仿。</strong></p><p><strong>你不应该渴望成名、有钱有势，而应该渴望自由。</strong></p><h4 id="让自己和别人的印象之间保持距离"><a href="#让自己和别人的印象之间保持距离" class="headerlink" title="让自己和别人的印象之间保持距离"></a>让自己和别人的印象之间保持距离</h4><p><u>你说，有人侮辱了你，这其实是说你允许他们侮辱你。</u>他们的话只有在你自己认为是对你的侮辱时，才会变成侮辱。否则，只不过是愚人之言。</p><p><strong>因此，尽量不要被表象迷惑，而是按下暂停键，让自己和别人的印象之间保持距离。</strong>通过这种方式，你会发现更容易保持理性，以及自我支配的能力。</p><h4 id="时常冥想逆境"><a href="#时常冥想逆境" class="headerlink" title="时常冥想逆境"></a>时常冥想逆境</h4><p>如果你这样做了，你就不太可能心存卑劣的想法，也会摆脱对任何事物的过渡渴求。</p><h4 id="真心信奉哲学生活"><a href="#真心信奉哲学生活" class="headerlink" title="真心信奉哲学生活"></a>真心信奉哲学生活</h4><p><u>如果你真心信奉哲学生活，请准备好迎接别人无情的嘲讽。他们会说你胡思乱想，或者说你自以为这样高人一等。</u></p><p>如果你按照自己的哲学行事，人们最终都会看见，会欣赏，甚至可能钦佩你，尽管这并不是你追求哲学生活方式的初衷。我的初衷是让自己平静，变得更好。</p><p><u>如果你只说不做，当然，你肯定会再次沦为笑柄。</u></p><h4 id="当你感到名誉扫地时"><a href="#当你感到名誉扫地时" class="headerlink" title="当你感到名誉扫地时"></a>当你感到名誉扫地时</h4><p>名誉扫地是别人的想法，不是你能决定的。你所能决定的是：你是否做过不光彩的事？</p><ul><li>“但是我无法帮助家人和朋友。”<ul><li>谁告诉你这些事情是由你决定的？如果你自己都没有，肯定也无法给别人啊，所以你没有过错。</li></ul></li><li>“但我可以努力获得金钱和其他的物质资源，这样我就可以帮助我的家人与朋友。”<ul><li>你当然你可以，前提是保持你的尊严和正直。如果你能做到，那就尽力去做。但是，如果为了获得这些东西，你要舍弃真正对你有益的东西，那么你选择的道路将是最不明智的甚至是愚蠢的。</li></ul></li><li>“那么，我在社会上有什么地位呢？”<ul><li>只要能保持你的正直和美德即可。在你渴望为社会做出贡献时，如果失去了其中任何一个，你怎么能真正有用呢？</li></ul></li></ul><h4 id="获得邀请是有代价的"><a href="#获得邀请是有代价的" class="headerlink" title="获得邀请是有代价的"></a>获得邀请是有代价的</h4><p>无论谁获邀进入哪个晚宴或圈子，他都做了这样的事：阿谀奉承负责人，虚情假意地赞扬他们。所以你没被获邀，没有理由抱怨，你不愿意付出代价，还希望被接纳？</p><p>如果你不愿意付出，就不要到处酸溜溜地抱怨有人对你不公。这样既不合理又很愚蠢。你不是有自己的东西来代替邀请吗？因为你做到了这一点：保留自己的正直。</p><h4 id="思考自己的反应"><a href="#思考自己的反应" class="headerlink" title="思考自己的反应"></a>思考自己的反应</h4><p>你应该认真思考，自己对他人所遇问题的反应以及处理方式。当你真正遇到类似问题时，这种未雨绸缪的思考就能指导你做出正确的回应。</p><p>重点是要<strong>平静地接受已经发生的事情，因为它的发生是自然的，而且你有能力决定如何回应。悲伤可以理解，绝望只会适得其反。</strong></p><h4 id="世界本来如此"><a href="#世界本来如此" class="headerlink" title="世界本来如此"></a>世界本来如此</h4><p>世上没有什么是邪恶的，也没有什么是善良的。世界本来就如此。如何处理我们遇到的任何事情，由我们自己决定。</p><h4 id="你的思想被人操作-你会感到不安吗"><a href="#你的思想被人操作-你会感到不安吗" class="headerlink" title="你的思想被人操作 你会感到不安吗"></a>你的思想被人操作 你会感到不安吗</h4><p>假设有人将你的身体随意丢给他人，你肯定会不高兴，不是吗？那么，为什么当别人操作你的思想，为所欲为时，你反而没有感到不安呢？</p><h4 id="在确定目标前，衡量自己的本性和意向"><a href="#在确定目标前，衡量自己的本性和意向" class="headerlink" title="在确定目标前，衡量自己的本性和意向"></a>在确定目标前，衡量自己的本性和意向</h4><p><u>在开始做某件事之前，你要仔细考虑它会涉及什么，以及为了顺利完成此事，什么是必要的。如果做不到这些，那么你必然会给很多事情开个头，结果却注定一事无成。</u>（多消极想象，接受不好，全力以赴）</p><p><u>你必须在你的欲望和厌恶上下功夫，训练自己不要对别人生气，甚至与你的某些朋友和熟人保持距离，他们也许无益于你的训练。</u></p><p><strong>这是一种取舍，你必须决定走哪条路。</strong></p><p>只有你仔细考虑了以上所有，也只有到这时，你才能真正开始你的哲学之路。你会放弃很多，但你会获得自由和安宁。你将成为一位哲学家，而不只是一个凡夫俗子。</p><hr><blockquote><p>行动原则</p></blockquote><h3 id="2-3-行为训练：你将为公正对待他人做好准备"><a href="#2-3-行为训练：你将为公正对待他人做好准备" class="headerlink" title="2.3 行为训练：你将为公正对待他人做好准备"></a>2.3 行为训练：你将为公正对待他人做好准备</h3><h4 id="你是宇宙因果中微小但不可或缺的部分"><a href="#你是宇宙因果中微小但不可或缺的部分" class="headerlink" title="你是宇宙因果中微小但不可或缺的部分"></a>你是宇宙因果中微小但不可或缺的部分</h4><p>你应该尽最大的努力专注于那些能够由自己决定的事情：审慎的判断经过深思熟虑后得出的观点和认可的价值观，而不是别的。否则，你会在自己不可控的事情上持续失败，并时常为自己不可控的事情而苦恼。</p><p><strong>他们怨天尤人，就好像天气、市场或生活本身都取决于他们似的。</strong></p><p><u>请记住：如果你理解了事物的本质，并将其融入自己的意识，便会懂得生活常常事与愿违。但请不要以为其他人也持有相同的认知。请按照他们期望的方式与他们和谐相处；要有同情心，不要因为他们认知中存在错误的表象而责备他们。</u></p><h4 id="你必须决定自己是什么样的人"><a href="#你必须决定自己是什么样的人" class="headerlink" title="你必须决定自己是什么样的人"></a>你必须决定自己是什么样的人</h4><p><strong>你必须决定自己是什么样的人，然后成为那个人。</strong><u>不管你是在众目睽睽的公共场合，还是在家里。</u><strong>否则，你会对自己造成双重伤害：你将是一个伪君子，而且由于表里不一，你将很难进步。</strong></p><p>以下建议可以帮助你成为自己想成为的人：</p><ul><li>不要说得太多，多花时间听别人说话。你应该训练自己花费两倍的时间去倾听。当你说话时，要准确简洁地表达自己。尽量减少闲聊，比如那些关于体育、名人或食物的话题。<strong>这种话题不会提高你（或他人）的水准。</strong>最重要的是，不要在背后议论别人，不管是指责或表扬，还是拿他们和别人比较。如果可能的话，试着把谈话引向有意义的主题。<strong>但也要记住：你永远可以选择保持沉默。</strong></li><li>保持良好的幽默感，但不要笑得太多或太吵。你已不再是个孩子，要注意自己的尊严。</li><li>尽可能拒绝发誓。你需要保留对事物做出判断的选择权，而不是盲从他人随意强加给你的观点。</li><li>注意你结交的朋友。不要与那些无意完善自己的人交往。</li><li>不要沉溺于奢侈的享受。照顾好你的身体、健康和安全，尽量采取极简的生活方式。奢侈不仅没有必要，还极易使人堕落，让你远离美德。</li><li>假设他们告诉你，有人在你不知情的情况下批评你。预期为自己辩护，不如这么说：”哦，是的，但也是因为他不太了解，否则他会有更难听的话！”</li><li>当你去参加任何公共集会时，要记住保持自己的尊严，努力不让别人讨厌你。</li><li>当你在谈话时，注意不要过多地谈论自己。你真的并不像自己想象中那么迷人，别人对你也不感兴趣。</li><li>不要大声喧哗，也不要使用粗话。也许有人会无礼打断交谈。如果他这样做了，不要直接提出批评，但是你可以拒绝参加他们的行为。</li></ul><p><u>欲觅有德之友，先做有德之人。</u></p><h4 id="抵制表象，战胜欲望"><a href="#抵制表象，战胜欲望" class="headerlink" title="抵制表象，战胜欲望"></a>抵制表象，战胜欲望</h4><p>每当你强烈感觉到，某种你本不该沉溺其中的快乐会对你有好处，这时候，你要慢下来，别着急。让自己与表象保持距离，让你的支配能力来仔细考虑。</p><p><strong>尤其要思考，实际快乐的时间多么短暂，然后对比一下你遗憾的时间有多长。</strong></p><p>此外，再想想，当你抵制了表象，战胜了欲望，并保持了你的美德，你将体验到一种更特别的、更高尚的快乐。</p><h4 id="做你认为正确的事情"><a href="#做你认为正确的事情" class="headerlink" title="做你认为正确的事情"></a>做你认为正确的事情</h4><p>如果你认定做某件事是正确的，那就光明正大去做，即使别人并不赞成。他们的意见不由你决定。</p><p>但如果某件事情是错的，那就干脆不做，无论别人多想让你去做。他们的意见与你无关。</p><h4 id="平衡自己与他人的需要"><a href="#平衡自己与他人的需要" class="headerlink" title="平衡自己与他人的需要"></a>平衡自己与他人的需要</h4><p>“现在是白天” 与 “现在是黑夜” 连成一句话，这句话就自相矛盾。</p><p>在生活中的许多其他事情上，也要时常明智地考虑，平衡自己与他人的需求。</p><h4 id="选择角色"><a href="#选择角色" class="headerlink" title="选择角色"></a>选择角色</h4><p><strong>假设你决定扮演一个自己不适合，或无法胜任的角色，如果你是一名这样的演员，你就会毁了整部戏、观众、其他演员，还有你自己。</strong></p><p><u>一定不要忽视本来非常适合你的事业。</u></p><h4 id="切勿对思想的力量漫不经心"><a href="#切勿对思想的力量漫不经心" class="headerlink" title="切勿对思想的力量漫不经心"></a>切勿对思想的力量漫不经心</h4><p>你总是很谨慎，不伤到自己的身体。<strong>为什么对你的思想的支配能力如此漫不经心？你怎么能容忍它被各种垃圾冒犯玷污？你应该保护它免受外部的侵扰，并尽可能使它从内部得到强化。</strong></p><h4 id="衡量尺度"><a href="#衡量尺度" class="headerlink" title="衡量尺度"></a>衡量尺度</h4><p>你需要的是舒适耐用的鞋子。但是，一旦超过了这个标准，你就开始追求奢侈，变得毫无节制，你的脚将不再是鞋的衡量尺度。</p><h4 id="对任何人的歧视都不合理"><a href="#对任何人的歧视都不合理" class="headerlink" title="对任何人的歧视都不合理"></a>对任何人的歧视都不合理</h4><p>任何对他人的歧视都不合理，也不道德。</p><h4 id="适可而止"><a href="#适可而止" class="headerlink" title="适可而止"></a>适可而止</h4><p>所有都应适可而止。</p><p><u>你要把注意力聚焦于培养自己的支配能力上。作为一个人，良好的支配能力比其他一切都重要。</u></p><hr><blockquote><p>认同原则</p></blockquote><h3 id="2-4-好好思考的训练：提高对任何事的判断能力"><a href="#2-4-好好思考的训练：提高对任何事的判断能力" class="headerlink" title="2.4 好好思考的训练：提高对任何事的判断能力"></a>2.4 好好思考的训练：提高对任何事的判断能力</h3><h4 id="如果有人说你坏话"><a href="#如果有人说你坏话" class="headerlink" title="如果有人说你坏话"></a>如果有人说你坏话</h4><p>有人坚持认为9的平方根是4，他错了吗？当然错了，但这会影响平方根运算的声誉吗？不会的，运算结果不会改变，反而出错的人看起来像个傻瓜。</p><p>同样，如果有人说你的坏话或对你不好，除非你自己接受，否则你不该是那个受折磨的人。</p><h4 id="两个把手"><a href="#两个把手" class="headerlink" title="两个把手"></a>两个把手</h4><p><u>任何东西都有两个把手。但这两个把手并不对称：一个拎起来更容易，另一个拎起来相对较难。</u></p><p>你可以抓住那个”更容易的把手”来应对家人或亲密朋友冒犯的这种表象，记住他们是你的家人或朋友，你们一起长大，共享许多回忆，他们爱你，你也爱他们。</p><p>难道你不觉得这样会让事情变得更容易，从长远来看会变得更好吗？</p><h4 id="一些没有逻辑意义的世俗观念"><a href="#一些没有逻辑意义的世俗观念" class="headerlink" title="一些没有逻辑意义的世俗观念"></a>一些没有逻辑意义的世俗观念</h4><p>你既不是金钱，也不是演讲本身。你是个有决定能力的人。对你的评价，或者自我评价，只取决于这些决定的好坏。</p><h4 id="没有充足的信息就无法进行判断"><a href="#没有充足的信息就无法进行判断" class="headerlink" title="没有充足的信息就无法进行判断"></a>没有充足的信息就无法进行判断</h4><p>记住，你的目标应该是对人和事做出最好的判断，如果没有充足的信息和深思熟虑就草率臆断，你绝不可能得到最好的判断。<strong>多数情况下，直接放弃判断，也不失为上策。</strong></p><hr><blockquote><p>以哲学的方式生活</p></blockquote><h3 id="2-5-好好生活的训练：为实践生活的艺术做好准备"><a href="#2-5-好好生活的训练：为实践生活的艺术做好准备" class="headerlink" title="2.5 好好生活的训练：为实践生活的艺术做好准备"></a>2.5 好好生活的训练：为实践生活的艺术做好准备</h3><h4 id="千万不要以为自己睿智、开明"><a href="#千万不要以为自己睿智、开明" class="headerlink" title="千万不要以为自己睿智、开明"></a>千万不要以为自己睿智、开明</h4><p>千万不要以为自己睿智、开明。事实上，炫耀本身就标志着你既不睿智也不开明。比起目空一切、自以为是，请按照你学到的智慧行事吧，这样才会更加令人钦佩。</p><p>注意不要为了给人留下深刻印象，随口说一些自己都不理解的原则。</p><h4 id="践行生活艺术"><a href="#践行生活艺术" class="headerlink" title="践行生活艺术"></a>践行生活艺术</h4><p>践行生活艺术的人在审视自己时，既是为了寻求安慰，也是为了寻找伤害的根源。</p><p>要时刻提防自己的愚蠢行为，如同警惕准备随时攻击我们的潜伏的敌人。</p><h4 id="智慧需要日复一日的练习"><a href="#智慧需要日复一日的练习" class="headerlink" title="智慧需要日复一日的练习"></a>智慧需要日复一日的练习</h4><p><u>唯一值得骄傲的是你日复一日的练习。只有当你能真正实践这些戒律，而不只是阅读或谈论时，你才能称自己是一个认真实践生活艺术的人。这才是真正可以自豪的事！</u></p><h4 id="行动起来，做该做的事情"><a href="#行动起来，做该做的事情" class="headerlink" title="行动起来，做该做的事情"></a>行动起来，做该做的事情</h4><p>你应该把注意力转移到自身以及自我的进步上，不要浪费时间去草率懒散，因循怠惰，或者找借口朝三暮四。</p><hr><blockquote><p>爱比克泰德部分语录</p></blockquote><h4 id="爱比克泰德的四条建议"><a href="#爱比克泰德的四条建议" class="headerlink" title="爱比克泰德的四条建议"></a>爱比克泰德的四条建议</h4><ul><li>如何断定一笔钱是不是好的？钱本身是不会告诉你的，只有用理性-这种能够运用表象的能力（才能做到）</li><li><strong>无论何时，只要你认为外在的东西比自己的正直更重要，那么你就准备余生都为它们服务吧！</strong></li><li>就我自己而言，我希望死亡降临时，完全专注于关照自己的品格，我希望自己品格平静安详、自由自在、无拘无束。</li><li><strong>我们越重视自己无法掌控的事情，所能掌握的就越少。</strong></li></ul><hr><h2 id="第三部分-斯多葛哲学2-0"><a href="#第三部分-斯多葛哲学2-0" class="headerlink" title="第三部分 斯多葛哲学2.0"></a>第三部分 斯多葛哲学2.0</h2><p>逻辑学+物理学=伦理学</p><p>哲学：</p><ul><li>就像一个动物：逻辑学对应其骨骼和肌肉；伦理学对应其肉体；物理学对应其灵魂</li><li>就像一个鸡蛋：蛋壳是逻辑学；蛋白是伦理学；蛋黄是物理学</li><li>就像肥沃田地：逻辑学是环绕的栅栏；伦理学是庄稼；物理学是土壤或树木</li><li>或者是一个由理性包围并统治的城市</li></ul><p><u>如果你对世界如何运转的理解是激进和错误的，就很难过好一生。</u></p><hr><p>作者的观点：</p><ul><li>主题1：不必漠视外在</li><li>主题2：不必刻意培养对他人损失的漠不关心</li><li>主题3: 顺应自然的生活</li><li>主题4: 不准确的科学还是形而上学</li><li>主题5: 上帝还是原子</li><li>主题6: 习俗既不普遍，也并非永恒</li><li>主题7: 社会正义</li></ul></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E5%A3%B0%E5%85%89/">声光</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E9%98%85%E8%AF%BB/">阅读</category>
      
      <category domain="https://www.ninojay.top/tags/%E6%91%98%E6%8A%84/">摘抄</category>
      
      <category domain="https://www.ninojay.top/tags/%E5%93%B2%E5%AD%A6/">哲学</category>
      
      
      <comments>https://www.ninojay.top/2025/this-philosopher-saved-me/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>无聊人</title>
      <link>https://www.ninojay.top/2025/i-am-boring/</link>
      <guid>https://www.ninojay.top/2025/i-am-boring/</guid>
      <pubDate>Thu, 24 Apr 2025 16:12:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width="330" height="86" src="//music.163.com/outchain/player?type=2&amp;id=507364050&amp;auto=1&amp;height=66"></iframe><p>作词 : 裴育<br>作曲 : 华晨宇<br>编曲 : 郑楠<br>制作人 : 郑楠  </p><p>我嚼着最贵的晚餐<br>可惜我无所谓应对这账单<br>左右逢源不是个好习惯<br>旁若无人要不要试试看<br>好不容易脱下天价的衣衫<br>不如说我卸下拖累的金砖<br>是人是鬼一眼就看的穿<br>不用非要学贵族的装扮  </p><p>太多废话都无关感情<br>太多动作都始于环境<br>就像青春期的小孩会被大人酷刑<br>理由是 逼迫15岁的心灵<br>比成人要理性<br>那些道理我们从小就听<br>长大后不得不听命运的命<br>不是 道理多难履行<br>而是现实它太任性  </p><p>多少人能看懂人心的空镜<br>只不过活着活着只活出了年龄<br>我攥着别人遥不可及的东西<br>一边自嘲一边冷眼那些肮脏的事情  </p><p>如果真话<br>搅局假话不如闭嘴来的清静<br>鄙视那含蓄的交易<br>都像强心针样的陷阱  </p><p>让人 无时无刻高速运转<br>该怎么保持清醒<br>趁你们还热爱浑水摸鱼的游戏<br>一本正经  </p><p>披着羊皮创造你们的使命<br>当真的傻子乐此不疲在消耗着热情  </p><p>装傻的戏子<br>你可赚到了吐沫飞溅的缓刑<br>怕被拆穿还没被拆穿<br>本就是你要的刺激  </p><p>I’m boring 我只想一个人不说话<br>I’m boring 我只想一个人不用笑  </p><p>我很想望着一闪一闪发光的星星<br>像其他同学一样唱着亮晶晶<br>可我的眼前饱满<br>来自虚伪世界的轰鸣<br>我还有很多事做很多歌听<br>可我就想窝在沙发做些无聊的点评  </p><p>朋友<br>在醉酒后咒骂世界不公平<br>滑稽的排列组合让我想起了曾经<br>那时候爸妈总算分开的场景<br>和我高举成绩单强颜镇定的表情<br>老爸你揣着银子<br>到底是应酬还是旅行  </p><p>闹吧<br>我总算找到适者生存的途径<br>总有人说的好听做起来像个逃兵<br>过河拆桥 真的好吗<br>但凡是活着就得习惯<br>这附带悬念的案情<br>我大脑都是各种嘴脸在抢镜  </p><p>行吧<br>我看够了自私的目的 生硬的交情<br>我听够了善意的欺瞒 辩驳的矫情<br>所谓的个性 并非教养的不明<br>谁来解释下为什么好人卡那么流行<br>得到它 等于判定了人性  </p><p>I’m boring 我只想一个人不说话<br>I’m boring 我只想一个人不用笑  </p><p>我嚼着最贵的晚餐<br>可惜我无所谓应对这账单<br>左右逢源不是个好习惯<br>旁若无人要不要试试看</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E5%A3%B0%E5%85%89/">声光</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E6%AD%8C%E6%9B%B2/">歌曲</category>
      
      
      <comments>https://www.ninojay.top/2025/i-am-boring/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>《牧羊少年奇幻之旅》-（巴西）保罗·柯艾略</title>
      <link>https://www.ninojay.top/2025/o-alquimista/</link>
      <guid>https://www.ninojay.top/2025/o-alquimista/</guid>
      <pubDate>Sat, 15 Feb 2025 14:15:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h2 id="之感"><a href="#之感" class="headerlink" title="之感"></a>之感</h2><p>2025年的第一篇文章，我总是不知道可以描述些什么，一拖再拖。除了懒癌之外，考虑到使用A4主题的人逐渐变多，总觉得过多暴露自己不成熟的小想法，并不是一件多么光彩的事。</p><p>可最终还是从躺了一天的床上，奔向洗手间洗了个澡，坐在了电脑前，敲下这些字。</p><p>是什么促使我做这些呢？我想就是上个月看的这本书《牧羊少年奇幻之旅》所说的，不要欺骗自己的心，学会去聆听自己的这颗心。我的这颗心了解我的灵魂，比我更能感知我想要做的事情。心总是被我忽略，所以心总是不安分，通过焦虑地、不规则地跳动，为我着急。必须学会倾听这颗心。</p><p><code>心了解所有事物，因为心来自世界之魂，并且总有一天会返回那里。</code></p><hr><p>我还是喜欢文艺这件事。</p><p>去年阅读了40余本书籍（含十几本漫画），60余部影视。把一部分经典都读了，看了。</p><p>又了解了许多事，即使能深刻记住的不多。</p><p>我想今年看得更投入，看得更丰富，看得更多。</p><p>这件事不用谁逼我，我由衷地热爱。</p><h2 id="摘抄"><a href="#摘抄" class="headerlink" title="摘抄"></a>摘抄</h2><ul><li>在那一带，他认识很多人，这正是他喜欢云游四方的原因，因为总能结交新朋友，而且不必天天跟他们低头不见抬头见。</li><li><strong>当总是面对同样的面孔，像在神学院里那样，就会渐渐让那些人成为生活的一部分。而由于他们是你生活的一部分，当然就想改变你的生活。如果你不像他们所期望的那样，他们就会不高兴。因为，对于该怎样生活，所有人都有固定的观念。但是他们对于自己该怎样生活却一头雾水，就像那个给人解梦，却不会把梦变成现实的老妇人。</strong></li><li>“什么是世上最大的谎言？”“在人生的某个时候，我们失去了对自己生活的掌控，命运主宰了我们的人生。这就是世上最大的谎言。”</li><li>但是，当人与人交谈的时候，有些人说的话会让我们无所适从，不知该怎么把谈话继续下去。</li><li>天命就是你一直期望去做的事情。人一旦步入青年时期，就知道什么是自己的天命了。在人生的这个阶段，一切都那么明朗，没有做不到的事情。人们敢于梦想，期待完成他们一生中喜欢做的一切事情。但是，随着时光的流逝，一股神秘的力量开始企图证明，根本不可能实现天命。</li><li>那是表面看来有害无益的力量，但实际上它却在教你如何完成自己的天命，培养你的精神和毅力。因为在这个星球上，存在一个伟大的真理：不论你是谁，不论你做什么，当你渴望得到某样东西时，应当敢于去做，因为这愿望来自宇宙的灵魂。那就是你在世间的使命。</li><li>完成自己的天命师人类无可推辞的义务。万物皆为一物。当你想要某种东西时，整个宇宙会合力助你实现愿望。</li><li><strong>那个卖爆米花的人小时候也总想出去游荡，但却选择了买一辆制作爆米花的机器，年复一年地攒钱。等到年老的时候，他将去非洲待上一个月。他从来就不明白，人们总有条件去实现自己的梦想。</strong></li><li><strong>如果东西还没到手，你就先许诺于人，那你就不会积极去争取了</strong></li></ul><hr><ul><li><p>有的时候最好让事情保持原样，想到这儿，男孩便没有开口。如果他说出来，这个卖爆米花的将一连三天考虑是否舍弃现有的一切，然而，他对推着小车卖爆米花早就习以为常了。</p></li><li><p>地中海东风越刮越猛。面对羊群和宝藏，我现在进退两难，<strong>男孩想。在已经习以为常的东西和意欲得到的东西之间，他必须做出抉择。</strong></p></li><li><p>实际上，每天都一成不变，是因为人们已经失去了对美好事物的敏锐感觉。</p></li><li><p><strong>我离开了我的父亲，我的母亲，还有家乡的城堡。他们都已经习惯了，我自己也习惯了。羊群没有我，也会习惯的。男孩想。</strong></p></li><li><p>他意识到，他也可以像风一样自由。什么也不能阻止他，除了他自己。羊群、商人的女儿和安达卢西亚的大地，只不过是他在达成天命的途中留下的足迹。</p></li><li><p>第一次玩纸牌，多半会赢。这就是新手的运气。为什么？因为生活希望你去实现自己的天命。</p></li><li><p><strong>你提出问题时永远要客观。</strong></p></li><li><p>不要忘了万物皆为一物，不要忘了各种预兆的表现方式，不要忘了去完成你的天命。</p></li><li><p>幸福的秘密就在于，既要看到世上的奇珍异宝，又要永远不忘记勺里的那两滴油。</p></li><li><p>牧羊人喜欢四处游荡，但是永远不会忘记他的羊群。</p></li><li><p>他身旁那几只羊由于害怕新主人，一直骚动不安，频繁的变化刺激了它们的神经。它们想要的仅仅是水和食物。</p></li><li><p><strong>我和别人没什么两样，总是以理想的眼光看待世界，以为事情会按理想的方式发展，而不会用现实的眼光看待世界，看不到事情真相。他想。</strong></p></li><li><p>老人说过，问问题要清楚明白，因为宝石只对知道自己欲求的人起作用。</p></li></ul><hr><ul><li><p>即便永远到不了金字塔，他也比任何一个他认识的牧羊人走得远。</p></li><li><p>他突然觉得，被骗之后，他可以像个倒霉的受害者一样看待世界，也可以像个寻宝的冒险家那样观察世界。</p></li><li><p>比如，要知道一个人是在接近还是远离其天命，只需观察一下他就行。</p></li><li><p>“因为那些水晶脏了。而无论是你还是我，都需要清楚头脑里的坏念头。”</p></li><li><p>你与我不同，因为你希望实现你的梦想，而我只是想保有去麦加的梦想。</p></li><li><p>生活的河流是无法阻挡的。</p></li><li><p>但是你知道，我不会去麦加，就像你知道自己不会回去买羊一样。</p></li><li><p>男孩没有跟水晶店老板告别就走了。</p></li><li><p>一旦做出决定，实际上便坠入了一股巨大的洪流之中，这洪流会把人带到一个你做决定时从来没想到的地方去。</p></li><li><p>每当观看泱泱大海或熊熊烈焰的时候，他能一连几小时保持沉默，脑子里什么都不想，完全沉浸在自然的浩瀚和威力之中。</p></li><li><p>男孩明白了，预感就是灵魂飞快地投入生命的洪流当中，世上所有人的经历都在这洪流中联系在一起。我们因此能无所不知，无所不晓，因为一切均已命中注定。</p></li><li><p>书是不必要的负担，尽管男孩曾养成一种近乎迷信的观点：以书为友，开卷有益。</p></li></ul><hr><ul><li><p><strong>我们担心失去的，只是那些我们现在拥有的东西：我们的生命，或我们的作物。但是，当我们明白了生命的历程与世界的历程都是由同一只手写就的时候，这种担心就会消失。</strong></p></li><li><p>不过你应该明白，在水晶店里，就连那些水晶杯都在为你的成功加油。</p></li><li><p>商队与沙漠讲同一种语言，所以沙漠允许商队通过。沙漠将检验商队走出的每一步，看看商队是否与它完全协调一致。如果协调一致，商队必将到达绿洲。</p></li><li><p>这些事情都非常简单，简单得可以写在一块翡翠板上。</p></li><li><p><strong>每个人都有自己的学习方式，他在心中反复对自己说。他的方式不属于我，我的方式也不属于他。但是我们俩都在追寻各自的天命，为此我尊重他。</strong></p></li><li><p><strong>因为我既不生活在过去，也不生活在未来，我只有现在，它才是我感兴趣的。如果你能永远停留在现在，那你将是最幸福的人。</strong></p></li><li><p>有朝一日，这个清晨将成为一个回忆，仅此而已。但是现在，清晨是正在经历的这一刻，是那赶驼人所说的节日。</p></li><li><p>也许真主创造沙漠的目的，就是为了让人们见到椰枣树的时候能开心地笑，他想。</p></li><li><p>这些事情必须以这种方式传授，因为它们是由纯粹的生活构成的，而这种生活用图画和文字很难捕捉得到。</p></li><li><p>人们由于迷恋图画和文字，忘记了宇宙的语言。</p></li></ul><hr><ul><li><p>离自己的梦想越近，事情就变得越困难。</p></li><li><p>因此，他不能莽撞行事，不能失去耐心。假如做不到这一点，最后他将看不到上帝在他前进的道路上布下的预兆。</p></li><li><p><strong>不要失去耐心，男孩想，就像赶驼人所说的，该吃饭时吃饭，该走路时走路。</strong></p></li><li><p>他明白了早在知道她的存在之前，他已经爱上了她，并且明白了凭他对少女的爱，就能找到世上所有的宝藏。</p></li><li><p>“马克图布。”她最后说，“如果我是你天命的一部分，总有一天你会回来。”</p></li><li><p>“作为沙漠中的女人，我为此而骄傲。希望我的男人像移动沙丘的风一样自由。也希望能在云彩中，动物身上和泉水里看到我的男人。”</p></li><li><p>实际上，并不是事物本身在暗示什么，而是观察事物的人发现了探究世界之魂的方法。</p></li><li><p><strong>自从离开家乡，他每一天都过得很充实。</strong></p></li><li><p><strong>骑士继续说：“你必须热爱沙漠，但是绝不要完全相信沙漠。因为沙漠对所有人都是个考验：考验你迈出的每一步，杀死心猿意马的人。”</strong></p></li><li><p><strong>“入口的东西并不邪恶。”炼金术师说，“邪恶的是从口里出来的东西。”</strong></p></li><li><p>你的心到哪儿，你的宝藏就在哪儿。你必须找到你的宝藏，否则你在途中发现的一切便全都失去了意义。</p></li><li><p>你将是绿洲的顾问。第二年你会忘记那一批财宝。预兆开始不断地提示你这一点，而你则极力对那些预兆视而不见。第三年，预兆会继续向你提示你财宝和你的天命。促使你留在绿洲的原因，是你害怕自己再也不会回来。到这时，预兆将告诉你，你的财宝将永远被埋在地下了。第四年，预兆将会放弃你，因为你不再理会它们。</p></li><li><p>你讲永远不明白，爱情从来不会阻止一个男人去追寻天命。如果会阻止，一定因为那不是真正的爱情，不是用宇宙语言表达的爱情。</p></li><li><p>“我是沙漠中的女人。”她说，将脸扭到一边，“但我毕竟是个女人。”</p></li><li><p>不一会儿，太阳便露出了笑脸。白天到来时，她将走出帐篷，去做多年来她一直做的事，然而一切都已改变。</p></li></ul><hr><ul><li><p>如果你碰到的是用纯净物质制成的东西，它将永远不会腐朽，而你总有一天会回来。如果你碰到的仅仅是像行星爆炸那样一闪即逝的东西，那么返回的时候你将两手空空。不过你毕竟还是见到了爆炸时的光芒，仅凭这一点也值了。</p></li><li><p>“要想学到本事，只有一种方式，”炼金术师回答说，“那就是行动。你需要学会的一切，这次旅行都教给你了。只缺少一样。”</p></li><li><p>“他们一门心思追求黄金，寻求天命中的财宝，却不愿履行自己的天命。”炼金术师回答。</p></li><li><p>“倾听你的声音。心了解所有事物，因为心来自世界之魂，并且总有一天会返回那里。”</p></li><li><p>但它永远平静不下来，即便男孩不和炼金术师讲话，心照样不会平静。</p></li><li><p><strong>你永远不能让它沉默。即使你佯装不听它的话，它还是会在你的胸膛里，反复倾诉它对生活和世界的看法。</strong></p></li><li><p><strong>如果你对自己的心非常了解，它就永远打击不到你。因为你将了解它的梦想和愿望，并知道怎样应对。谁也不能逃避自己的心，所以最好倾听心在说什么。只有这样，你才永远不会遭受意外的打击。</strong></p></li><li><p><strong>“你告诉它，害怕遭受痛苦比遭受痛苦本身还要糟糕。还要告诉它，没有一颗心在追求梦想的时候感到痛苦，因为追寻过程中的每一刻，都与上帝和永恒同在。”</strong></p></li><li><p>人们把世界看作一个威胁，正因如此，世界才变成了一个威胁。</p></li><li><p><strong>在梦想实现之前，世界之魂永远会对寻梦者途中所学到的一切进行检验。这是一个大多数人可能会放弃寻梦的时刻。</strong></p></li><li><p><strong>每个人的寻梦过程都是以‘新手的运气’为开端，又总是以‘对远征者的考验’收尾。</strong></p></li><li><p>夜色之浓，莫过于黎明前的黑暗。</p></li><li><p>当巨大的财宝就在我们眼前时，我们却从来都察觉不到。你知道为什么吗？因为人们不相信财宝存在。</p></li><li><p><strong>男孩和他的成了好朋友，彼此都不违背对方的意愿。</strong></p></li><li><p><strong>“心只帮助那些追随天命的人。不过，更多的是帮助小孩、醉汉和老人。”</strong></p></li></ul><hr><ul><li><p>谁若干涉其他事物的天命，谁就永远发现不了自己的天命。</p></li><li><p>大海仍旧在这只贝壳里，因为这就是它的天命。大海永远不会离开贝壳，直到沙漠重新被海水淹没。</p></li><li><p>“不要让他们察觉出你的恐惧。”炼金术师说，“他们都是勇敢的人，最鄙视胆小鬼。”</p></li><li><p><strong>“如果你必死无疑，它们对你又有什么用处呢？”炼金术师回答说，“你的钱救了你，还能多活三天。钱能用来推迟死期，这种事并不多见。”</strong></p></li><li><p><strong>“你不要陷入绝望而不能自拔。”炼金术师用一种异常柔和的声音说道，“这样会使你无法和自己的心沟通。”</strong></p></li><li><p><strong>“追寻天命的人，知道自己需要掌握的一切。只有一样东西令梦想无法成真，那就是担心失败。”</strong></p></li><li><p><strong>“你将在追寻天命的过程中死去。这也比大多数普通人的死要好得多，因为他们根本不知道天命存在。但是，你不必担心，一般来说，死会使人更了解生。”</strong></p></li><li><p>我离地球非常遥远，但从我所在的位置，我学会了爱。我知道，如果向地球再靠近一点，地球上的一切都将死去，世界之魂也将不复存在。所以我们才互相遥望，互相关爱。我给地球生命和温暖，地球给了我生存下去的理由。</p></li><li><p>“我得到的报酬远胜于我的慷慨。”修士回答。“永远别再这么说。生活会听在耳内，下一次就会少给你。”</p></li><li><p><strong>所有发生过一次的事，可能永远不会再发生，但所有发生过两次的事，肯定还会发生第三次。</strong></p></li><li><p>说到底，月亮照耀的是沙漠的静寂和寻宝者们的足迹。</p></li><li><p>男孩在前去追寻天命的路途中，学会了必须要学的一切，也经历了梦想经历的一切。</p></li><li><p>无论何人，哪怕堆一辈子石头，也无法在自家后院堆起一座金字塔，他想。</p></li><li><p>“如果你必死无疑，钱对你又有什么用处呢？钱能用来使人免于一死，这种事并不多见。”</p></li><li><p>“不能。”他听见风对他说，“如果我事先告诉你，你就看不到金字塔了。它们很壮美，不是吗？”</p></li><li><p>生活对追随自己天命的人真的很慷慨，男孩想。</p></li></ul></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E5%A3%B0%E5%85%89/">声光</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E9%98%85%E8%AF%BB/">阅读</category>
      
      <category domain="https://www.ninojay.top/tags/%E5%B0%8F%E8%AF%B4/">小说</category>
      
      <category domain="https://www.ninojay.top/tags/%E6%91%98%E6%8A%84/">摘抄</category>
      
      
      <comments>https://www.ninojay.top/2025/o-alquimista/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>2025所有碎片</title>
      <link>https://www.ninojay.top/fragments/2026/</link>
      <guid>https://www.ninojay.top/fragments/2026/</guid>
      <pubDate>Wed, 01 Jan 2025 06:31:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><br></div>]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/fragments/2026/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>2025所有碎片</title>
      <link>https://www.ninojay.top/fragments/2025/</link>
      <guid>https://www.ninojay.top/fragments/2025/</guid>
      <pubDate>Wed, 01 Jan 2025 06:31:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><br><div style="text-align: left"><h6 id="2025-11-11-00-36-冬-📑"><a href="#2025-11-11-00-36-冬-📑" class="headerlink" title="2025-11-11 00:36 冬 📑"></a>2025-11-11 00:36 冬 📑</h6></div><div class="circle-black"><p>光标在不会有人注意的地方闪烁，在向着只有我知道的方向移动。同我脑里想的事务一样，行为也在背着大家，做自己真正想做的事。瞒着周围的人，思考自己真正关注的事。</p></div><br><div style="text-align: left"><h6 id="2025-08-10-21-52-秋-💊"><a href="#2025-08-10-21-52-秋-💊" class="headerlink" title="2025-08-10 21:52 秋 💊"></a>2025-08-10 21:52 秋 💊</h6></div><div class="circle-blue"><p>我现在好像没有什么烦恼，也没有什么希望。</p></div><br><div style="text-align: left"><h6 id="2025-03-08-16-25-春-☀️"><a href="#2025-03-08-16-25-春-☀️" class="headerlink" title="2025-03-08 16:25 春 ☀️"></a>2025-03-08 16:25 春 ☀️</h6></div><div class="circle-black"><p>前天凌晨两点，我读完了《罪与罚》。</p><p>去年到此刻，我读完了陀思妥耶夫斯基的《涅朵奇卡》、《地下室手记》、《卡拉马佐夫兄弟》、《罪与罚》。</p><p>最容易想起的人物，是阿廖沙的二哥，伊凡，整个头脑里的想法描述出来后，他说：“所以，做什么都可以。”  阿廖沙听到，不知道该怎么反驳，但是直觉和本能的善良让他知道必须反驳哥哥。他的哥哥这样生活下去，很痛苦，行尸走肉。</p><p>…</p><hr><p>听说读完陀，会成为另外一个人。</p><p>我有什么变化吗。</p><p>该开始看看半导体的书籍了。</p></div><br><div style="text-align: left"><h6 id="2025-02-15-22-08-春-🏋️"><a href="#2025-02-15-22-08-春-🏋️" class="headerlink" title="2025-02-15 22:08 春 🏋️"></a>2025-02-15 22:08 春 🏋️</h6></div><div class="circle-pink"><p>最近在踏实地上班。和所有人都这么说。  </p><p>其实内心没什么变化，还是爱说反话、一半的话，让关心我的人放心。<br>或者还是一种逞能。明确无人能给予帮助。每个人都有要忙的事不是吗。</p><p>踏实，是我给自己的一次全新训练。</p><p>训练踏实地生活中，积极地移动。</p><p>不管如何，“总归还是真正积极了许多。”</p><p>因为我开始这么说，所以他们也都这么说。</p></div><br><div style="text-align: left"><h6 id="2025-01-01-14-33-冬-🏠"><a href="#2025-01-01-14-33-冬-🏠" class="headerlink" title="2025-01-01 14:33 冬 🏠"></a>2025-01-01 14:33 冬 🏠</h6></div><div class="circle-black"><p>扔出一点旧心情，<br>洒在新年的土壤里。</p></div></div>]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/fragments/2025/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>2024的结束</title>
      <link>https://www.ninojay.top/2024/the-end-of-2024/</link>
      <guid>https://www.ninojay.top/2024/the-end-of-2024/</guid>
      <pubDate>Mon, 30 Dec 2024 16:00:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>2024年是我到这个星球25年来，经历最丰富的一年。</p><p>该怎么去做一个描述呢。打开去年的总结，对2024的期待，只有一句话：“直面恐惧，继续焦虑。”</p><p>我想我无意识地做到了。</p><p>人生是否有注定的命运？在已发生的事情上寻找一定的因果，未发生的事情如何发展，或多或少取决于当下决策行动的每一步。发生与未发生，之间似乎有一样东西始终在起着作用。那么稍微抬高一点视野，依稀辨别出冥冥中的一条线联结了我们的过去和未来。</p><p>所以，如果你问我人生究竟是否命中注定？</p><p>我想这么回答你：“命运一定已经注定，可我同时坚信自己的力量能够克服被动的生命。我相信能够凭借这份意志违抗消极的影响。这份相信同样也是命中注定。待我真的实现那天，你们会相信我的命中注定。你们会相信我注定违抗，到达这里，创造这份命运。我的命运终被我注定，我也注定服从了命运。”</p><p>你问我如果最终实现不了呢？</p><p>那么我会反问你：“如果你真的相信命中注定，为何那么在乎注定的结局？如果你完全不相信命中注定，更不会在乎那个结局。更何况那个结局不过是所有生命都会经历的事情——死亡。而你死在了自己选择的路上。现在我想问你，死在自己选择的路上，闭眼沉眠那一刻，你会后悔吗？”</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%80%9D%E8%BE%A8/">思辨</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      
      <comments>https://www.ninojay.top/2024/the-end-of-2024/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>真诚并不是必杀技，而是自杀技</title>
      <link>https://www.ninojay.top/2024/recent-feeling/</link>
      <guid>https://www.ninojay.top/2024/recent-feeling/</guid>
      <pubDate>Thu, 14 Nov 2024 15:22:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width="330" height="86" src="//music.163.com/outchain/player?type=2&amp;id=1331826172&amp;auto=1&amp;height=66"></iframe><p>很久很久很久，没有写一点走心的东西了。</p><p>此时的我很失落，一颗真诚的心无处安放，思索真诚在我身上的真实含义，思索真诚给我带来的利与弊。</p><p>从最近的一些失败经验来看，真诚，呵呵，好像并不那么重要。</p><p><strong>我得出一个结论：在这个破社会中的大部分场所，真诚并不是必杀技，而是自杀技。</strong>你就是得学会说谎，你就是得学会讨好，你就是得懂如何隐藏。社会当中，没人在乎你的真诚，只在乎你是否让他觉得，注意，只是让他，只是让他觉得，管用，就算是骗的也没关系。你就是得学会说别人想听的话，至于你到底是一个怎么样的人，他们嘴上说想了解，实际上也只想看到他们想看到的。<strong>注意，这就是最巧妙的地方，你只能透露他们在乎的方面，这就是他们眼中的诚实，尽管在你眼中归根到底仍然是一种欺骗。</strong></p><p>不太想写明发生了什么事，思绪想到哪里就写到哪里吧。<u><strong>真诚，挺没劲的。</strong></u></p><hr><p>想到的第一件事，是关于付航在《喜剧之王单口季》夺冠。</p><p>他在脱口秀中传达出低落过往中曾蕴含的温暖，父爱母爱，朋友的爱，宠物的爱。</p><p>他向一起玩游戏的朋友抱怨：“兄弟，我人生之中烦恼已经太多了，我不想玩游戏，游戏里还那么多烦恼。“</p><p>他的朋友说：”兄弟，那不是你生活里的烦恼，那是你生活里的内容。“</p><p>付航：“是呀，要是人生一马平川，那还有什么意思呢！有什么意思！”</p><p>视频里的付航目光炯炯，在舞台上，他相信他说的话的力量。我能被付航感动，可是感动之余，留在我心里的是一条长长的走廊，一头黑暗，一头光明，过道两旁全是冷眼的目光，付航在迈步，低着头，从始至终，身体从小到大，低着头。</p><p>终于走完了这条长廊，他终于有资格挺直腰板，聚光灯下回头看，那些冷眼的目光开始仰视着他，同时也凝视下一个黑暗口垂头的年轻人。</p><p>什么都不会改变，人们几千年来就是这样。</p><p>听着理想主义过往感动欣喜欢乐，听完生活中继续充当冷眼者的角色。</p><p>总是这样，一面向往理想主义，一面恐惧理想主义，一面诋毁理想主义。</p><p>那到底要给这些担惊受怕的观众们说些什么呢。</p><p>好像没关系，还可以借此传达给和我一样被冷落过的人，就说这些内容吧，你们看看我呀，我相信我说的话。</p><p>还是有机会的，你们听听我说的话呀，他们虽然一直在冷眼，但是我们还是有机会从周围获得温暖的。</p><p>我们一起让自己快乐吧。</p><hr><p>想到的第二件事，是关于我和《那不勒斯四部曲》2019年至2024年的结束。</p><p>正是在昨天，我看完了《我的天才女友》第四季最终季的最后一集。</p><p><strong>毫不夸张，我觉得自己的二十多岁是被《那不勒斯四部曲》影响、雕琢、打磨、抛光。</strong></p><p>在大概2019年某个夜晚大学宿舍床上，我在被窝里想找一部外语片看，无意看了《我的天才女友》第一季第一集。意大利那不勒斯及故事从此留在我的心灵中。</p><p>第一季看完，就迎来了2020年疫情之下找实习的日子。我在家一边找实习、准备面试、进行面试，同时在看《我的天才女友》第二季。</p><p>看完第二季，就去找到原著《那不勒斯四部曲》，继续一边面试，一边了解那不勒斯。在我看完4本原著过后不久，我就拿到了阿里的实习机会。我现在还记得，阿里的第五轮面试，面试官问我最近看了什么书，我向他细致地描述了《那不勒斯四部曲》的故事。</p><p>操，写到这里，写不下去了。</p><p>我此时因为最近的经历很难过，很难过，很难过。</p><p>《那不勒斯四部曲》有两个女主人公，莉拉和埃莲娜。</p><p>莉拉一生都在试图看破街区的真相，做自己认为正确的事。我可以说她是一个理想主义者，她一直被大家认为具有意想不到的力量，敢于做很多不敢想的事情，始终关心整个那不勒斯的人们，<strong>可她最后选择了消失</strong>。</p><p>埃莲娜一直被莉拉影响，性格更偏向顺从，得益于稍好的家庭氛围支持和莉拉的友谊，离开了那不勒斯成为文学小说家，同样一生也在经历并迷失并克服并找回那不勒斯留下的粗俗。</p><p>我想说莉拉。我想，前些年我真正从莉拉身上学到的只有两个字：“消失”。</p><p>能去做自己认为正确的事，且是善良的事，好像是我们每个人的追求，可为什么实际生活中，处处是他妈的阻挠。太难了，太难了，太难了。莉拉，不是吗。你已经足够努力了，可真正认识到你的好的人们，总是后知后觉，一开始甚至还那么那么少的认可，可你依然在取得成果过后善待所有人。</p><p><strong>最后呢，你不还是选择消失了吗。</strong></p><p>所有积极的努力，最后还是导致了自己的消失是吗。</p><p>好像，还是不如学着变得更自私一点。</p><p>咱们就别那么真诚了好吗。</p><p>没人在乎。</p><p>我们的真诚，是会吓到他们的。</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/">情绪</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      
      <comments>https://www.ninojay.top/2024/recent-feeling/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>2024年8月底至9月写过的无聊的诗</title>
      <link>https://www.ninojay.top/2024/recently-written-poems-6/</link>
      <guid>https://www.ninojay.top/2024/recently-written-poems-6/</guid>
      <pubDate>Mon, 30 Sep 2024 04:00:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h5 id="河流"><a href="#河流" class="headerlink" title="河流"></a>河流</h5><p>我心中有一片海洋，<br>义无反顾流向河流。<br>如炬目光捉摸不透，<br>声嘶力竭流向河流。</p><p>尘世最为盲目狂热，<br>肃穆庄重神性相赠。<br>海洋不曾驻足领受，<br>海洋不曾为谁停留。</p><p>人们赞美落空，激起<br>崇拜的波涛喧嚣更甚。</p><p>“河流！河流！河流！”<br>有人说，听见海洋重复嘶吼。<br>有人说，海洋力图吞并河流。<br>没有人说，海洋曾经是河流。</p><p>我心中有一片海洋，<br>一生只顾呢喃河流。</p><p>浮屠殉道，<br>妄念执拗。<br>万物在唱。</p><br><h5 id="夜"><a href="#夜" class="headerlink" title="夜"></a>夜</h5><p>音符，在旋转<br>在鼓动，窃喜<br>土壤吞噬花丛<br>灰白塞满江海<br>如梦易逝地<br>享受虚无</p><p>威胁病态的定义<br>挥舞谎言的旗帜<br>踏上遗弃的节奏<br>奋起为折磨正名<br>如痴如醉地<br>享受后退</p><p>听从夜引导身体</p><p>很容易看到一对<br>一双无力的援手<br>给予薄弱的支撑</p><p>和寂静融为一体</p><p>在虚无中，享受后退<br>在后退中，享受虚无</p><p>尽情奔向、尽兴歌唱</p><p>夜在弥漫、夜的豪迈<br>夜的凶猛 、夜在狂笑</p><br><h5 id="痛快"><a href="#痛快" class="headerlink" title="痛快"></a>痛快</h5><p>湛蓝在向大地压下来</p><p>紫罗兰在房间里凋谢<br>一股尸身的香味</p><p>我踩在沙上，不被了解<br>在海边，或沙漠</p><p>浮现于暧昧中的爱情<br>跟随季节变更的婚姻</p><p>清醒的诗人，早已想通<br>浓烈，是一种恶臭</p><p>无旁人的景色<br>去做些不被允许的事<br>是自然的，是自由的</p><p>痛苦混合快乐，病态又壮硕<br>滴酒未沾，反驳前一秒自我<br>这种状态是好的、是糟糕的、<br>是痛快的、是痛快的</p><p>衣服要干净<br>精神，不必须<br>是痛快的</p><br><h5 id="黄月"><a href="#黄月" class="headerlink" title="黄月"></a>黄月</h5><p>黄月借云层朦胧<br>笑我浑浊不堪</p><p>下一片令牌：<br>头抬起来<br>心低下去</p><p>许久</p><p>夜不发一言<br>星亦沉默<br>黄月生气<br>我倒欢喜</p><br></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/">情绪</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      <category domain="https://www.ninojay.top/tags/%E8%AF%97/">诗</category>
      
      
      <comments>https://www.ninojay.top/2024/recently-written-poems-6/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>简历相关</title>
      <link>https://www.ninojay.top/programmer/resume/</link>
      <guid>https://www.ninojay.top/programmer/resume/</guid>
      <pubDate>Thu, 29 Aug 2024 09:43:00 GMT</pubDate>
      
      <description>有东西被加密了, 请输入密码查看.</description>
      
      
      
      <content:encoded><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="密码错误。" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.">  <script id="hbeData" type="hbeData" data-hmacdigest="1c18698e4c9ede10ef67421850de459dc8464718734cc1f6f6bc3cac88591299">a7e357068c42329b8f33d37c25a789f17da67a35b47dde45e03668cf78c52877f1296ce613b69ca8273fe4c3bfe5233f311ff0992cf24b4b3905ce416e79cf1b9a92a22fded22072cb640d77ffa7d74a84181c4524825ee4835f82d8bcdd8a1a3a865ffb1ceeb3722bcc1534f81c666c2252c2142bb489cffb53c77a3ce32c78c1723bb98d42956bf921e6ea67fc70a4f1b4382435030bfa2adfeb038f6d3f2b9232450d9441620ff820c0f41c0cc81585aa5af3d3f4f1b77b79ef37f51cd9415dbcdefe602756078493daac1f8ed2a2afe34b96563ad0ef5702ca49a6ab458d942649a85d1c0eacd88c29f8ee3f9ccd9565ba3636df5b81da252897968c3b3c8f30dc150c1d2a64eee805a09e1841c26f04feedcaee92e6fa0ca91ed7d6f7ddc807c166dd71070276407f70fe0c11683cef4fe7b29e0ce664cffbacc38d26a71fed410a7f7657d30e48f9e67b2f27d0ffe172b37aed5cb2374435bf5475dabb0568674c6025f638243c6992e81753abdf4fe48098c4608a5666dd5ca519282a0b6a10ac3e06bb9c6371e53c24100b45c07c7b3b91745e94578b0e559ab63f31bc6718de69c8771654a258423c919b67177505b12cff87fc152110f9c11d3fd969f491f43ae58e97153911eb3a91eb1f81c64b525b1370a2b6bbad4b8984ec9a4744d3e0c03fa53319e14d3b9c9d908d7917f556059e6108122dafcf1f02e930f0832cd4d2697d3f8332005c096bf0b020ef0cac050a4443be4cc48074ecf45ddb55dbcd3c6dd2923eaadb7a2c0b74d17ce4e7cf7f5952b3256cbb0fab1a2baf</script>  <div class="hbe hbe-content">    <div class="hbe hbe-input hbe-input-wave">      <input class="hbe hbe-input-field hbe-input-field-wave" type="password" id="hbePass">      <label class="hbe hbe-input-label hbe-input-label-wave" for="hbePass">        <span class="hbe hbe-input-label-content hbe-input-label-content-wave">您好, 这里需要密码.</span>      </label>      <svg class="hbe hbe-graphic hbe-graphic-wave" width="300%" height="100%" viewBox="0 0 1200 60" preserveAspectRatio="none">        <path d="M0,56.5c0,0,298.666,0,399.333,0C448.336,56.5,513.994,46,597,46c77.327,0,135,10.5,200.999,10.5c95.996,0,402.001,0,402.001,0"></path>      </svg>    </div>  </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/programmer/resume/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>数据结构</title>
      <link>https://www.ninojay.top/programmer/knowledge/algorithm/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/</link>
      <guid>https://www.ninojay.top/programmer/knowledge/algorithm/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/</guid>
      <pubDate>Thu, 29 Aug 2024 09:21:00 GMT</pubDate>
      
      <description>有东西被加密了, 请输入密码查看.</description>
      
      
      
      <content:encoded><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="密码错误。" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.">  <script id="hbeData" type="hbeData" data-hmacdigest="f99ef1baf15d47a1348643663c2f73b762c6715e1a2284f103aa04c083e698f9">a7e357068c42329b8f33d37c25a789f17da67a35b47dde45e03668cf78c52877f1296ce613b69ca8273fe4c3bfe5233f311ff0992cf24b4b3905ce416e79cf1b9a92a22fded22072cb640d77ffa7d74a84181c4524825ee4835f82d8bcdd8a1a3a865ffb1ceeb3722bcc1534f81c666c2252c2142bb489cffb53c77a3ce32c78c1723bb98d42956bf921e6ea67fc70a4f1b4382435030bfa2adfeb038f6d3f2b5b0b1b7e327bd91849bca829adde7e7bd13872316f6daab37bc902996ee71a0dd8768d27ba700f0913ec82a82ef66c1276926b2bec7e6eb1f0d833777bf39582bfb6b7bbd6254e17406106b0162ba6d55a055d45fbb1f99de95c061e3898dbd406e8c0d64edbe3de7b30a7b392288907e657c1c2975576028ab0ce95b54bc17487662b127c6931a1b4b120a1fdc30e0e188878c06d8e1b0a48ce605283224ec337e7165cc2f32fa8ad85bc58820985f6609ddbdd7b9fa8adf8ec375f334f57236301a238b7177dc71f6a277f1e1d4d4b020e9034665919cc1e0e0a60d109a59b1048c8279615173faf95684c4fb90b7e2e5c4a6e31c82e6aebd158acace91cdfa126768f294d6db9935f07dc0311f98b83591d55d38028215ba022ae7620ad83a019efbaa37c72cae666943a2071eb2ff968a80bca9cdbd62b7bca6aaea0667f344df3b8a2f22be80f824b74032bb62782e48acd9d6fe42144fc6a4692c366ee3bcdc7fcda9b9d3fb4713dd49c89a02a5d0c41c51cb65cf13e0286989ed5fb98dca8c1a53d62256c70844c5793c8d23d2a5ac1dd5cec864419981255972ead00cb1194ae4f12425928095412ba5fd4fc66e901086e4a5edda0ff93b12747f06b5fd7bbe5d9aef9e9b44a2417c4fb6140b1f0d8db3fe35d3941cad96541f2fe77028dbec754830aba146492eb286c9bd0f14afe865482cfe7660730c104ce2f5ef38feb8349d627ad144fe6b25c734ceb651e7488b2ed2dd01d317be82e73b9bf9e70ae1418bdfd7da4d9ada52285cd5569e8812b30a7cf4844ad49512b298d49f795b4af2f87bebd72015b9f8d24ce10a4b81e5e06d1b37bb711f25e54a56b25617531fed18b60697a51e1378527f6aaabc01f3cf853d664746beda2691b0452da92fc7028d2bbdab5bf08ba18a99559e40aca8474883540cd684dc52e6ae0221b5ce5aa72207491456c9bcff17ff5d2009e467908c2ac3496ba176354216b157f41a86eb2b87eedbabb2fdfbd75193a4a6d6c7f794318c70de9adb0ac82331c79a5a43faf42822eced2e4705ba02f33a96a14c40977e8d2387aca59ca36d157cbddf14a06b397efd3177f8a42fb4d1e9880795ff784afcf7c4f1370b7f2807a741d498e662bbf200c452cce6d1b521cc8b6181bdb34cf5bc9ef2b4f02e558ea3c819a5e451c2490912878db5832c54ffc795517fd579bed016ac91bdc72133430cc3906050686ab05d6aa6f94ab11acbea298578e2f89b7345ad0b14d3b785a46aecad4af669e249103adea68803225d3092229d6f4f8214ee8e1d06928c74fb6ea3ca662edd80c8c249bf4ddd9d80d3303bfb096eb813b219300922dcd8435ec20b820930bfc5367faf9ec168eeebaf3891912720b01c35e307fe07d006ef3020a7b37ccff76b673fa93903012c5d42903d2490230f2d2c9d2a0f13abeabab316d299813d409f8202ce3c3685d268653656b81f245ffa7a78b5b584f840cd17cf4a6476d0c40272b4bcc5bc19c82392033e6d8dfb882b95c89380ceb16c998263356545ace29277858150220c598d1275fcefa7f6cafefb25e82b9bef2f68edd89804bb976a64ed55033112d9f3f0781b7c4b6c8b4415a794c21f968fb68d7962ed91ced42198fa1f7efde50e4e8df6e07097ac1b8fbac0e6263c89eb161dc1a8ebd8056ecb671ef20df4e8073f5c02d16a1413664636922bee469a2474f382c8988ec11886804a1daa07329ec60a90e8cdc9066ca5f4d7bbaafb365c2eff5b1e541a1157deb3a49914c5d65c58b6c414464f9ebeb98a73a10d2ef310f9dee72f9f83caffafa0ae2c440654c7a821b8006e62337ce5055f53971696b953f599d3b76b9e876f67b4597b81b47fdb0a96bb50fe0da4c8daec17250a3db3ea03adffbd1279166741c595e5aa0420989db4fcedf5b2be81c3fe47c4291ebe6eb966aaad8a614b038241dd43e5ff615141d391a6adde52d2141e617b48a99dadd7c495e1161fcc538559442ead48cc2320cb20e228f34780bded03f96006cb24856410c43f11e78f4e25e75c9cde90c5934bee538ea044cd9f09dac41bd5e4e5f03128f809b23de4953ca684fe0d2af7a28f0ae54d47b5a9d982af815d96c2161be05c58a76a065d3c6345308747be03eb0b0c77adc49e933c65b288d677e1f0e5a06dde6acb11edee4fbda2133fd4bf8ffc8e85b804eeccd5601c2a178e9740552df6b6df23d7b14e7ae0a15b2cd74cdec0386da9a7ae42480581f3b42405ee53e13227d7e30f58d1b3df4ebe1b45b4eb2ab8751c25e4cf7923c67cea281aa81460417a68efd43899380d90b753eb73567493a3278c0c839f7b874543bf42f8d1091adc4c10e95e846814e4d159ff030d7ec65e7325f9e4b998836b649dfccf6465bd09b89f20c69a24ff1119d285aedbf10496295f6f0d27666f20259cb6f66933487d3c5535ffa78cc153eb84c04a41b69d257a175e9abd5f5fc0da9d7fa8fc5a80086a956dbb3a73b90a555445847380ae7af1e97de72f701f6b9e88e9851699b3e8ea82898a1d5b0e65ef06b4bd784a5e2e19c8771ad5fa44b3427ace573643c040d73740f1231e14958179e35c2ecc30cf7542c1dfb23835e11f6d3e30ce899fbbb2fdb8047ef60753d72ceb4f6f7774004e7d14f5d66fd51ea731ebe5300b596061b5f2f970eeca151a464b35d628229dd3c645bc5f7a0e736cc1de4708f1b4db6a51d8e861f980723e9d307cfe6a2f3466a85bed528ac9d7266e1127180ccbc4be9ba2d1b44b22eb64a7d4e26828aa62d189b874fba0dccbf7df3fb774f5d8c5ac224ad538a142be6a2dc49c0906e321a2d98da12efdd943326ab2a8e9435dc3b06f1ff91494d78f9e694891bdaeb78a0912721c8c2a614f2811ed1a873f1d4b9dcc67a6fe9cb950f382264b32067b68720c7a05b1209d327df06cdc6a7cc697ec33d029f680e877f030b92647cace2fc68ff4dc8e5c25966bc8fac880440c18a9951a1f0ba53825abe190bd4c4e50f692d0f84304a31e6c18d95694e7cd63e5d4d961556a5046e8b0b44a4ef90b62901818a84fd143f40bf34e4a6c827dcbdfbf7e39ced8786c53fa79fd2e26f269f47b348a6582b3e4e3aff4f48050e04f87ac5b95a9f2f69ef6b39735860bee6a200224538b855c01f3fabff9156323d08c443596b69137cd3d2d7f9848c3d68d5c25d6e46abb072978a369a6ee191e1a61c0cf86234b6540edc2fb5d9be9a7eaba1642655731a7f8cabfb8bc6d0d6af701c5e7526ca4237f1615d433d6acf2a43db85e14c3f2effd3cbdc063a20459d94603f1054c73408fdc7cec472ed7e4b4b891837f3896f52d4dc22effd0ec831137d9882e9478665dd3cf4f57f2a1f7f379b33e0d6f97c248d5470c24f5203c9fa130d41fe44eef2ed9067ca70cb9be0a7ade93d3a5ed06f4383ff683602f55c3c95b389a5e5c09c820d0390fa98f274b8330e53a439973d2f689df6d8d0fcdbdae034fb12512808640321c41ec49fd386eddb20a6f33b9ddbbdae9fd1ffeafab962b92d9a64cb75fef15ff8d03159223766e192e6155499c8e38bf3b2709f9d84542a9737ca47020abd50ae23df54ffd563697ff06179ac0ebe99e0447c0aceb635056445aece01dd8f2c0efdd5d39d6c3f1a1f748aebdafa4001cb9e15cb4c340d1964c2c1136590db2c45ee30c81b4893998b29e8b878e32a4d0442b08180c0a7a8762250276f0fabea41846e2bd8d57737fd672186ec857db0fc82608271ab33fa66448a7f1d5e7b8694f8284b6138832a32c618c8cb0d886226e0da7458f3c085234dd18579b2e18720bf9fc78d131a697fd24f124fef033fccf33840118e100632260739235e1f1b3536c635470f2fdbc3df4a8aa99a6e7a34000e99cbf9851af54a2194041af3ebef01e04fc02fe6ee222516396de1a190f8af6a6bfd037adf050cb82716713b15557e34780cb9a598e5a9fadd99649708c89ff7152f394fab088a7bb5367b56225a393f72ae89c2cf9c78b437833d7157aa32bc4a174b0566cf1607cc2ab43e7b69f6987625dd7f83db9b615702ea49bc93e36b303bcb4b60795a45c15f26a30ec90980932b9591e4a495df54d5f29e5a38fdfc09671765ffb324000f5e7777735d7420155e78f193cffc1859293dac70868450f730aa25226539da89955287b2725aead0b7ae2daf7c3d3641510b45045bf8559e90c1f0f979b9c4d23ea150f41bb394a5048917271e8726fea077c09830bd122e5a239e86ffc7cbab9c07afb31093c5ef5ce5541e27f3f3735b3c54aca78a4b72d9f57fc547e3cc0a0b20ea839553e19420053aae21e00cc76627e4608ebf2b5584d051aa4dc5097cba74a962157024a50e8582ec22aae123c83d9064b23401b6a683522c52b1d3a66e02c3138f1f6ccd5fae0a23086d0429054a8a010b93316e473f68ed7b441b631587ac9a98e0bf7037a22c8da5e96b10b2141a27dc028fb9635ed5d262eaf0623c85e6edf36959c1abdb44bfeae2fb1303170472a34ab4811bd7a93a7f08abb3f812f1ef2e54b6b0169f3fe46788465e7cfe5d6e24e05aae3ea443ab57c7b03e2e62f35f8968c4cce8b5fb2197124eb73cab3044fc135cdaf6b62557cc4d46dfb59f9db5be39cca2ca6c36437d24c5c91f82e8029d6225bd6f5c93f26000d109745222cb11652407645f2f2dedf37926d71fe288afd6fed7aabf09cddc32c97bcce9894465b11e885c90d748f3f7f3ece8a716003b1166d29446dfdbbe95e7409efefa5391482abbd6fba50e820c747fcb018231faca77d9c5314f26fc789cc9900af51075c43ef33d4afeb2475aa7ecb1e249f59b0def935c0c818cb3ad0ef925b6b8dc57d94c239f4b4cbe1d71c3d983035d05461d696fa65b089c052a224165a39cf55b91047b62ec4e3e777a4589be61407548a5009ddcc1fb3915eeb57919d82126bf0d7fc3af8ee543905e3c8c384b61d08f430f537c2aeecaff5f316923f51f230c282bf3322d88b7723d9163f243859a9e6b15b1beba927a9cd747943ffaa04b16951f97d4b87f587e016273ad08c340413f0d5f138bca16044fa0fddff7dd6ffa6feccb58b6ee60a09bd548c82e10a3942b554add7c4d9c10abf21a432f53ec2a7f75c69ff017205caf319851bed401d5ca755a262285d65a5f7bd3c2388f376f0f27e7f1f443ad9fa88a6630c658f0a9d1895eee9e41825f2ac48e4cb2ee9661b932b12a0bb1862ff3e086ba7c87847f079ed1fa3c1f972a29769cdde5bebc215c29cbac1e7f423b8d251c2183fdbb270e1f8da9a51277714c5ae5c0dc6a4047e751238feb393e0bc496473e66afb4c2b0e9ce1bf65e0980cf9b3d4d829fe4e6b58954faecf51515c4dde0b491db2077c034ea683580a288d6e47e149f4ad6018ce70aa883de228fb433ba6a7dfa732a13c15fe749ac44d90f82c7435b42caf611aa2cb5b97710c262f5443bd31705022ec023f7cd4d5b07c62257a177f959b6a9e0c3df610241b66d30c2cbbf28adf250983ad467c96ad4655938f5312118b618096b3a945b56ad42fee610373ac2f3e76129d5e1f4770332333797a975f3f49a5fac4a3aed8f90d5186087447c75edd44879b18c30572f0769f9e8cb551271a54d04be9c7cd155d2976df76f139294736b9d7f43ecc0e70940c031febd50d208a224eba787292da04d53dc5bce4e54d11bd3c81395a493a28f37601ff15b269f069b436a0b657ae4f8098be9c1772656104c0937e0a50d239fd2a3283fd18fc825758ce5101a396350efb26d977b3d893e2904b041d5fd2e82e5af0cc51b2ad302650dc78a0f5c2b1dafe478c077c88f20a306f0b1235f59d0a5bf523db2f2dde39f024af58cfc0727a548c8833f198f61b045cba68f2b45ef459390609b9e80de15ee72e8626cf580d74a0d874eaa3f6a59372dea9621c83d6596ea49d8f36523dcd182d1991a3b898e789a8b35b0a1e6c01813cc1744761ae9603e550ae59f796dbecd892e651460f114a3f0cf12097fd3b0f665f3c1382821c68ed1068edfac25466405b7d521ea1c389f2bdd710ef23dcd931174257b92a75c43efc369e68cafac53bf16219eadbe57964c0b6b90d1429148b033121cece4477718bfddd09eba1da02b74ad52fd2527b0ca958094dae3bb2997b4ba2300b112c63c321d781a6716894e20fa561578dd2e1e6867c599a956441fb98faae48e97195e76683a239951c96b602eef9d267006d3d5444c29ec230678e28614d822092af524a3635dd13887ce4530ccc5042d479456fed0b0fa8d140bdba489c3440b4139dab934239dda6511c05ac4018418f75a2e91c3d255439bd0a4d85c1780e870ac7ff8ac48927d7ac4dc68cb5ed0b97bf4016b810ed7996b512d4363300423cd9522ff6f626687f18174164e95ac4ab24c08365b5b39d37d770f05c2697698b2d7a346df9520916fd25a95ab4807ddea1733d1b041e5ab5c33c6c12503bbab6fcedf9a4e0f304fc94bb77c2ffff06120f62ff0f05603783f372f5bc0a8abbb6d09968f2d5b8a5d62194b81ea64b9a71588bac764a04e3e544759c5ada9eac7198719b9d2e2c72e8223b5735a5d643ae10d15e610d30aa73719b1110de8d7f0336ffda7adf6ca531f7da871aec6f0779c9ae9c0e2aa06b587d64c2d2a84cc3b3716da7fa3037d670b39fb1c4d21759447113798ff555d00ef85f3c4b8a8d6dfb6aca5ce05dc2183aa31ed5ee49edc8c78cfe4a724500ebec9eaf5ec60d251aa1f64ff562c00f92b828f7af41e66eabd009db03ab5486160e48b2002829d2f3031dad85670fb16866102cd502e6a26f3c594c16473caf558987162590c7ea34f17048237ec1f62415f44c0026d1b8c53a339f4fc769b5ac61b9761f7edf04ea07a3cb4938f569baa51e3273fa5e6a93c30c87ed30a38ad704fda80819ab5205454248beffc76584b4bd43368c59c8fc5113f6827b522278771b51d736e546091f9bf4162869991606ecc3921fd19c2cea5f5514a5a3eace12f28b6eda1334749288f7ebabd3710171277b33d4191ecf7eebbf8cb5dc34bb3189d8de6997a6c1a46fc6368e2680de425a2ce03a6ac369d98c10e3e0c9585fa3b1d44fe471e15e8166bca5deaa865fcc4be93875e3d618dd8415ffd7e687fe5113fd278d4be80ac5d18560c34349210dd2936d226c2ba637399c67dd2284a7caf780bb38f28ddcffa0882d68f76c685946089f1893d07d8e4c735ba40e8baa31b63d0aa1c3561281e07bf89a4574efa89de8c9d6b3e0bcc4e0112a67609b81195c59245eab9a4c42ff4f37a0755cc5967d36d4cfa3a0406058fffa4f3f0006068eee98c5c9fd75cc86b01544b878de0b08de9bda69b368ac26ae1be5260e706a73b303105c64aa4aad1905f6ec338983335c1fd4e7b3ce198e265f7aa6787df184011a02855599b6d7cf1dff09f06390b3c8a7a1e1ae5ec0b63f73de63e14e0ba9905f8b97ae8db0a3e80836ea0814fcba5315335a54ccdfef932954d6a51109276521d56360c8d289c81500570140c488e445e7268ae6da1415ff79b431687819ab8f1d3010a1e209c40d9d77581b02f9eaefdf3b98eb14752a8ef39659adbec7b60f726652152105843fddf1fc72e14b93e53134f4024063a25d7f42aa781ed0ac0240843b2b6dff13b46277e185ac913ce0808e7f7f45f86ee770017645169de42c4b7457e14fb1041d98b8e1885d67a49c1fe3c97b7f78b38d227de93868792f7338f9f91668afbc3b72be93335ed8c1c8bc486856a80f420f5bc00464e50cde0f2d8f4a0863ddad304838600a3d07aef9f72d2d84843a77b2204f24e22ee6b613236ca790850a0ce423f6754d428b678d7f6e8a99a44c554ac3d90e5483e18437283dae90fa3741f549372934f2c9f200ef121182c353e15a663398000718f7841d7c6e7747ae0315aecef50e716cb87d66050b7e54d77b9c15a675d1922d76979c1a2436c7b11ac2e78c710d8621becc7c5bfee1fe632cc0e697d2dd3cf2ef3cde88522eec96aa5b43a215a74cc58e0aca1f0cc01e4874159ab0825eeae9340ef25a947d06423cf426b679d6cd82a704587c84fee283a457622ef221a77704e72559da341c7daebb0c6b509f86da8a8788e3e92d115ea3486f0f16bc1bf4e553428dce68ae7e09821861bac358545342964a28b783b01f7105b357d1e4bbecf76a94fe7a04905fd4a6e2abf9253d4a018bce11bdbd2502f78820652bd96a5bac89fc7b52539beb3c9c4308d8bff284da4bcb07dd0841c6be0115eaacd4375d722b1e78e95e0809856bd9fc9f07fbf32c94dee5f47441a24cdfff32ca704c58eebbef8031a163f48ead1848c6b28bacfbb85eda82dc4f5fb8545823318e91f0f0006ded34f05ac5688e36076c724c0740a6eb4a0b86ad6cb6000ff0204e6f782563038ea3bf6973658934cb98a9134810813dad228f8f030e6700c1ce00e2f6b7f66408410c637e11786b945a36f9c3c521b97089d9bdab927381b6ae144119b0a3970b514b2e00a43e59e5f14278be67d5a6d1c71c2162fc5bf10c03ba0240152a47286eb2bda60e0781bc040f83a65db1a3ac816241add0e7af8632e9df0b9ebaf23b2fb1b136117e30b5da490f0827f0fc9cfe933edb4ea3925615cfd79844e0355142c0a6ed47fd20110fd756fd688a541e89e7f004e9606b57b3c814b3b338a7634efb6721e5b01619a660aefbf250cc6354c2183a0e048f90bef129daa40b9ff7be230e7f28a148618573106f32fa47642d10393c64189dc591bbfedfd2e197a86e8a088d8d63a77bf42d2291d2d059092f27f2d4118cefc9bf8231e3b8d3cae1baec6adb36f6adca65f9318cedf4df6ec89afcd1788e8dbceca1190964b831430351b3cdde103dd825c636bd5a276dd00c71af5d80ccc2eb94d394d82ba2871ecdda2c93e0d693f485390c75641b1422768d08d3531c48b61b8a35d54a09c7c6a8b22790185deecee6d49827f46e88ece1ff1af3d9695990110f9aff802200b97b0a39242953836ea0d4cca451c454a09bea77d982f346703028fdd483841f31ecea77f73ef19fd8067ec0979768d1c86df23ef8628ac36bc3369f98aa89046c8c127aa396f35e4087a11c31d2770623d073583eeb0b14928723deeb9997f2c942e868c5bdd9968a465397186805765cc08e8ba6a0a6dd31ae9954ab41d1fd8f2e2c6402b209ce373a10dcfcc978b5a62d270e11f919dd65482f6647239af49fbbacdc52d90770c808bc8483a353d6cdcaaab31f4f9b864fb6107bffcd690962abc3e4c2579930a02ecc24e97b45f721033d948fbf473c3b99bd02ff4644117927e9e694cf5f7b9b5a33c9fb9f69c687463160ed9d08800286d5b46773d7937c472f23c4c8c710badf445f6faee7a230ef8adb712b6368ad68abd008c819c5252222a2ab97a1dbdf109f7f2f20c6a0a03497e1d814eb13930acf3d942d3a27e0dc585dc66b6966600fd3a04dc1f7b5b1d9a24869dc917165d6547c2245d93f50f2b6a0306f52dd0e55b33ca5a2fd769aa0481d923f01b4b237dddb6636a6eb9c464e055bc160ff89add875e93f558a61c66a34303308ddd4bbba5a7854972d3a94b983e834b86b9b65a98594a2f52a67cdc34acfbbd9b79da9963e7fa8a535b7d8b1787cb78c09f635d472ffc04d2d1d5266f2b80b41b8eae8aba0b0359e8d90a63a82e6e469f686457770314bf325d4532ebe054938357c0623a70fa666335ce853de82cbbef6d37b4aa2a2829303850041f0d2e2fa5dba7fbddaf8a24d67f1fb3807bf4d9d552281531005f7a2126dafb1f5d3f2e80c6a83085a591bed0f6029358d98027d669424b6ac04e9497f6615f91056f3c59e2c83cd6e346a976641a1d406c22313fc4b6ddcfa2278366f99f0b415126e378dbfefd16056225b0d779e5c4f30593ae6fff0c1b7cb8d6daa53af93c119443e1a3efa894b35d9c8390e3e394419b4ed055bda6524e7eb06fb749a6a32092c874a9031eec2cf0966ff1a91376bdc81cb0eb3a01f08d08be3638b50f5089e3e0f3f4b4fb09ef5cf21103254cdf6a6ec05b8a91048ad12540922f42e8fe2d7d6e17fe155b185e111d816cce214996bbb7951ee8ce9a9ba134409196fc220c59a68615c82f99976914fb6f43da68aa489219602adfe79529ad42fe1825cfff1acbc619ff9e84214387387fe1862bba6b842bc97dc0b73cb3a827f3be25b088ca4767503527c27caf6f9746f273e1bd619f9b9788fba0e3a42b9f3778ff7212e8211d0be7b3bcb1ae0e279ee96b0cb417f1b93a1e54bf96985362f5ba834f149e0dd112c9780b2c64d4767915d79bfe60b7240bac47b54bba5ac7fbd41807bac54215e60fa74ddcd275807edbfaa5e1e7aa0d84295bad8c54c3c1d2ec145a16c94dd576cd8a8ce7cfd966b487c2a7b32414043a0dc9de043653485ddd0c1f697874e647674266934e30e736e42105f441b68002a38c533c2c595355533a5c3e4a4a3d7e1ba5056a3eeb690fe064865df6fba87d8198c260e56015b8001fc8ac298ea302f5a2b3e3cb716032ace0e3828f3efc1448e6304c751d26cdafbeb15041f4792f8048e6693de08729847aac86fad289622be98ab65b0bda5394aa8c5c9677eedffc5a633e36f83fa079f98c028463dfff52e84c6fe269cf82b06b47c5b2269275f86bafaab15660606afb7001b94d2caaf87688869efa65cdf49e3d9bb1c618b1d7a8dca46a8da0c86153a6b6633c967d31b9f5b486f40523f8265230a73aae7d8d768c0bf305578c67cdb3aefad96174fbb38e776ba5848e236e094933d9df80ca02467fefbdce5688fedf4d0aeab4f1ec0ac5b9248a7a8ae4b0feb36397f56415083d2ccd366959a698a5e709b9d6021d364e1b5cffd9e1da19e8809ad26f428a13aeab8232c2e6577f49856f598084ea8b0eed3f69d8ec66d959bfd289a1730acebcb74194e2fabcf46681a9903f9cb9fda48efaa4a07112ca7fda4efab8a0dacf1b19db8697ae2aee2fbfbaf518237073dc2cec3ca33c79c591bd7af3d0a84ab050231a212723636b133c108cde94018852cbbe7292ecaee5d375c72654e0ad78256dcc507fa3466efee041b2698367149959fbfbe18c6629c9641f114df229007ffba6a328cb630122fdf97148fc3533d358cebc811fc93b4037a3f27db3d71017b415980ae4b834f4221d145d850ffb3c6a88218c82233b863ec90a65a3c74f202b260b9e16ae863fdb8d413a32cc3ebc3f799d5744723a052906a458addb6d789b5252442d6350ad981b5b07395603cdf088a264ca664ab3fb71c8038282e63f557e5cf68343c7d7088ad8128aaf7fd7d47cd17fa4da38d42005d3c94763032e849648a94b9e425fd13b4a0714073f78a3e3e7ed06a7eb507779d8abfb15a03cad9abdace517878d567dc2fbe12105a8394754202a81a316311a5e62ff2531d861d309c4f8fa01755937d3374c59b7ba16041f8fe4c3650f08f7cc38d57d4f04782f34f9ebafe6ea0efb890a64e202805116ea1553d123aed879952420d97e5f6156033d5fa6a020422339f0407e73cdc3e0cfb2cb3b915894eb876b7f045f5e5651e2c1819b87e53586dd349099f207f5e8019c1a19e9b257bdda3b1016eb4f17fcc3ad8f63dcf72c0748379d90726060e0a2c41501d0cd4373dbcd5a6f02e1311ae593ba155c1de2a22bda14c6ccd344558233a877c600082e58e99bd2658367d2bd0cad15e84d0f2d002a3978a4298c43d38dd0dd62059258bb9ac298f320fe272105a6aba0d6c143fce3842ad25984f77fc831423757e58195044665faeca6271ae81c8724634ae82b680a40991fbaae84e1cf88cda80cc797c03c5e3c09333110531b3cc07d5fe6c92867bcc595945afef62cf8096fbcb3e45cf6c8699faeebd435c316d154746c290cbc576c58f01543008bf31a991f41ee0f830ecde56a1aa0473fa1460686123812468ef58cbe72114511ee9dc3a2795fca18b32d797c6fb3ee46568069f30ce276f445f2ea16ff81fb57b893f2f479dfe34a95228da21bd6d78a0a028ed6c325b5bbe89eef793bb186d823dec83c955b44115ee79b428b5de4c3618124b824bd198d4c5dcba4e1fd86925ad9a37feb9dd6e2a2e677f5d4727b173d8a9dd538a4e9775d2da4d283c0a7b9fcafebdad2f80798e64382dda6cf7200454d055aec553b6d698df7f21939e8745ce99c87eae2212be06c43b624a08265afb8ed1566c20e803c6d8c1087f4b169edcdad6554b321021c318d97fb6ea8156587bd5337fdbd86d138c91bad2bc88a954eecfbf742791fe9ad03b869e928b2ac25d33aba08cf3dc508f3b91d9a3ff5362aa6e14a87e29691ee38408bb43748a360e240629cb56fc35a87d3eeabb250ca8b867a43ebc775f9b712fb0f9660d61402ca14a9bd513e8661773d4c6f1f4c3e59049d180e80a19f1b7af357a976736e61da90881ee971b94b93a2d2a9c0986762442379245cfb8104b799ed05ed4e25d7f80ea9f38ee309e58d562c5bad85d1ebf3c3c36c0e4b2a2ae160042eac8dd6db46c0a0ddbc7f0b59070107f90b7ecc2720571f2e8abb4568af2010ebf3222d6d25d6b7ac59de47f8b38fad7aaeef2c912f76707569dfe88eb85607442cffc19d1f28c47fdb5ece5dc91a56fde18a48b54dcb270a0f8ca47e19a0a8d1e7154f11d40f5b3e96b0efbf26b4c5ffdbaf81d60810c12ad3de8ef091f6b046ab0710deba084b36780b2eac5a9739bdfdbd42de9691887eb8f6c4f7727dcdf207021f299c8a518d81925f16952e9574e21d401ef917aa45722094e6fd65b2e2e2d0c146c327aa116bc96887dc4f1ebbc95de8c3bdea06f2e22cda6e75ebb48a6647e7fcd3ead8fbb0d6cbbd9d7ade5872e139713b0f2b499fe546a6a8b01633e4c779dc22a267229626a680e8e1a856789eee7bc65da104b3e97c4ea26f1e81adf43c3151050c90504acc1d238da22c0c67fa4f013fb3fdb1c9870cbfbdacd94a24a289c9ee383813a34f8377b4b0e7224d453e382bd950ce143d4f4491971593d0c45d7c0b9ae90de011c9f939cd99b2fdb0a191892186278424b60717c5716e6289a87e30391ced9b07310566ea276ed1d71117d6387e88d73f2fff7b82d73a2e4a28402fab137650b42170f99c6929cc42a91bebd6d221844ed1ad8bdb33721ebf4baacc4c2a179c50a038314c6803857f56fecf01fe5b5c415a8d71ec6762860a90e739a4a30b37fb3221bfc0451632d2d769922c86a21cdc71b11f3fb8be786f5cfeff27a20fac36510a023825b4e346dd030e88bb2d3488e4c466454dac09b3384d51ca676377e7bb5322f207dd093a6799c3eac7da65bab58fc308c2f599307e0b8005121fe15e24abe950bafd39488582020f8e7275314a89396492d05173fbfc387c747ee826cedc607291ae67e8bfa2acca01c63a8ac0bd349ba916870dbae1b7d2895b246bc72e4760d01e6ed0b829d44ada5ef85b9979cb2b1a394b98342efa28e2b68261dd9c38688d3585b5e16e7170db30f6e6c81f94b4353f3b86ecdce3616f9281ec301d0cb02dac589191f98b6e8f2d1cdd726f3c713c101e4193e57b3026ed79a21a3873d96847b2c3eade5e7d14c4255fa41fd55f2eb7f2f15d3e1d08f7ed5cc6b9b96aedf44a4ebb0c62b8761ee91356839d5a268c8a03e203acf644415a19ef26c5a268fc1abe152a265fec4bca6365593aa1d6fc9f71af8424690ee9689106f1c5d728f74075ca3cc89c53a45faec359df6703810b8f06b04448aa149ed303e2c398cf7ab3bf25e348d2278c3143da1bc05dbeea9b06f59e03387c70e594820a4da5d4f425102fa8f0317dd7385599a25a74fd8662b48698f902734aac32aa6536bbd828396d119eba45e91bdc205ba71983de5552536bee93ad8ffbbcd2ff5453a568af10ac00e4d00af8aa8a59bd136eaf4f54085445ed851e4faf4c69c6e97d1e5181190ae9c9235b04b353d9b730b5975e3e1a71fbc7165e1c00e689b02e6509771f11b28fcec7ffa6ba85aca93a3477649f48f7748436288b6c73f5f7086ce06dabde5587b3d1c24a10f870135c74cd7b4025932594d2fb78d0be061a78ca5700ca58f845431385105ec7bb80e32d160204ed152a6856b5b631a1548d2e3a5d6773cdfa8bd367f30694a85acb407b5553a7c2e1469f0ae86ca506c3df2be40b670cc8e720534f6759de49c0de8992d0fcfdb21a62047e1b07ef44fe3f2f72ef0d0e537a45ad21de7264d041a2c7a7a6150aac3a35bcb6d6028b841dca1cd87c2272eb0bc23c41429ac7d13ffc9d66efc69117fba9f98e058a165d29ae996974a664770b105c768a4ae5e162f8e04f5749f528018fb2b3d55e26e070010523453d2d0340b2bc30a64e87af5505947476dd62eb9840057055ebaa374d681e2644583a9c96d2f3d993ac98e0a450c808fcddf19af1000be5c2b187396929b09c1790dc939bf5ddf8c611e5311d9b333f3d155164a2886ae94b2d8bf4df9e2cd7aa6a0c3683ffd05f5a4885b068b5198168faa93c9d1fc2c50ff3780da7043e17320201ff0a7ffa7a1b940d154b5890362053d99c7ec52b73998f4aec088a2c32d347c0d61371d71388bd3fc7f0c720b4601a65dfc1484bc4122213d93d3b818cb1a489a16470b77ea0186788e037f4a70943378689480731f3909b2330e969423fd2585f8261eb8e01da246b2737f0f330581cf1064ad6bd287c1b8e7d384c4ab22b66a0594be34303de1099620d71e504e8a4dae1a61b27a1e485562dc6c0a8d4b1774a4e469414cfe792639cb43cba1621c19c9d4f6050afc609e81a8e40ab85959e855bd580ed5ef9d981566f446de97fbe51eca74c41a569ff353e7d257dc11409e066a9ed37ae7aa736294e436bd8dbf6c1f24ee701fba7a244f350577ba92862b2bf26786d78bd9207d66bb2134fe5eb83e8f068adfd9be56e0e1757605038bcff33943a974eb8fda80a737f97ffd0c720149c64463b557029741f66392f046b3b64a82a0d0352644c143dc5b5e845a3a6d535eecb9f85e3c4acd439ef8bf95a6d604bf503ad3eade2ef05ac7b42214a96cc873736b54c275ac65def08549d60c2202540c5aaeedfc70e61d469c9543cd49b598b3726f563a98caf1665adfca2405d0b1c61e7f5514522712fcde1f9b799a9b784464443c584f789eddeffe3f6b7d98f0e3ba451405eed00427e59f652f08913cf715d14c82ea444a067edb09691173f2400320881f73b920a21f721b6eb73e78524543f4f7d65c573183f9f03dac0e0ad5ca4c7c52af65e5452d30cdf785b9d9dfa10e71cf6e7ae565f94582ff6746914ce50af61cc7fe5e3a9f45be1b634af9d992fdfcce0d80fbb3a0a3a2b562406291ab01f6569e4b94956329258e9eed8dda938b543bf684efa7b638ee41c35fca694699a6d791810e9ec454c5f382c1885a0f05468029797a1b21fa459ce4066c22d949640d4d5c9e224fc64ecbf213b571e1712c9d1d59639492870b0eb1033c9694fb3da74abbe514b830d80b37284a39fcc685dfb5853c96b1034cc4ec01714be48da55bd0f1281afb1e1c11e3003daeead0bf0ff8b409dda59ec646405885b5d15ac1204ca35f1f6cb38b887dd2c244d044213ff51d7c05b9e68a58faf88b131cc82d754eccfbc3b9010f9269d4c74562ec10a5da032e0f64291146c0cc036c9cc27939fa49c45abca381b457af523470c2c629bc154baf74491f07bf74508a8948576851bd80e1c135c78f8f0b4e3dbf8191d7697b8795740e8e57311d2076109385bff3f0a4e6da12f8563f974a9d0e1be2e0de38c6a2d240a025a92b8e0e25d0c6a880db0e3a97fa962d7a40f00803c8c88516afc6c0db0389a90fcd02366f7265fa22512b7a68bcfa59a4162129e659f3a2a73228404620469bdd3d6c0038fa2e9ac5c9ea721ce3b80294f8fa9c98aef76011f42553a9d5767f70db01d366b22ccc5af2f0bf62455e4f350951a124ef5dfa0b0ff31e7a1758843e229ffbe2e90f7eff388626ae9ad110f40e14f11ed4bae70ab432212c16f724751908a8a4516fcb8aa943e3be7f314ed14c994dd6ec92015b36eec524873f4676b5d582d9c7a8552b71a55b0025928606f3a611004e330d1a3adb4176a2f164be09fa5feb7f725f1ba61045eed692341e35288e4ca820388b98a523b6f4d01e670284fbad9bb209c859dfb371e148a7173c4e73e21377e74367942a933e29424b86e5dbbbfe9c6000a875fa639ad7cc3641c28d56fc1158131f530c3e3376350402794e5aeb2a793db4c2ac28c4318b5a2c975b86c540bb159eb5d08d40182fc15fd3652078226a6567d029f65de96ec29da21b6a97a5292347a173e8b6bb0a660ea63572caf245b9aacf50187763a9c57daab1f529c785aba4f1e465c5c942164a211403b89047bfd53c853c70c5100996af4b3c1ec3cbe12231652ee7f3035332557bf059d467f61049703957c592ca0fe361883a9c2d90d3d919d80a231dd02d0f96b4954abe8104e4132310de353e741546b4066d29b34e93831599259644c3a8bbc1a2e0f30cd233255d6dccd103227f6fa8564c2e279d81624e2783f14e40facc78305c2e1c5ef974ba9edcf12e1f0b67d6f20a5b75031eb7b086441a06d07adcb1c5ba34890034b09eb0973f0795ca45379aa2dd3219a044acdaf77eca30a85069dc117bc503523d3e560d3a60377a9890986477f0e5ea812ec157020411169fa309bcdddbb8cd4f6ffcbebb6d6454c9f355070f11c41af7bea3014e7dc10eb6cc80804b240054af882544e860b18b39fe89a027416533cfd75d5349f35c28eb5c901860228c6297b86bda91df25668b4154437487c6a793f2ca161ee2193e983e029cf68a9bde6896b55acee238ab1b00d462801ac8b2ad0ed2e854c51d44a5a13fb8dee1ea67520188ececee7fb7e00481ef3caa9d853adb3f4657daa7b1f81f2258e959cc7832831f20721dd47e8dc85d53aa56dffa96bdae2415ced8998e6bc30f6647dcc95e012bfac7da22058d630df59995be4acc05ad2ab4abe9042a2c25e80e85fa31c7dc83eb71f71035d44e0a556d3a5dcb48ca9012cf2f806fe771dc89723ea0a50c1bfee66226c6cbbfd4261b1fd446d587c78cf5ba7760021be7336bc9880ab5d8c9a2dde20e943973f86873f4596fa1faed800ac8efb404befea03617733f20b83e8917310b106263dada4ea0b9767797d60d7edfc025a19f38bbd085379000660b7a515765a4399650a2323185c1a00156b49b4f912340f6f7923f488e683649c601545647e36373683be1b52be51942231c33377e57ba3245137e5535d2c922b6cda333571b983de9c26b0d734fc4b6bd5343a002cc1b8634936ad17013aa97d15f7ccbee88b8e55ead2f4b5d83f23f47d11d5de34e31a636d89be6ab4e559c1a204eb5d3b42c2dc936423e8da7deea8b0dd4c29067ea02cd529c79e98a77cdb35c885b5ff89e65ee387c2180f7afe318ecbd471677b517d6f074ac543c5c591ba92e3cf7ee02b69017f6905e75e134b25322a77fa37a8e3b6925dd76721010858c72fe42b02ea5e7c64c1ab5b31e64ce8f698c2ddd8ef53ba79ee54dbcf3b3170486dc9a2f5cd0db669fc5320aa83c35ac6ce18ae3345e2e65b3a7536aa89b707d27964e77dd0a56845dbf15f2fc5bd893efa1f02b9044827a4bbbcb9a064c33ff8faebda5e2465ade69466f3977e642b3ee65957de12cd5e63300e62ff5c6e6f5de29600dd860227c29d0e9ad63f77b72dc0e36deb84aa6eab8eb7183a96142c6976f18e87a2c897918dd043f6e21adeada8006e6e7436343122ac0ddd23314206d37242032e641c1233d598e93eb8611734d46d7b4fe3bc1c9607667545215337a4d6f1d7704dfa9f49881f170aaadeb1b660307f2da8c3c1b1273afae62f2893f4b46d753531d33e637ffe74cd197f668c2a8d01e92c0773cc2b94e26e067e12b9b22b26b893c875d57a1b06166a777833fe3a3f77e1879d086a6d1584e755bc34e8f8bb70889b8ba574838daf35de13d9ffc2955c569a847c90eeadc74bc0eb1c885fba915690538360c63d0545a67bbf19d94da771dab53d875f5b7b05f657fd89f807397ce347f881f6b0f9a4e4bc28a20e8199388cbea003abe6397c3e2ed00d244350405bc61bb4a83906ac1e5814d4bca7c785ad055e5df6f0b0a92f9043929347383c7fdc2d7adf492f496744b06a4fe9fb408ef9ce955ec2a8e0fde52819c728f839a9815823a12d472c1c21856a518ce0bfeb3a1267b01d15dc9a839f4115539592e592dcbff8618c30219b68995869a78cf3029863ee8a32d3f53b86a1afff4ffa14262dbea850b91a01d2c2a41ab5bda3715405180224dac363bbbb0620e5cd30119c1331af846e867c2754d281ceb8c92cde0aec2b90c402c69cf613e6af63044a67003776028e4adb393e050828b012a1d2f99c564dd8f13428c7627f9f6e2f854bee888359c467b60c698bf1cea495121a17103d4c1b5a629bc3dbb5b503979cecad9751677183bd98f84258ef41d35c9ae146f58adce4cfea129314f18ca914a4c9dc6b814bb57c1ab711fc16d3d8e5d4d25b7b0be7bcd5778d3202261b7b46e536fa4db68d1255c8d65a50fac691aea118ce3e18d95d697523f3256b28e125a1c05bdcc66bb1fc9e1c13e99730d6b96f2e9a27c5f6bd64adac744e0cd8f5f6681f8626188ff014ddcbd090a9e8ee839180c6a047b8c987f9ae2eb8cf6041cea8312e6de292e036a07d4b85588fbca8f23f8652cf0c8bf5751defc3caa6e606be4c45eb6187f433dcd3db0449db91997c5ff4907bb5f58890507a22ba99eefb35d22488bcd08d243e7db0744cedd3c1ce3d512a716c1f3acad3e535cf10ec25002f16a093eb4de087d665e2f411a7a72ba735284effb9424ff918e6fd80759e8ba2bd047184769a4d722bc7c0db5fa2411b4b7754f057c0d4d76116d46e165159889f55c2f51288d7a6bd286f212d394f067843d13312d43477d2f58d8d753b42322feba5d4cd1501cc3f19f4aa650117c400b9a2c9b16442bcd5a48b707d52f024ec866310829b99519837e7e7954423aeef08427fe8c26c5829fd34cfeaa2b1c50f260f7b9bad90e14a4f8deba49daa1a0402f2dac97ac7ba1ce39347242c8c912231c6ee730c6dd27cd4365e29287b4cf87bed6578ba587f0aafb737a74b8fbd13890735d009d8300b2564cfa45296ea107e02f317648bcb1fd7fc777c944ff70a32f5b35569e537fe08d4f0197b800655a1d0893c77bc1b1ddc19fb6d1f76f77fe339d92fe4cbedac38b6c60e0d1e894be6e5710b5172e41c0a41231b60b3d2dce0e6b9c6e850f8e080f7e89dc81e38e2ab4913533305abb2440b4b3217cc102999ae95ab60b459a90961c73e1160623d6d6ff60fbf9877c4802c4a7f02b1e97905962231d086d81404c9e78b4337f170d11a1a52c101cc99a5e53eff56010ba7727944adc73a17d0230526b2a968c55632b026b8fe64baa81a490add8d740ade018af77b0e049e66d926b8c7857579ae5ecd9281bf3373742f3d9d7db0f2c58ad418572b29f2b07ac1883f2cbb13803c0abe740cb80555cf22a6c81252547ed41ab49c3bafee051bcd8149617244a138fa0b7e9a54e094f2dd7cd0d86db1ac8f7c3079fb228158ef0941cba6fba985a3b3888b8554aecaff79a0e5d0ca3396cfef1d7f2a96e64ae389bdc1a88a32c9a10910d4ab35ca1065f885fb63f4dc97e924d3d4e392a3c9aee7a436e943229cd73fd410dab77e5a239202ddfabd6414a9f38166d265d86d5e27b88a6cfc46cf33d8f7f20974066864412468e4967255ac78ed405ae3cc1b6d5027b721b1f55725ad1149ea47375b4d290074fb5692edf66c720c9cf19d4d2ad107f4fc72ce36337971404c0311a97dd39df3ebc6d47d561ea2f3f8c6bdf63d0cff7c567142f0e20a33946e40df2e0381a0c4304fe62d83feb3ce66b1ba49361ccabc587a50c4b77719c8249162edbc271d98d42e5ea4fe1108bd9cd84c0db1a376f5dd30b61ec489725b0496ec0eb4eccd22ecbdbd7ef3045ac996ebe9d00f50f356304cec92f573747ae3356ebd601a26b9a90af6864871fa9f833b46efb893f4d1581c22c9ff80825540e7944e19992535969e54491ef6ee45d6fdc50352bb18564d2165b18b39bf8b0de39899f86720b9769d8258e3ff18d25f00bdf9fb6dc32e24ecdc41497fe51ff8e45472aeb60cdccb2449fec324c552d9609727e059ae43943e10d4231ddb4091f270f06abf4c69b6b77d6305f31f6fb0405c9bb81196514b5501fcc5c22960f36d7bc8457dd7b2199c8f1273c11689de8b74f881f9a38fe3f4566f913e4822a828efa6dee5f99c0ed161ebf45580545739991dd95424b0fd94884be306ac63fa64e89438ea4d5343247512ac219f428a2fd5121ce261f3b48fcf06b03c2b884e40923abd52458d7c7093cfcf24ef3cb57d022b7beb3626b0d18f37c9b1fadc1d6c8f6ff878978d42824aad2c5721de2944f6736e9bae37ea677b68975d23d35b5190c5014cb3083946ffe13e4698f5988dc15b8f72962c04f5a50de7eda2f7aecbe7dd3fa51ee9bbc1773a5ee2ce76397d1c1f1222b107825ae8aef91a5dcf29702d5edea68e5d0ce41e83c4bcbddba433b9e42f65e9eb67c09cc5e3843071605593189a96eaa5e2c6d85ef11f5808c87175b1ff2185bba552126e61f9d9fb05539402644c56858f70caf91bef809bd50e4918442e48def464228fb7db04a3aea28ec82133f7ca825cfe3222f1ec642861155fa480ab2694df896e21c0a8dee38ff97d831936288d9c46ee0098cbf2ea5ad7e24cc2c276388112a9a4831a287e486bf539a602e6725b30b8c6fa3eaea83e807ada8aa1388b00fde0af59dc418195d0d7063c74fb1969a66817c290330db78efb18a252f6b22ef56e272621a5c63e1ebd2bff1dc6f5f67cde22b60ffc5d5986316877f0ee9d79a7512d06cb75c48242f008d531d006d7b4c3688c99d2b4e381542dbd6f477fd7e82ed8ebf9bf8586367c3434c5a2015127d4d390f3010dd2b7180c15ff4dccb8dcc7891ffe95e0c6a86a39c41c77d868dc1861f106a3ba9ad4cc6d7b4c08a17e565695fd9192c06e7cd802a9955d52add071891ba92d02406b7b14e4a53c64bf420ebc44c8424cd75333143a4fa19a222bf0296f3cb7b82f673b38dabfb3411153c87cd5c03ce154e4f52cdbf6cb2e5295f545200f9504eddd12cc59024a5b0bc20394270242625d26f24c03937779a0551e31310ddab1daeb3621710ea83124185d9dfcee44786ffdebd14f77c21420bfde9ddf905b3d3e41dd7d366e35bfcc7a0aa0866cdcdd35151cf72c562d7fc40f8da080f78df48bbe553088f589f69ace59be8c09823f4ead65053c3859a2273161caed3e2d35960b37e90c948e28e72bf6ca9d41a69ec4ec0bfe978f84450eb10fce572fe1d87716d7ff93c6b447e7748ac80ddcac6b9cc531e1a1d9e64af0b8bf5637c12bc074d3ea0e156675bf5ae8be019cac58e31b0877e8990bc12dd55a603bcef98539ebb5fd8c57341b19aa2afd073a518faba5ec761dcba5f3303f3ddb7e3835c59ac79780e3c34bde1d8142a78324e8628f3a91815565611244fa956807bd2930e340c57e43c56c680df61fd27deb527805e22bf5dbaca212882a60486567e08b1d47433d6c956f909588cd3df396997a820b15d219155bb059b197a026419d1666b6fb10b8c7ce85984f262d5a5db0e9ae840ad6838f412a95b656d3a641c2d2ca03c9f4d7ebf40b55593223d051623907041fadcb95fe1a3966e84d395a34f8d422facf20827d2146483f2a95e01f7341c2b5f30141bb5e05cde410b3d1a3d7f354b338a800ca8f3b33c6206913a0abca2be2e4495f71b1c18c09bf8f85812eb4e77731aee15a93d61b66021f4a02c5f2d10bcaf0be6ccd80020655c0d4dfe8ac9f110557cedd1e65d01184a62b340e8ba5339e4e905f7d15ccf5ab68383b4bd47959f2ca2a9939eebf4a41361b0d67f8bc39fef817820f9e079947b722e0ad60d9075b8da828d43ad73b0b8e0144680083796e3af2967688567d62ae00ed6d1921c925b6db4d23bd1eb42000d62c83f440490d1de6a7b001ff69720fe5e88d899a558673e503bce7372b7a1a4a1bd5676289fe6554260de644167a96ed9ae96195c59adffd16bc9eb1a9d688709b2c117235150e8b844d8e2d80368cd1eb5a1c1bfd24b54a4e888b3830fc149b97c8fcf911844abe9eb38cea088141a05e4e929fc6712b52416ce3f2f18385cb703afa59b9be96124a680b37c3c747e0b3303470a43561f14948a9ffe789e535e4266388b7ec3636c888b8df4041dea8d204e73192811980685a3e3d9cb3f73e931249acc5387ba605d8eb25bb380abbb4405a3e44ad6eef8aa247166f2d4dc97d72135cf81c5de850bda1f8aba6a03090440ca27b392b35c2212444728f3b2f36dae4ef40915fe3481d57beed5fb39250bc0d429c75e7345cda9269ea0d9bcfaba9bf6cafeffa4e7b9fa7c9c2af2879c7023a462a29a01c0abb58d2e5e3fb6c6578418829709c17f38822e3bed321ba3f6b43ff4de9e8c0318bb4db169acd04255f7849fdd065b9a375382acc277da48433a7fc657e4827a5c5697ad9fb4a3a7216232aaee1316003d903f62f9bbebf0f842e0427a4b503e3104255a6e9dfe677838c724edb456fda7c2dee630fe3d64cee82047d94d62c56602acb8e3414080eadbcc7e942f1af1363c2f8fca7a81c63f4441305ad4a1e2259dabf63816e82ade41e88dcaa22764c8874d5008dc6e3dc0f6f401566e9fc3771dede2315704254582973f26a5e6e9eee886dbccbff87ed4a8f7926cce4720ac495d3dbf5e6152cee0b1e81449f18ca9e0ce937261c388cddbb7e90df7a8b7baaf8c2cde59b50128b2b6896c897dc20d59ea0fa9b9bd186073ff8b39a2a18c727a72e8a861830f3cf6636c704250d60c8656837e5a56f55200ad994be4576c682bc12b2c7f69a16bb2fc418429ba524f69b6627f27fb94bd4c03ea8484718827fdfe5d6fd7386b4057503057353a0fa769c8c15eeec1f251bac8b6acdfd20fc9adab5ac5dbe8fdd4630dacd258f4ef47b0dcfba07105e418dc0dddd42409e4e9a0482a346c6daa48f2f0618286de8a61e3e89aeb98514706369a210efce94a85b38c056ce08b6afc61e2831e682c23bfd5a359c15470e54430e72fe7b3c0da5650c78f87106177976170031344855f7ec447afd26e3f9090356f01e5e89c2cd52ed2c3d8c05e93facffadf8200f5fc5d517edc2ebbfdd3160f50c236e9199d85ba609f69ddf17bbc7f37c25b6c7064dcf8bf96a936006fd93fb266f2d99a324617cd31631509d692b1b3fae828af2d63cdb0c2a3281c951ccf0c5c8dfae23898aba3245b5c1fc10cef726ffea84d2febff3a035d498c43afb6a38914a5a29820c0cfb8b3ba0cf0f31bc91b030a4cc463b9f20405dd9ce573dcdcbe1b706aa090e22e55f612cfdb4b7bbb6d2d6a0155538d4fb01503796be427902b043f0d9774a5f0155a0be76055e8e1519db92cad1ff0fad8c0544744a203a68d5e955df7eff8e6eb6e4ee11844593ea28f4985cb80e6000f393887a97878c5d1b9db4d4fc0c18eabe906213ec3dd13487498c8a8757f732df45bb335e181e02385f841725ac63aa690acac635ed8bc06ae08c24608c76dbbba7c056400e2552ac7dba367cf5f7e19a1b9ff2270ca38e3890c371c0cc5f5f83cc798df9a907ac39cbe8c748567821bf436da2964220e4d67df963f830174ac4942c4df06d791c322d28f5e47f4db6d36a2a174d7e88a379b153adca711f9413672295a2f13ad78ae326722d07394839cf46c3050963f06d98fd2203575e12ae77184b39905dd36126fc9d176a8ddd3a81f726b285beb524f43380cf3b3fbdf3e55048a36715a0b02e504b5aa7b15d6332f89bbfa752ebada1f8ea74cf21831f1f3c95f7ffe07ba971a24614d42c505ae042571b7109a7313c4c50e038015e1bed6557e4fdfa495a877201d7ec51c342b0a2e45d2fd49b5784e2d45e7675716a617853f722c4c75bd46a026aa0aba49c7ee48624337a1275adb8bb2d40edf95b740957d5cfe1985dbcf89cb938e4f1db5455a11f64b2e961649ad9a3d2381052733d122be62c6cc630198f201d9e7b05e0d2842324a994b0f38e4150e26966d3127c5fc40448f9627a4c8167d1a87a2c0f4e77cd6383cb694222df0229d6f0820e567486d53e125b0f650f280bfcecf0af182be4569de746a3205cca4a772db13d4501c36cc7214a5cc2a0e84812db7b75a1e9fc6bc2ff29e7a3ea95162600b681465521f75e40dcb4a2107a4d35fe67626132cb843bd2cadcf44597449e1424b54628b794384cfc70a6a3a86a2c004bb39fcda3bc1d1ef64bf16c0cd610df5f5e2c2d419beaad8925958eb04a0d4c8dd5e89f5e4900a513804bce817e78cb528a2783b5e7fbddd419b9d91552ea79c40e8fb28f831dba4d0fd1d35839d0021d60fb944f2fa91d022c3cf4a22ecf0c34617f0d97c31089bf72af39857ab92c4a6fd2f0709084a593ecffdcc810b4a52fbe595a72d5c552d3dec724c5b69102038d7e20b451eeea4b9c1fb865188df655376e85f90e2dc9e14d0ae356ed7fc811468a50dca194162f7726b66e895ee0f1c48658b917cdbd59835b5b025aafe39f9eb3f2adb85ad7b98e3ba1ad831e83a5b136ac410ca4dd9cba8d5fb8a779d5313fd56eec740619b290a75b92aab94c51de39f614ffbda4fd271f46211bf216f53ee3b555d2a9457cdba6a738a7a61dadcec36790996ac67138bd2f38f614c91bb6b8ccf20bd548fa6ae10991be01eeee170e79ad6e4eab016e5ad76a424f8f9486d9760e72b82b8b09ca0aa1bb1af36510dbeae21751b99771154256c2c45e59e5efd853043459b11df5d4d0e80336cb0e83b9dfb4ed1d59389aea8b48b174832f3417bcceedbc2226dcfa599a0ef6d376fef00706ac7d3c6db68c749d5ae50dda0db9a46674610aa0bd04dd9980c586bf668249cdce50b9aa821e8a33f751aa1db4712d118a4ddeca3e117b71ed49e76831736ee081fa8fb7bb915556846f369b6e1c6164e2f4df61842751fef89ea9b57741603cdde0777db01c46c6d2cc4559ac9b440c2a10dc815fb45139e7d46b0779e95d45a8b3a04a2e6454d2ecd6cc78bd5f5192501441f241b1893b7b24d4b7e1b5fc44baed6a070e8b78a3f37319528397307311443260b83a8a36602b671864c7fd1b9193ce2937b5775b65011c3bd4568266a7c2ccd014fce90b39117fd4031950c5d759f36daa857ccb7492bdaf2ffa4543ff51101329d5080d628bf52e6767fbf13b81c391af3f9497164a6a5bf2a7b15e9802cdb111df7d9072b85c80e9151e1edf14127fc3e3da3c27127f64b239ce0f26500c390370900fb21b8333ed11e0983442c30e5772627cd02b94ef25a98af303573f45e801d08fe5dcadc0e8f84094ec63c7245c59f4e2d984490382cc29affaa4d8e695513c28d0895ddb3eb71e40be999909d01865c089f9f52ccfa23614a5f4f18285e872c9f5cce92f429400d0b3dc1f769e2b21a3ebcbe6ea4d5eb554541fdf87cef16b79cc7b94acea8e2d8fbe5f92aaeacda6db360d0b2043e30f1f51a7dc3a18fb735c85445a72c80a2507859e1e80346067a384c88abac1d4f68f37984232d2c69f90a5700824196f09bb5fcd44dc125de21076969e114e99bc5755b1272ab42b219bb8aae5e868d58b05bb5f3b5014b26615d90d6af4672dfa9edb61e193686592dc7a747049ac4b2a26b688632f20c4dff89c18e55ad5753f66ad43de2ef478b8ae3eb85186ad79f74b38d54a6e6d7a97a582ed41b543293565f415bd390c4ad179f892d84d00a824b851579e827c2232a17a7d0c1b52a3519aea04fa499a870e5f4801e7bb5e4ab3ae533e8226bf85aaa02a81a4b0894bdd5204ada20484f718299c10330a84dcd46dca12586ac1783b00be213902bd76ec55844a0013e56f249cb2afe699391f709c5efcb701c967648f7883f743ea2b52e5a886f26a77ef6bae094619b4bb6ace1553cfe48e894c70c04e769371fd78f17965ba67f54106ce8fc6edf3323750e6ecbc6c5deb4e0b372e80017597d27b953c6c68f3f7797253724ef1385dbccf647829d1b18e325114bbf2c316301b3effa28c25cbd690d894232bafa52630f8ad19bf7d826825eeeb90aa7f9fbea992b31daf3ebfda4445f48f3e8c496f120534f5ecb697b31a8ac363fb4501c32f8a1e3eccacef1f82e6f48bc2ad9194e68bc41be8205496df1be8c6e045732c8b3ef3a79ad157cb0624f8d5fa163997ba2c56bf7cbfc0c13a4f74e99d5b91d77b0a1bb7ca0f4cc6d7967f14a7da328a32c0a218056d1ab200fc1d5a020f8ec71340266007f9da855c5358db9a59ab9ea232070783c514ce792bd58f4a99ed613dd86337241068bc80cc87f8baaeeca0a0454665491193b7b30bd1bbb2c661744fc6badf900ba65caf8cc31090ce4517328c09018a4a5db8f0acfe186d22e12485137a776a54ccbc4881357055317fcc723619baaa50ea69e4814fa98da522f9feda0c4c43ada071038e59ce79b8e41e21e7c9c5a1d59c62eaace228393aaae8b29aa97606d2e7036a5f9977662f52811a10586c890f3cf8e49291aac40f43a22c32374a68de9696f10389387de533dfc6725a11489d179efc196e251e87e1f709f48938ce209f45cb7a4730579b8bd87f0b5f2b8fac27f4b2efdc6c0525dd546a1c68949f602623dec07b1efe6e6c3b160a2bc0fffbcedbfe416b2dfb651b3cfff6cb97986f1eaf09179a73feb53a30dd5c42b6564a572843b5cd3860bec8df902e4f58e3e4c08465dfb807b8910ce9dee01683621824f74aa704170e7a793d3560c1674313814422c6ec94b06d853adb18b1d7cb03596cbc17074a3c0559dc8bf7cc5e02c8601447a2ef312a68c6acc203f7c1d3764c25c77b60481a5bee7d9c4a24e3cc382a25dab6c63233af0a6bb6fbe05b1ae07e5b8b31b7411a1d7337df0e253c93c31852e109b01e07579dd63069ae451b16049c5404e1d7a8cf606aa1648925335afbbcd65beee4a0de6a80b0c8ca4c4f3e6df9ce8275741602a00700b67552eb954d9fa13c5e41ae6c07c122dc29e4bfbe8c1b66c833584b5cb2c89daf7c87a152b54a2d8eea6e18bab0a800866acb6edcebad46d5ca9f78af23cc5d78c998669c9c621e2b10e2080e3a286608844a9d4d16848c7147bbd4120bef2222deb4d5c5070dd4139b8a6e4cf64a3b2f9daa8ea126aab34644c723b277aa191930bbfe4008e5c80cf509dcfbaa9ac4d3875721b6708922b3c29f56b7b65ed2638177278c160d75e1066062b0f2149d7526e983ca01d02a42d15085418d58f0a5f9bb46b5acb62c5bf68a008be1607614d7b4c88fa778f8a2e29501df77a6c1604525a664d6da781d5770d227847203c78d207deba0158d7da02c87bd83856c4fa5a663ed2e29cfd5256a83fdc57f249cdff76c6e5b6afb444d66283822443a90f7bb2c9655a8cb8dd41a9a98c5e8786460ef800dc4dd6945052387d96d6bd49aaa4bfd3336e4a958409aef8153831c46ac4acd3d5c170a8688806ada808c95671f79e3f6a7a84a5d51aa2df1580ed74f4b68f43c4a61d120562705f7315b5525a28a22fb71ad66f2034beb4fef630c021f30b398f2a95e6571231f9066b7864e73158f5c79b5e7bacbd4cdb20ea386d1b19bd5c1da63eba2b1813978b645a1ad8a0f446a0e1f6c9a23167ce72e87b620430a97fb9551a56d3c562f1c3fbdcfb4d4c096da7dff8eee53251908380aa545c92240e45353a2f0f0d4c99f672aac4f3c09b3c2f2d60bc79a34cfe68eaf80c2f3470568fa99aee73b1ee484019692e46bd0b935dc1fde8747e6c8b1dd40f928e51d70f85c6ee45a4c806ada237cd3ebb8c9d49ba343aaa5f65b05e36560fa9c05555b5d04ebc876fabbcb9cbcf569e6483464cc09ce89a308d1680d69c564469ddaf040078346a31660e0f2e48103a67496cd7ea39d33bd3bd00291deae8bb1812ca46faa3f9b073e8ef40cc6f08bea46a806908ece5173be61809eab50d1962a92862b7e51b3b08a7d6020d29a27be34425b5297949750bc953d7fd83449738719fbbf57e2c11a81ad99367768047e6019fb8afe6d4884efe20ad2bb8737c36705c9af61aad1ddb83335538cb9d4f007b553dfabc34124c60bd61a1b1df777224a18f16cc6d7fdd403dcf837d5b6fa9dd5a3e4c2844bd1985fc0c64bcdca8dabafd9d417d40a7128c881b30de23b779cb049847e5b496bc61cca6a07abbc805a16f7d82462c6102d50dafc99edfb210043175d38db8d49a3abb7ffd2d351be4928916c3c966446a2aab3abd7d0d9a9909d48fcd03f29588ef1d159f056e904db3b4bbf461ff7f04cda2f7a3d2779fb5f9d59c79ed9e059e20b500cac92e5d5dd8269ad697fe25af041408e6b6b165ce623a8cd5362d927439752a1bc87559b5f0ae9c59ba1d9c729614867abdee46057c1aa34e4c56c6ddbd43906d5749b8ff779871dad53cadf783256c852d1d9be41ae9eb841d63edcbab25beb2cde6781e21dcb11e071d522a9a3317942a0b69cc67bc2aca0f6b7e0b592fc745dd31ee4ba2d045da3371c6a0aeee8dc5e790decbd61a06d2a82489ab33b8bfb313e8ab0f92366fc82f8e3b96e53daca649fa18d169caeb077434ede01110a9e75ac911845e6c7117047539604077904c4d8408f8326dcd2fb98fec44731246bdb1b1624bc79439f7fd2838062d66f50086c64404451aed885dda9a46be7974d6f07aef4094bb3a927e743e93898ed6d1ac3028a0be89b0584b9e59f3e4125194f79af6ed748ee5a04087befeaeeb7aa33bf18329e3b65420e6c00dc96e713220d50d12b155bb7c1768c3f81e97a477fbbd942a421e75ecebe6f30f68da5a0e45457e40da21d359979e934921ec03eae9fc691d9f3e5963cd3a917b9d7291de1a7672efac6bfc44bbeff14390b8856607a4c5e3a35d3ce31ef28d732ff51aecffd093363beb62e24a0f424e23ac3ed4eb4cde2e1af7fa55bc0a26b9c38a481849ac2076f9890a83d281bb0627f10b8849aa1b0ec7205646a77cf12e3be6b1bb5a05bcef2c2402dcfa23bd4d7360b2518b698fdaadeff46ec9cddd748edb18791e661b70f26368816059289c8bec39cb21a0f2e13c11857b8a34648c91b395393b248f6a93b4cde67d6d952462af06ed052c5b12dcac0b4ca62260890ca1152626884b4f8d482a6d67173162a1de836d473e66f8114db7c8b07d321ec03f5bcfccb5935f08172acb377eeeb83d95355e7a3aa7d519399c882bfa8292d2abaa017c50eff8269ee95a9a3d9b8eb5a35b12702a655cbf8df5b1609893699a9e3cb9a9f9b4acfd4187b804ee9feb8b1f0bf87f963f1b49d9872bbff7828749dc8a50d6c93c8d278768d24fe13077e3b2d7d87bc233e25d03bdd74fb5abacd3a63946f93dd219fcc1c62de2aa43ac95e101abe62ce3426f33113b94b42210d47d128aaffd6c9fc639575652325d629616b7a4c6e3a743528d937cabb4816fbbcf696f2a8a5c3c9e8f9a73027418c44872f5136958f6aec21542e7ebcd91a7d988572d8c3e9f1623763ec989e6dc84cf46890d6434a1a670e99650b6073296d87ae656811a234da2575dc879bf6d2044be6f8feeb9848837442cb843421c54fc7e8e65f12342ebaa23cf036eb0f7d9bc2703f5f0b7a748f8823f893576504770472c3fe59db7162ca5204299255697029a70d8a346e20c551a3d07324d09dfe037b8e7b7f5be59d4edb46397fbd7c3ec3302f691ef795b36441d51b5031b95e281364271de174a3779f66a1870c1a923711155642a496098d310d31185d59ee6356421b3e50f689dc78391f6937ce2e7a11db482d35f78287ed148503d094f1fcea27af16bd11c6143cb153d9aea6f94ccd147bd18e2cf68e4d445cf41da8e4368a8360f58444d837e1268a1f19c85dcf52349afd997d1e761831727dca50958d50d24df56f5dd3413a0a277597f30279a4d29af50afe55dfc098deed3bb005d56018050f9a2f243126cdf9c4550157f4992d88bde94258eb4576cdd758104b9f3b5566861bd0dfeebc6dbaea97a5cbf9ef637014d9bc212c46bb595c2af1952c6ceb442a089d0c32b6b920835fe4b6fe1fea882e881af8bc40a2d2427f9859a0ac8890f13a417be5821587342260690828c72c96300c7ed8a1825cd1c23e7aea0fb61d00227286cc6f514a3651e70af819e5b0e1bdee92ba9aa78e31f18a1e60bb6beef0c3d359d193c8983102b6dc98cff6c470141be683c7b6b1ecc2fbf82dc868391d3ecf2508e97276c90f1481bbf778d502835e0c4cffe595e2e3a81a8af3648b16d8d654d22ecb6b55b1e2033db819faddfc1bb49cc6758ff3d15eb8f514f13f12b93071e4524792ee222bcaaa31cd42dce189595454c6015c900f955a2eaded50042a418f9fa78d98551cc002db26510e7cb8c8cdbb9ed223ab31338c3312838f144694bb3d9e0d93fcbce002832c966f9a1c57dc766973211d7186ca7ccdb810961ab35509e20596a4a70f429109c3c973b0be37fabc5ad3b8ff2b4470a170b8a48c89d7484cb0177ac80bfb631f25f21c7f531909509289be7169e910e5c04b4ecbfdd87d6e3f32af92e9d54ce8a20ab2a06e3c2ad42c09f0bd2718196dc4d17e466eaea75dffeab4b2ab28d3533f1314a98675c320aa9d59662f5b85cf833c73ffd256d32e3109dc6fcf01f9a2dc0a80a866ed9eeb8e8248d424f391456c3e76ce6d017fbd9ca8258d4ab762b13d7145b35cdefaf79d7aa2746534745c3fad68680dba8c585db377aeffa4017bf26ee728fe92d0dc2dbae8f3a4ed6f9f6d68c544f5eb78c15229efe8e77416622de655c53dc6f2e4ebabcb9790f26f1674038a4942d6d4e3a276576b46b089deb87630af8d8a6a4d4fa53e4aaed27d872a57fe7bfdb7ca3d53db5d771a3bdf75c66fbafba80064c571e50515883078730b9281f631e64bda31bce46dceb17b417c6a79fae9f0a3162514632ac630f8fd98985952289191e06c2aaf2af1c7f8fee40c66d104a098234205b0f468edfb89c1b7cbbcb94a04a3ad9c812256a8113a4f86697f8a06bb269fbea16140dd7b91da686fb0e1044b497b881aecee4f4d502f043e41b90011194217438f5ed77141e8374a4f5885124fcd80aba734ab026d9d2185abbe0838097cb429a22d372abfa05f2122a756f19bf2647ce507aa39dddb66c5c4b6ed8169a49bf8a0a03a5af42c57471865903cfda750987caced7bf4902d14ed3495e492fcfc54358ba792fa1878b61aa8568839cea23d198636edb6a2652e4f8ad298ec0971efdf50ae3375649ab8de742b123478662d6fc03745d492b936ea7757c504f0972576849447fbb0e203edc6d99ae72ee6c501fcb0aab15f97bebca70ded7c7340adfb9ccdfc2a8ed23555bfbaeb3a4f4e6de179b1c5f28c0155136f38182db66128d0137451f2ee1d46c93da8119974a0ddbcb360afefdf6ecbfaa94b280f375d55fa89cc867f4950bb085e96949761765cba9b25664f2321c499d719d430f1137e0c2c747e3f3a47ed133eb728cfa9897580f139f36ac1eb0da8cbde6b955701e6e2e39477d646d507f443dfa50f9b623d919d29141f310f0e388fa0e864c7097ccbacf3b0483a08c7792f44001d7466e0128c57dcdca6f7c20ef8ee5708b0b7eed45780371bace60cf836fe7c47f5a0e19a5bced8f30d779fb77b32147051ebb51a43613e5aaa315b33876ea0b3302b146be77edcb3c5537e005ada1dbfab7c52ec8608d41583021581aab21c6347bc2d8e669d0aeaaded26f3233c84e4a741753a8ebcf57fa36e18cf8980e03b450a805dfe16c8a903e9c01c6f9f1d5f0bfb5b12971930227b0577b4b4fd1d2c237a545e981a5e8f523fbb5664c0a30e564b31a5abc0bce2b536b7b964168d07520e45fca920caeeba7c93064650d10c8daa10a8acdc3ae22cc89f3dc2af45575153844201fa5423fd7b57deefae418cc216bdd3066d837f0ffe5b4a1cda62ffef94e85e12a9358ecf5030bdbad24884e03158b61afa52101f17f81f50d28b0c00af5981f756c991833a8c668871e8ae3981f6444150fc374e44da3dad8c419f50c2224dfe5bf58a6d0f1facbeb0aca5b7666b85550381356d2e0cb073ab37a22ec499a91d008c2970a0fc2beea379be501057ed0f7d9b38502688ff65eabb7f77cacccadd768e518ee7c31f6b36dd77edc8287d086b3206fdc604826d027e9566d7cfd23b54f852e7e07544a9b2b0f29787b69a6c3b324548a6ca8e2c8cc39bf885e4c930ee6497851ef31a2240aa444f58515dc21362cdab08391794610b466dbf7c8fe00dc89206a632537f095b130efb6ee16551d9481118ce02950fc774544e1ce22be6ceb228206484a5561917d3762a91de0668b6d2b2ff95dace06936f56e5b4feff162918d3830bd29e97e11a4a0dc76091df70021973157dc1c0d96535df7ae7a5c9c44f2129607a4c832e1596a2878fe0b5bcfd48ff394fb6c0dea8ac55488cd08706bca62ea9b11dba9301d1b318d33179e094fad91728049f21d326510af5db5c68661e2f907dbba6416e44f21ddff4c7006a0cfafaf3012fe2c78d5c8dbf68a98c769acb8cd23fe2c5059dd83ace6adfc5701f57a63f1d5ee9ff6e010014ce9829fc6ca526b3c6dd8c8ad6d3c4cb5f924f1abec400c2cfbef1c1f3dd33d0e20df7d8f1a0eb5ce81822b621da4845fa6c1de1859f802b5499e5ff4fc397aafcfb52e254f60346930b206d418dc1bb280b196700e0e1be9ca175f74983e806fc15a7b24e8e5d9500b4296a94327545ea429282c8e35ac5108d677d248d84f1c4f510d0f180630c5830b50d23b5ca15c89ce26f22d00df499d52a6e3e247462275bd6e164847a52502422d9cb3a7050832c62961415064ba411b72c4d52f691c789e80ad81e592ff0096149faae7fac7911776c09be070e5776b6381f7d75300e3432a3226fa7c148a021ec68a294f0275d6d59a624f577111f58657958140181ba745b69ed5aafe06c54460236224690b58173a71d39074369b08377174657ec2b025f9d82f36a0a2ec936d03967a2872c916e9c017da111b00119c04e393f3d879b943179ded1e2c80d8ef3645812479f41645bfd0f394240d5c337f223a4af613a5b4007efa0a37cd6728eec4dcff0ec733d75ad896e26dc7a375583ea60191628ae088ae716c1088f16a838c6648e22fc7e40292dbb35597b4873c1215a8a6262d92caa0c1f6715682839298d638c627ba8528caffe8e301db4f84160103d9f4654207219157c63c763618e9cb9309ad9c57e5818cd4292d00f4ff521224cd6ec35ce4a9c04165f74f2c5feee11e7c8b490943415648e110f038149a6fef885437ea2d8a45cafa616cecfba2ad27c07a12f6850e74a3f47fbf604df6ec3730ed55b52c39945a678a51ede080cd7e647d84b10a08d50ace4227d6d2e5dd587c2e5e7f47275251a2bee4736d62c110812a1fb3eb53542768761069e5c0a5b663ab5d8949098a00e18101cf3502b935a2fac2d9190fd63526dad799096c5491352752888bfcd4fddf9ce353ab8a4e688e70523086923aeca279c6c13d8cd65bf83162580af12b677c4c84bef35a72612d5969e131578718ebf3f553daa72fa25a9af6bdb60817a6917766e9134e1d65b558815302fd673d271243c5ffd506214a1529d0bad3c6f2efe21001c3f91f1482fdcfe761a69ce1420081b3c8dd21e827364cbb3013c674cc622c73ef59ff54d548d7f6410545f8211faac9e20b61ffc45f7bc0094725a50646556adf475987c3b3c808b9ec2772b4706d685f13c3396da9a6663068fd10e3ed81b8a133845ca24d9cc0ebf1532c8b89e5cebb587569b2b7608f5ccb8c863436cc6e7a05e4bd11e20160110b7ad1ccab326d1300aba18a8f8ff935dfc204aad0334026a2b71bf33de191d9625b0682c56531a056b28009949d807141a25e63b545687e1b13b5c52c94528b34696eab8827065e67a04f1317653b6a46f5426d735824d4878968c73c1446e03d20ac7503b2785587145a3b8df660e0c42f4a0b1f86c2d67d182cc9e3f34a88946ff5eaa9e34ff78e0a38580ac2ed1cdedc7069c62bf47dbf5850117873ef3daf61965aa238a577694aace8f26af8dcfad5c6b1805e05cd0f752d2fa8d4596eba2720cb2bd6a42026a3dc1c9362b83d9efceaf369d00081c59c2a08495ea90834eed75414ec8b75178ffb40f221b01308cf1c030e2b33eeeee26b785970ec4662b6d3c92a697ea6cc43a92e8b98dcfd943313ac37f25e7b98353e79a05955c7464fde3b0462babd8db8f71f74f1daca1b4cfd662cd9887de3c905d36def21bc9508f25e538a38cd371385a4cf69941ef4b11d39365a56bfde69f91caabc4cd4ab06aec2ae1b90df554eba6eba0036e217268dd48313582bde861affccc9b6b9cade5d9c0973fae146fc6fcf2a1bb2e2e93602b3698cf236ecb84886727f70e4dc38b56a3901453e689c71fe27fc59795fe227989d844dc503e21231341c001b8404db386efdeaa41e4f19019bc048767fd88c68e15081322ed666896ad14ffc96cd636111d5a1206b8238d4a91f7996158727cb2d0bd0074ead086e46b4486ca61a9c75e49d4ba4d443aa5229711c1b5e6fe33438fe1d37405f3faa1f152a2ab729d8aaef6ae79ca36df2170b88adc1b214beda05ddce064c320850f40d4df8526e58e591f87ef432173160e8dfbde930286885917b22667236f7d763a4c0dd13083391f2024c66894023410a2b17ef3ec263d58b9de9aa1e86c6795b411107e47457cb445135e61f9976f0d4070fda59a8a58c46d5da5862263df742bd8cfce5832948e63e792eacb0fb2340221de439b00bac3033de4f31d954eacc7c58aace6e035dbd048c65e0784f904c6d25aaa59ce608c0dfc542c2e52ce13511b70fed0444139e95d0932e81d3c94968c34dd3bb7c24004ded879bf1d6fd6f36e23976dec6411acf5fc8f460118f9bfbc336870f559a8293816438b3671cc3ea2af63f11daa3263e4b9b872a3126b91b7a78db8615893736c4df9caa09122450a62c3d75673bfe3424fe9dca10dcc1b68c613a7450a653a36dc4aa2d0ebdf9921671438d0f96913bb020a29cdb7620a15dfb9bdc654aaf2ffb2bb464e7d21cdccdef9210ff21a1946978e4e28d8b1dd1ce66702fdd8b0f6d6377c395e29569bb32564b7de4a3608e14f439fecf2d964311a0ace6da3b181d796fff474174bbea3a1c2cb111ae0f68c2434ae5c1e7d99b8bca2403298e13522db72b0638e66f93c49947e0744d7ac44e9dade4c7e96c93d24c1e23955835089b18a11c4df8c6703909e0afee1c5d6298a4dd9630d095dbf82be3d71154290c9afc1f3e60d44b057cd2f48f1bf831601f4ede1f4771f21ffdbc05c04f457e160e9e2e1d875d4b1167bd3cf1d95b0cb32c41d210c46f24df975c3f44e8775298d72e3c8dbbc47c7e24c461e37440ad2058de8acf7455eb27fa2ac50500f67ea3676e06778a8c11b361deefa35caf6dd87928cf36841d272c1ed62e3ed0f0558539faec03da536a388dfcd3c7b88231e720586e2fa7a8f8dedb1c0b5da28f85f3be5786ec803f638020262dedbcd26ef266dc2c883e8c86c5671f03d57288fbf85da3a9a4cf430ab8bcf8d74622557e7f38e470ea8f6e2a6b8e06eb715f1b3cc3182a12915c2c46f4705478167f290cf671e06a74b6864b74244ceeeab89d48eb4d7996705d7788ac2c830cc81ddb7963a03c3043b706cd686618fa048c647f5210a9755577ac4ef4ccc331d86e65bb8f0cde5c911fb5bdc8aaec8c9abba32dfb49922b195294263fbfe78b6eb28d01e8ac599144b977f74afbcb9f9bb3061d5678aaf2d122a50e92db74ff11add9d8f9c0789c83314b1054009dc7875754359d53a250b6023e9c804e721e10ccb66b8edf10384dff2616a2e97fccb2d2b308cad3d434120a630046d638f57f2e69a9755bb67e566614c2b87b26addbebb153f42a95e66a3ffde6f69dff327233feaab3ad1344d0799d75cd4e2bb8326da372d3752a1f10532bc9f12299bcd7d7cc5291dfa43dd3e8b695ad8a00f9fbbd168de1d935fb1d74738cd98afcdafd6cee15920dddb4b4d04aabd7c5b364d364b69a9ea4ca1b5b1c09190412d1fb9fa0b7c85b6e09aa7d9194cf1c91457d6063ea4f7fbe6106eaec70454f6bb6a58d98d561e690578a1e3c4041d722a828a2d345e44363cb602bfda871b4cf6297f16dfc14fb61081de0263efecec2283e79fe77c396e4837984afc1d638bfed210c40e6fc58f8c639dca5cba34663934fe011181940028d53010338624769b4ef68aa75a6e3ee4e377f8b8c25df58cea3e45b2aad3bd9603c6a6e60d10b40990a2a611bff135f0e500b43bb14eaa5a9a6bdb6c5d159cafa485fe85fcd94febf0df6259a726b532e02cfe07b11149c0332b63c9a38447230e7283758b45dc2b6aa859dba4d3dbc4fc046b6a6583199585c55384a5d26ab9b130c2cef7a30d80d79e29cbd554611790c0403e9a450a0648c7a96c00066b7806a366cfe9942875262bfa109c1149987a691e07a969756e817c1c22df708ded272854189aded7f58604a4eeb0bee6bd69a6faf79e340fe0c2e5c264d8499e087182b1d9ef7a6175c91421e6adf46a2afacc2e35d098fb08cc14c896d28c07ba9a47f63a13717ef19052159b0a6cbea3263a2e95a6ae51a4d324dadb2574cf87a435122218f5a84031a191c79630d1f8137c135b23185919969caf2faaa6a6d8ceb8545ae263b6bac2bd86b2619b711c4e32f6aeee76a3691fe0ebf4d6410b9dd43c7e84991f8b45163c7d58fb94ae9efe573e17b2811116ed6de9d648d33e499bc815ba0aeef7d414de73fe648b439f809c78c26a6ccc785a9903f747d3d521cc5363c5af3692ddb819270d725f6620616c2febef30d9987e70910bf9b8b679a3737209b60c81f300b4b4847aedf68eb696710b3b181a670b0d774affec3a7b8fb0f21770a1ff02dbec9ce2829afea0e3570913eea905e85709e986df37213c0f84e8f65a4e9f8c627bdcefd98ea0629bb5549294b996dc3dc0ffc4910e3260339d070f4298401fb4050c85a595e431aebb6b086daf64a8ba1759577ce7d2bf0562fe21f1c55f4c60c82acb5ef4d99920d1ff72ca5cd8758fbd86c6b4ea4fe0258e3c3731968b2192c785244a53f54d94c17fd33ada82de1a0a4d487d8a25c95d7d4903f4ff87d1c391e5653f1e7f0a13ea912a6e8d04eb4ce33ff91978af10cb0ba2ba07fb00adec9f9f9faedc4e045c419261bdfcc125a71f84194d1e6bb150256f1a280e12e3466f28e1ee77a9b28eeb561b6f163f1e5d218df3ba5acf5144f1013af17b59484fe3ca91f31c92420ef3eebaf171bc08bcbb3dea0cc9c7eb2d33929738d9708133439d0a44102190ad5cde905e11b78ae411509c54ac37a878c366a7dabdd24043d583403acb3167a400c6ec36080586bbd688809213103daa6cd9af3cc08156517703f36d31a85ce1404ff9e55b667103c9dc0bab910deb9b41ea66dfd688f1aacdf644a3547ecf84578bb0bbc62fc91e646ef807c97189aea19676d3fb64935b21edcf6de4d9e8f27d5aef758d0a05ecab26743d3b1ba16fce66cc87c0a62cdba1b726240067fe43be6410c2421dad3fa9eac78810494b3605ec3b1eb16675fc3ac35a649e7636cc5d6ce7abd1148836ccd30adf9e2e05e32017b2e09239a452538b80c37c55f8a099b02c44ede797f22950ea7f281013d577a936b5eed6d3d47a800608df342fa647992df887ff834f2639194c1062bca2227b997a4f3aefec9f3c77f127812ef3a0fcf0cb52e34c2ebb62dd41c90b5b32b0c8c45353c38493f6c8b3aa3112a95b4b582660660c705f9b6fd9341f7e073014dd41dd0e5010fd89791f3fea2a9025a94cb4de8c02b433b37dd81f3071e7429f04c55382af4d2b748243097bb4d0217f014c739452a7b6dd6acf14738258bbe58eeb8d511c667b2bd6e3176a9dddb1bc73ab83bb3e17a3225de861764e9a253edde7fc4d984dfbd68aa260bfd0c69f8cbffc0878e0387a4508340166ddf9ade613db2525335c07ae2c274d0b3106baba66c04b4854ec4c02e4d4fd53eed918fa6956e55c2866ce0f20143e492927e8dd668ef2e1e3cc95e0ea173867e85cbd4b690b237812934334242da058d09e57ecf80413263280561dec09bff59e87670a6dc681aac6b8e449b6f33a1e2d68e63fc36e059141c2801051f8b3bae6b896981838129d832767db5abd44e00bedae21cdd16f145476abf9950477b9e5353c670213560e3a41e141ac4c57e6d0b5a3118191f1e2d3cac6683f90f497fe5688ebc74b499805a33ba212a89ca48d103eaa3b210979f3c195e37f941f882425cf8c3bc989523bb9a04f115064930a9d5142412d81aab42feca1e391d7ecd499bcf75643b8a5df01a2992bc8caabae384634d4017e87d617f37d581733e60aafeb6d92cea8d88d3fe8c24fa4baf845432db37f1a8343ed7a2e68a31de93f78977c91fc200ddefffd3f5105e9448c6c187229a633e93924f8c9634f271451f63ce9c05313eb4d804e1c39ee848c8f3910e85b7310b3ab95fff9f6417182a3375ab9109024243af5a790d78be3e01b9b87f3bdbf54ecfdcdfe2a86842f6cf1028bff1409f73e7d9e7119a2b1a1c040abc2df110435dd18eddc46a727431e55b5cab7182977498744986fde1c4a4417b71e1ce5dae8d6ce8278fb3fd2487ad39b6ec898d2ca1bc9a56e0f6f23a202bf0b37f569fb0b5299bd4803d1a6fb749c9b6fba837e8cce3c803b598e5eeaa7b1904ea52a83daa2090ba3c962932c8340285d1080a2537255336e1d833d95ad2954cdfbc41f8f626ee400aa0485ddc7e02373dd5255b5f3ffaac17d7dbca1ce6c619ed03da2547fa530fb58860d547d2f1fce7a3a346fb4a66038efa1bf643c0c63cc756dc106ea8da1baaa957a4d9cba0f0f45a30e0484621b02f632f4416bf631f7c7ba49859704f73a090a1987a2d21e074146fb8698f422d763b7208e13296d6777dfddaab6a88529dfe2ebcbb34a1564dbff635abf60bef258d86d164dc1fc24d453d3ccb99198a3de447f873f68b5629841140b973fc5750b99af63279a4992d812ba53c602d888181a54250bd70135091cf688fd302c00bd704c2122793c4db7190231d216d5acdab8b6d33db448f0d2f4258e5b93f572d0fc70e88973302c2d644461ab9df73f5ab16d8f2cc14af35db91d6f0a6e396865ffb4f67c548131b76b1465982ebc1f2c201b1cad6dab079d4579a23408ff62af1a2f27ea4efc8673d3de21c0ec5736949b7e6ebe2ac3d6de64d94a6e5ffcc47b58112e58ca1d87f8485a05c7ca4f824a6d23986d95052a9b83add52a991f9f6b610515cded9ae904c4d1a4f4e3cdf9d18a4696c07bf41c1ce13901bd5b1cb9cc09ae4882cb55a29729b35b6662a62eaef473a1b6a5f2909b43b59262ba9009aa7dc9d308f1e3203dfbadc32e016358b750a7bfd00a607c396ac0b13a41e01d62dd708969af41dcbf241800797134e076fdddb91184ef80de069ed252b8c1ba30f67ea1e7e848a7eda62e5d5b4e3c040239d45a4ae66bd390ed6ca1173f04ecd739503bf239d5293116506bf4d1d6150ed8a914dc7a1df61ac4c80003f532ccd703f30be558dd4874d900e342fa932385b86a5bca37fd9bba9d486581b2700e60d85817031a4af5e7fc9bb72ca8b72a1b0acd9c7832b14c144510b62989c7de04468bb4a7bc382613df46ef029906ba5387f11cd9ccdd6b9c03fc2cd8037fe67b7dae4cd4988b43e3a9e9113f18af12b9d749f7c87a6339e19edd604678d87e170f523684b0ca967824dfc1997e5e2688d217fd12d0d26871033a2b1936d0f4dd2f9560d2ba69ab19f7ecdcae37b33ce156be5bc68c688f063a4497960cf56c85d8dfe26a43776631a89cbb5c70dc289c74c2d9cd7181c94393e1b9b333c3817f00ab4911e744aa6e96562f817d3646823d9602db85ce0365d02f31150e1b08b8b39d2465560aa440ab8670400f7e399e2e24a1f96a6d56e85a1d311012d81b6a572545c80c6feddbcd3503fdd6e5d48584cc457b16c7d9908013f2c4585f5c89863a87a7011348fce2ba7e06139748f682bb94452db77a39c2d473ccfe3fcec66496410c4920a5a2e62bc0b6cbb9dce736146500daef3689b60dfb389988a6cbe5c7f6ff7a6ff9c991ac6749c025c45494dcd7e202206952b1a3398d2ba14166b5ac6f35a167b3e184639f34028472a282c48816d5b47996b018ca50bb09dae43b8371cb3e03c0a2a726211a418bfbcb6ced7703d2b44b7f6903d7054321283b44823c78804154e1ebf6e1bdba4245d3b5a191783239ff3d5bb070416c6c2dcf3ab8cff52743febc712151112a472a80077738e195c48e0a48f83612ce50a3b4f36ebf4867e2c25e346820a0f48067e99456102719b3f15ccf8257b9ccfdbf9616445bbedf77b05886b2662df6adec851f1e5225e8049ca5cfbfac291b4874060cf3bcbc29a096e00492281cf668fcf196c878f4e057929904300da8ec95dde1415d7acb013f354788c82207d1a8fa0036d9a296d6f3767fdecca974b45094e87fa6b3577172dbbe9abb915c2685971841eee218b0d8e2a97ce79b8f9979f11a9a8813023ac73dea3da4ebeadb9e2cd84abb39044b1aea10a1486b6aaa481654957c2d9801e850b534c1ddc43afe117602232f3c5edfe5feb8dca0a6300343a388fe545748aec0ab35450c66228f34ac1f86cad8e67349267908c94abf795d2cd0b1b7d6d5879117b6bc06f144c82c9bfcf1aa7717cfc25c609ce868cd12387f729a6a52c23bedbd66c90c1260469398e779ec245d0816caece9f9f3529e6a997a618f104ea636c8958cedc36c608a74d7f193350cb290565ec3af5da95f7fbf38172a50f349ef35d17044bcfce2ea318865ebb7572717ee7e5ab98261d7deacf0fe424c46f8cf2f52ca46e5873815b5c94a5728d58283089ac7672d7aa8345f84e17680c35020ef3b2b1206e90a879d52f5eac3638096d5a76c350bf2a4bdc234b1ff2ed5a4ea56d8e98dadfbeddca5ad8666d59ff1801732463f71f66f784e27ff1fbebaba2b56d204faa914383473d1a6a90c523237978e813f4fd14e6846fed337779e2f537e6e75d8230e9651742721a4a4e5cf0738325fca900e4e3629380e4fa45c171dc21de239d993d92c7b943d225625503fd71def1634f2330eb241a2d847c5c441fecf04728d56f014a16560cbc813cf3f33df6435669db61c73efaa9f1c0f7610316d6530926d610a48c3a3b8b52fb70f66101c51171bf6b50ab9877541c57016baf799ce4a9c245d811df62ddabc8dbfbbf25b5f8f0667ffade8302359c6cf46ce94a888874dc372a3488db0bb93b420165cacf47d160a350c7e9e93f150f5ded6c1bdd04dc52c554c28f333cc2d0900e57e71554e4ad41b3fd92349f066502857c19c234245cc58186a82c1cca2dfd5c56485844812f33d2a6b3c0cc06fe79071b56657cb7e06925315fb15b4243b09481c4739af6ccab532ff5cb116add61279ce9601441f3fa780f4b3ab117d7f47d620d73dc9196cae9741353e154b008ab91273739b1872b3d926b582d67aeb8a09632b8c7cdc80bf1acbbc53a51570654d28da64a50ee3176c77711793483c559e9bab5604cc7e4f56d47d7176532bf1a7b0824df3ac51484a6383a4246cda1be8dd691eefe12b23c4b25bb457183441df3becd07e630a3a4b9ef15e9eefd3b39dabda4b6d0839a2664ded91f2119f26eebf83e66953a19ad17bc1f586f590d6018ba5fb4f9d650637d73ffd16b43d605cbf670fbee645ab87e6a77c5ddcf93a20996ed61e605e2e5173da05827b66c7a5f6d716d3f515b0d0dd07c9ec4e160e358ebfc5721c4dac0b083a7e32a769b965f75cd7385e9b6b4fecd0027311d56ee3ec046964004d43ea1cc1298638adad478716971884661d19d89db7457e305345c36e5f717ddb718c16eb2f922cb98a6ee0119b85898bfcf19a92feb9f33385ebbaf5c58f45768cf1058980ad7dc3b1893a8864f87d6e93bd3dc63f9992f717cc6a7eaf30e28b0de26eaf6a54b86510589c5d5350ad0bc4118faf27b2860b37d650b261193134d995311dd4c51bedf45abc5af0b26b4fd75f653f4c1772fd18eff0879539696897579bfdf8d2f0e02943bfec80385cd609e1ef7e0f53216600a32f11e985013c7339157b23b11b7ad1a2da3ad34b93612e8847bc770875d56e249e5476fc3419ae8147b0ef46fad5989ef536baad8b456b5051d76cdcb4bd678f18eb2d39c5dc6c2130eed7db52c51ad59530b5cd4d49df01b596dcdbf539769a0f273897c84429d86e6f5383d91f749b3c5e763456476040a719bf16ff7a5d2c05db8c1374e667817bb897bcd97ffb625282babe8b9d7f78e80b24d8b659eb1dc012d471368ee7f6f35109839fb27c7cee1fe728267e1c36dff954069c6d80c89bd824ffe7b7e4245fcd7d43e9075759eb918307203bb175822f642223cdc45735fc8432715f85f33be57a50c416b69d2cb259a61cae1702d114a6e33ab80061eb3deaefdcf0ccf26b9fe201b6296a85cf3a00333bc1560bab9f644702ed5cd774ee93ec870510493e5e48</script>  <div class="hbe hbe-content">    <div class="hbe hbe-input hbe-input-wave">      <input class="hbe hbe-input-field hbe-input-field-wave" type="password" id="hbePass">      <label class="hbe hbe-input-label hbe-input-label-wave" for="hbePass">        <span class="hbe hbe-input-label-content hbe-input-label-content-wave">您好, 这里需要密码.</span>      </label>      <svg class="hbe hbe-graphic hbe-graphic-wave" width="300%" height="100%" viewBox="0 0 1200 60" preserveAspectRatio="none">        <path d="M0,56.5c0,0,298.666,0,399.333,0C448.336,56.5,513.994,46,597,46c77.327,0,135,10.5,200.999,10.5c95.996,0,402.001,0,402.001,0"></path>      </svg>    </div>  </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/programmer/knowledge/algorithm/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>场景设计</title>
      <link>https://www.ninojay.top/programmer/knowledge/base/%E5%9C%BA%E6%99%AF%E8%AE%BE%E8%AE%A1/</link>
      <guid>https://www.ninojay.top/programmer/knowledge/base/%E5%9C%BA%E6%99%AF%E8%AE%BE%E8%AE%A1/</guid>
      <pubDate>Thu, 29 Aug 2024 09:21:00 GMT</pubDate>
      
      <description>有东西被加密了, 请输入密码查看.</description>
      
      
      
      <content:encoded><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="密码错误。" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.">  <script id="hbeData" type="hbeData" data-hmacdigest="9e1f11efef98f865b43b6a21b8232cf0979e4b1163cfdc010d054289ba5d2e66">a7e357068c42329b8f33d37c25a789f17da67a35b47dde45e03668cf78c52877f1296ce613b69ca8273fe4c3bfe5233f311ff0992cf24b4b3905ce416e79cf1b9a92a22fded22072cb640d77ffa7d74a84181c4524825ee4835f82d8bcdd8a1a3a865ffb1ceeb3722bcc1534f81c666c2252c2142bb489cffb53c77a3ce32c78c1723bb98d42956bf921e6ea67fc70a4f1b4382435030bfa2adfeb038f6d3f2bc9ddedf6bcf29f7e51020efd532b29e3c16913852be26472755b8bc76a79d5111b350c0214d5f6bc48bc47a97f5c3708caa6c9f13dc4a0efc2f8cbb63e578712f73ae209f511357962847de773a67382d3fbb639697cb796a31ed67c5734d6b3543354678a49e3f5627cb97ac264ade966c11f89642e894d2307bac0839474299050427c3d34120a9edb9bc2bdb04d0fad193baf47afb70aa91c99cff91629b11c0c18a6f88327ff63787efaf0433b8a8dd00e45a3b12c0804651c005dde82885207c5b534a37f6086f88bda3b2c7863b61723fdbb42cbd0250b7541c7ef8973b4b207d8297ad0c371a0243207456930989239c9e14de08c11f683125b434bb6e944e2e0c297ec81d614afba1aba6db9e0d52752385ff82a09981896041b8b6ec19652fd1c3b1c2a5baf043edcf84fea56622e79f9683baf5fa7fec7958e0cedf0ff37238428d44db71fc35ef8161cb81daad72548d49941bf189248cab5b4e788ec66edaec040a6b193dc3818cd508350d586104b7d630e449e0b52a64f6a940daf0fa7876f1ae8a7b186445bc297ac2ae7e1d094164920a5e805ae384809afbc5d9dc734a8d657e186e3fda6f268fa938fadb0805c0849c1095f23544a2f5c917d72b80bc187efcc84ae023a77923c22d865a7dc91f982af678bb8e249fc018e926bd156ea8288a10511b86818bc1d44da1b55aeb4c409098804455aac4439acc8a63b1b4eefd017ed3df038ec864209cb910a4c54c0a5323e926317920f19b6f04340fdc2899dacb550043930e36d9174a79c7c189e0e0cd837a170bae48b414596075c7472190115e5e9492eff05cb518e9adfab480cb46a202167e0218cfac61f5ec1c1515ec1e6fbb4533495770e45357ee6b98cf3067139658c162a2c220f8ad79b36ecc4c23c4ba13ddbd84573233cd528c32c9354c34b8f92841f449fdb2dca48095c5c8681e0d64b0f7c949d877a250372ff5cf223d5dac998e13aa6bfa51070a57d872333bb17dbb776f5502272926c09152ef8ecff8b9d8b7fb9061896c56a75e2acdd2a9ec7fbf4b9b83e06c3c42d50810c592b2560ed673be55f893cb516a4cd1a0e8112caa466742454a54dd8b2534197ceebef5a0a7137dc5aa9eac3396732a886674bf301cdccccc1d2dd0920a0be1b12a5fb2c7256d3442744967a565e791025cfd40d5278e248cbe8b565b6047be03d687d65aa161b979c3b6efa2f2484fc480346f2947e9eb02f20e5dca235d946d9758d98662a17b9287741eac4bb22d4b16e462a9d34916afa00f76aacec21ef7d9ad69f6913d2a90409d85b29b540a7735afe83d19a3d1a45822a45de77ca3ce9aba682f81955136e5be6b6936d4954947ebdd364555dd31334ac2e8c66a665e76e2821286fa0af33e8af788b5241f1e3d950dd1a18e80b97905be74f56c68a2659df1fa82121c05bb3fb3d770790d52bc41cac9881a192ab148997047e3e31bace96474ca93c300fdb8ab81a75e832119d9e0da5d73c8e0b0136c0c829f932f0c3b63424784bd9ad99a9759042d68b8a8d81ec7193b9dd16c74d87945af173a47967521c0c98f2082c5cc6255cad38a3b5a4eb9be35416ea6e4309e261d8284add7b978b71104068e2b1c20d921d0c7b1e5389c57feb6737571e6c7c28692a955734f339dba9b10d4d2179da90ad84497d227f6887b3533e3cc0f533cb0f4fccb9b865e7756c6ef3db0a0633685b360e5ec8ea6c629620a4da90c372e46e57c9c64bedad0ddfc9b36f8fcab5935c59651375280fde1ea141b1ea99fe99c5e2cd5f34041e1cd55801605d8f90d1b098a2938ac104a762641faafe1170208feb5fd3965be0f9752ad6a9f1b55998e9900b8ad724a569113902e56d7439470e4670b8835115be721084e2a787f59d5c838c722bf8b69cb7f187344a112b025932c859027755ffc692fb600a369fba2e4adde7e9342370e94edb8115a1ff7eff9398175a695fbac59c48fab6cd73c254c40cf2c25f9d76666e9edf40450d7a66b9cfa38283ceda4e727e562b15df2eb5872b62838e56cf7f7a0d2357fde28a85ed5c85ff53afac101a1d27b460d585a49b01fa981aa91c550e53504fb036f2037467b272f39483a9bf379bfe2041e2b23c6503f33aac0f1c8d6a43c87dedda10fc096d09bc332447b4453e8204fc9372ac0f6d6b486bd7f48911a64681a87adae5f35438552d18beaedfe195cab8747847dbc6a6c205481da22423ef506d3adb513e72403d7485712e40920cb42391dcca587ba8941f8c9a9098a808583d78c4d570989e8919a05dbf4894b025322239c6a6ca2c0df000b58c3c5d5fc8f2f66fc4c7fa47abb06f93a997ec61df5923885edeadbd6791a3b42361a6ab6188cbf8ce2a1a4d8ee34b55c79d18370ec1e9d1b831f88e89ef37b89ea72645deed9b04d04a061dc192ade77df3f301ad8a4cc2eb5bffc7b437952869fc09fee67755cff3a86265d369d7c1265cb8c99f8a71515128b7b86c3c5ef603ff3b61d8b5d5facd8c3f0fe45486f1039d08f007c3f145c3c3b15b8744d26083db90dcd93fc6d59a48886d9c084506c10644cc14a7782e875864328c8502a84bdd6b8db07e33295829376984f2b888a3aaeccdd6c9fe09a6067d1137d29cc021b71f52cced1301dbe15794a7b686b2132595b43d40cb07e2f6bd5faae8b222ba98f4c33b4577226685064ae01825e85e31ce59a6a2862c32c8f5fad2993e14d2072f9a502866d52ddb8b7356572a72228fe695a8c7a635c04dcb38850f763de66560e9507396415556e4c3a19f31f8128fa762bdd433add2232af5385dfd4d4054da5823be6878d13752c0e1eaf1801a441f480b2943e4710eec50da503a9028c2fa084a69ee4c8f973b533c0144266bbc13daa06ce11fc1ba263bf47f2d0fc419d8315f01feea263776a5ce58f9ff2e915c9b281313c145485d546c0dc4cf87721ab7b217a45691052d6c4d5074219dfffc706c05824f3db865498b478c79e6af93a20aff340bec0fa874d9a7269edd8ecd4a80fa0ce1fcf89f98dcec7fff60e0e4fa47e543292cf48e4c0f81fb764055084e86447615bc09e49b16501f3e400339a85b4a1f62a26754ba5a500a3784d343c13f49762a6ae51e73e8d7611374da44212b4e924142a2e8a0af721d88b1ae11dc0a0172663af825fc09894788b8e9eaa79e12dd45bbb01260c74fef8c58312814a3ab9c7adaada118dc4dd0f9f470f4b740f1bd1a3246ea6540c379c1b60f67f6b502709964e04c953a82430ae03bae11d8a848eb17f3383d12bd21f5f507d5213d9a2967ae23679c9b21eaf6c7c19cd618dd1101f45c54c3207be31703ff8bcef3f23ea73d9e0a24a13dbe15393e3daff62639f39aa46ba787ea4ff02365073a3a84d2b605de74987191e971f4a6b9dace262545545f94f77e40fc5cc7d5051412a79bebb99549a7ac767031cdde31a88af79ee1f4c0d5cc0b99e10a08a8c6969447d6ee19c4ad48a431cfe47614ff9698e8c7f633d641ef6cc692a486614a8c65167276d8dc8d5eca6596408c10bf7a6c4fa6ebf067754733853f6e1b36f80a7f7ee77dac3e4cd74be136f723d7377e29ee87c69914aea187b84c33c5366e55da657c4815b3ba7b1faf4b6aceb4a16573810ac52012773d01e0c42129</script>  <div class="hbe hbe-content">    <div class="hbe hbe-input hbe-input-wave">      <input class="hbe hbe-input-field hbe-input-field-wave" type="password" id="hbePass">      <label class="hbe hbe-input-label hbe-input-label-wave" for="hbePass">        <span class="hbe hbe-input-label-content hbe-input-label-content-wave">您好, 这里需要密码.</span>      </label>      <svg class="hbe hbe-graphic hbe-graphic-wave" width="300%" height="100%" viewBox="0 0 1200 60" preserveAspectRatio="none">        <path d="M0,56.5c0,0,298.666,0,399.333,0C448.336,56.5,513.994,46,597,46c77.327,0,135,10.5,200.999,10.5c95.996,0,402.001,0,402.001,0"></path>      </svg>    </div>  </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/programmer/knowledge/base/%E5%9C%BA%E6%99%AF%E8%AE%BE%E8%AE%A1/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>设计模式</title>
      <link>https://www.ninojay.top/programmer/knowledge/base/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/</link>
      <guid>https://www.ninojay.top/programmer/knowledge/base/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/</guid>
      <pubDate>Thu, 29 Aug 2024 09:21:00 GMT</pubDate>
      
      <description>有东西被加密了, 请输入密码查看.</description>
      
      
      
      <content:encoded><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="密码错误。" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.">  <script id="hbeData" type="hbeData" data-hmacdigest="279e52f6e523382d014cf72a141bc3df30b4d6d57ab324548f7eec44e075463f">a7e357068c42329b8f33d37c25a789f17da67a35b47dde45e03668cf78c52877f1296ce613b69ca8273fe4c3bfe5233f311ff0992cf24b4b3905ce416e79cf1b9a92a22fded22072cb640d77ffa7d74a84181c4524825ee4835f82d8bcdd8a1a3a865ffb1ceeb3722bcc1534f81c666c2252c2142bb489cffb53c77a3ce32c78c1723bb98d42956bf921e6ea67fc70a4f1b4382435030bfa2adfeb038f6d3f2bc9ddedf6bcf29f7e51020efd532b29e3c16913852be26472755b8bc76a79d511b6d7c214532949d0eb414ef8e42eceeb25a77920bd6c736332f393b43fbcb160cfdc173b4b970e8bbb3aa0407f8c5076d2f128ec585f6c04c559360b68768d6ea9bc00691279fd45c41e8c1543d6ca85b70791c1460243b60030e2cbc75db0fe876345ce1da482d960e2f2c6aabeaa932e3200228a323d4e84fd9c2e61a65c8c2d8cf22d3927c6ba5612068d7a8cc22e4c143be85cdf59c1c96b072897ecb60942208ac9a9f110eca29dc7e08d20897e</script>  <div class="hbe hbe-content">    <div class="hbe hbe-input hbe-input-wave">      <input class="hbe hbe-input-field hbe-input-field-wave" type="password" id="hbePass">      <label class="hbe hbe-input-label hbe-input-label-wave" for="hbePass">        <span class="hbe hbe-input-label-content hbe-input-label-content-wave">您好, 这里需要密码.</span>      </label>      <svg class="hbe hbe-graphic hbe-graphic-wave" width="300%" height="100%" viewBox="0 0 1200 60" preserveAspectRatio="none">        <path d="M0,56.5c0,0,298.666,0,399.333,0C448.336,56.5,513.994,46,597,46c77.327,0,135,10.5,200.999,10.5c95.996,0,402.001,0,402.001,0"></path>      </svg>    </div>  </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/programmer/knowledge/base/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>面试技巧</title>
      <link>https://www.ninojay.top/programmer/knowledge/interview/interview_tips/</link>
      <guid>https://www.ninojay.top/programmer/knowledge/interview/interview_tips/</guid>
      <pubDate>Thu, 29 Aug 2024 09:21:00 GMT</pubDate>
      
      <description>有东西被加密了, 请输入密码查看.</description>
      
      
      
      <content:encoded><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="密码错误。" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.">  <script id="hbeData" type="hbeData" data-hmacdigest="cdf7f865ebd0fc0550aacedec5766ce0c838401728dcfca2b3acd34253f39e31">a7e357068c42329b8f33d37c25a789f17da67a35b47dde45e03668cf78c52877f1296ce613b69ca8273fe4c3bfe5233f311ff0992cf24b4b3905ce416e79cf1b9a92a22fded22072cb640d77ffa7d74a84181c4524825ee4835f82d8bcdd8a1a3a865ffb1ceeb3722bcc1534f81c666c2252c2142bb489cffb53c77a3ce32c78c1723bb98d42956bf921e6ea67fc70a4f1b4382435030bfa2adfeb038f6d3f2bc9ddedf6bcf29f7e51020efd532b29e3c16913852be26472755b8bc76a79d5111f167e022524963e2cd5fc86f3e55b8518453a5c8f56839bf8428a5e8f614f548d1caf3daec653fd8f03300327c753e03f66717f9f8a71a14ff05e31fbd705b6564ea00d02b91705f10ba492aca767d99735f0f4da355fc4f596c33e43ec9f721bb999222804748b0a4bba021ee6e1c2c766a6e4b8ad27f030ddd616f4895d470f04849add94e677dfe0c30549b2518e0fa7b9c8a96bbc34ff80f234c8a6e3611b63e44c2aa47c60dd477e1156f859c8a4e9dcd51df6031e34b5e827e951d687d42cb820b2481877f57aa8107e52fd73bf7f50a5352be468754ecfa09811b5104423c313d6d14cdaa7c500c0bda1601d4256505228ca0acf23068bb488bf80c48897b7e38c100099bb4315e50a1b54efd62b780fafb0ee4e425ef62f1c39fecbd261a786a9422a46ad78bde35a27e42f3ad3802b85ce201e33cdede57ec577235e8d515384875adcb54fa0cdf5b225a2fbcdb4cfe6f49b3a0b451327de1273d865553bb5505e55504655660f778d9cf8bc3a5d5b20c5ccbe06fa7ed2b7154492d939e079ce79423aed94a39289cf92797c81df22d49e702a2df974f84fc74318b8b4c1ab3f940f00dc274a85c3a1fc335adff779c76ff145aa394b7f15b5395e70b1eca9472a7d89b30374f8841706232232a565dbdd2b3c282fb31c26de24afd7e033a9b010feb18763a33dc16e5ab9945876d853a3377bfe4ddc4914539b766984c22670979409a3171eb5ea6b6dbc3ef6bcfa3a3dccfa8d5ea888b2a71fe940587a0a9ee70a635b60cc7646d170d91c2e19c27b63c90032e6a9705a3b7ab24a2eb3b3c25b029c9031fd53105c4809f2b6234ef2dcf7f1222faa40c68f1efe517ae4652ae997fd21c96af6459128d01dd5756a1f2108c50a9a1de79665b27f3140916f86237fc907dd2c8fc2bdc454521e126eea7eda73e11efd196d07a4daa6f89910eceb5e4d7281e9950135da9b9f8b5cfa71b15d5aa10e88470e1af7b2a6181f0d56d31600f5b3ce34f63b74c8a53ef601ded81d1029ca6f25b1a2314e1a4ae86765d69cb28f470766ed660ffb99c287dd91686d9aea0685cb7c91640234b1b3916fb1f2da4b78a743e0ab833c75440876fb5d07e6746ee33cf10e1474e11e6a517ef4ccae90d7b7aceb413a43d79f66c3e2190df5185b8a94371c6482eb2c6a2246ba5fbe415f98c2b5b8bb32e695ecca05ae65f303ae73aa8d39b533591ba3dfe83ef6c122f5eaad67aacdb193ccc4c31090428edaecace0fb59b2d573937962d612009653e070452a3cd68b638647636d1bf182c30733126c2fa0d8bdfca69ad3bbe3d6817fb57a0a91d63d4dd9f309f2f465a33f5ef6ec8eda1d905d27122a676156bd352a93065a599aa1cf9a19fc256b9ae6346c48cdb29f70979f4e6fb0fa5aae02bbd8b3145bdecab314224d32af215b391a5960894b4151eec910984f01738760a7ee43d879221c22f6f8e277b22af4a8230e55632b403d1aea7dd931d147e7761fb897dd7900559d27bd2f2e4adf730753b3f9d2ab0b4f02a641cf5527ded1078b9a0567f3294e7e9562180e260bae0aa4cc7cd763768036d0d05808cd998b0bce42015991dfa26cc6fa0b14e2888cbddb23b87e9ae71842fe84eb58c2585ba7f9899d70a364d42cf1ab2a2d77fa842d2fb2f249a4c3fb2ccb5f46cd6091eae0897b7229fc6e5c54523325d9ecedd566c161ce9cd99b3dbf206c80b348214e5b536b640540cb8e9d943f91d8d06ef3de15646b12ffccb5206e64e4cb898fadafbb4a8715829a702bb676c981480e9601e763719f15bcb2f19e5c6cdc37fe0fc648a42e87f10685645eccc9b569d0c0cd408c891e0e68e85850bc08a0d9d18196729bb80ba704096af211a4f4e506d7ca9874e399d0983df1b526389b73fa0de1a242fd31638b5a9b15821ee185844d9c78495348b55051faa2ab1f45220aa8d28842152ea2be83732db2e281b16d68325fe33d0b8e26845f34fbcaa19c33509f740efbed0e46e618dbbad00da5f30b43884fa4b7db8b827f75ddcaac98bed2a0dba28d2b8b5c52a1e390a1bfc04cf089fc85e4acd9b73300d428d0182f3b6b58642b6a1ec23a85a4dae30114ca14c3cb5b75e22d77093104c8b5359777875c2c6dd38e7feaccefa61ddfa09957ecbc1b65d4a382be77d191e07db8ff331c3c09dcad41fc0eaa422fb0b0e0631d22eb0a7a6285b1061c97abdd381d2d1cca740622ed0f4bafa7d0a15e5f1f0c4d0998772ac47017e45b570d078441dc5c4f00caff624f9132ca5b378278e905c5cfcd737be69738b6eb14c917593a7d5c6b960b37a5ad2f8b84c218abb7ef58730e6c6b1f2ba50b4bdb3300c9ff053519a791a18ca3f900f819e9f5d5a64d67fa91371186cd1eb1d79224f480550bfe0c5958e31599c14b3f4acf858697aef263912625bad4743cb93b112acd1f9a97d7edc761cea4988d9a4abd9ef9dad3ef262605c9625f67491f7886ff21c2409bf365917b58134bcd37218de55801c419ee938b7ca9f57157bb3143ce4e5f5af28f7dd38c41f2247d100b26d10a72b187c24830d57d34cc36a771dd9ab9230d1872b88c2d0bf00e7f9ebcb5e6f03a9e288316aa36007906005897cf8c0d935af93c4f411c2c2528dcabf98d918354cc931bdd467bd6afc4d500ab9d7e4c9a476cca9f9dbd2d4e98e2da4c4b267cb4a220f83f3372c5d4f37b316f0114ca92ceec0996e3aaa16a1018109042560264b8da26221eefa6cb2e6f5c5fa92c37cabc0551b3657904721c907237dca5aa4280f85ade4a5704fc48d8a6b30af97decd5d7d009585e5505c3e899dc91d6479c12a7da5c525e50b9de2baa510ec90b3dc9e4e3bdd23e5aca124db2b5527696a6950678c610e85fc8a07e568f3e4dce4dabfab2ff547fa3bf36fab2403b09cde048add54248c302ffc7a5edf11ad746e74af4ef8a176b6ad45950d0364359d43509a48ea1e5f2e73df267e8d5ae6697ccc6adc78e56381e4b309a66924b5e6ca496fbf7efb4058d46e558cd81fc2cd8547f3fb269531990da05cbe5cf10785e3c67a830a93de4e7ef3309207e446c1cc0d85da501a54ea5fe0c16134cac619920b1a90ad9d29129bb651b6cdc295081319ed8c382978ad94b6af0accb6fe063851e9dd6c8f09f227407eddb9865b400a0b9f5d8430855e65ffe1353b2a184330606f0f74c10a18961d40219e4fd5631a66aaaeb0b356883e58cb89e979ffb91473aeea36779d0a1f59b95ffa8794907ee6f7511373168b380a9ddb59add5a53931d4603fb31d15f871e802fe8c4120aa05875e93b830f268de67716b94e441d6508e6afb4406b9df72c4163a5cff642cec44c65024c6155a02913ef06975fbfc1a43d201211081885345766588a8c80d3a5bf8ede7cf6f289dc800274f98e1de69ea759c7788d254ee205a3829289fc0759709c35c48d1030de687046cfa8ad4a2e4a7bbb75f1ef02c4abad40d38e5fcd8891cf7d4229b0fd1eb9885a3a54cfb7be1398412066c4b5feed43f6e9bb9b823f0cf6f2eda1ebd5f91f6c9354a448b05841864a8cf0950514398b82cb2fafd6f65e26a3d80a09f310e0a47d7246592c9a160176a0a995d707b716156493535c1b603eef528ccb08732d91af4968c2879dd2aee581ff71d39d775bc55972243e61b2bb4ea1b85561f463744b88f5a180dd63515cc2ed4764c046de49a91d7ff445cdfbb31a743d204a3eccd907f2bd3f056f470c83ccbf9a4da413f7e74fbca5538994bc57c9076e1d0e72cccabc34e2f0b208e035213e20ed4777b45cf6808fddacfa2a4a76faa90f2d75ebc5557a0ecb8d71c55f7093df188c7925284320b81321fb1fd993dc419ce82253438368c0793e6b6ded548922f9a6b06463225da80a3f9f523ef18398da08aae6a8aa874a96690ba7dd2141e5e5e0d5d826f1412823d3c0e7dc9b0b82d6f5d9c6afe74a1ea42d9da232d23f3de9aa6ef6384b0e1793b8e5e40d815d5e8e5dbae2702dfd3637214ef6169a9965865bb7e0c9eaf6e14e6a5f8d4db87b1fd570e58fb9d0ebd3d5d54f6b65f1a775acd03c4b0992160e6f34fd3290929368e00fa819c1155e9fc265f0919059359d87b1b37f78ea381dbc881ab867769dab718b7b91a6e57ddbf2c2cc592bf14a713aef66903a98555fd8a609e8cd7d28aa8461f947792272f3b35b29eda1715bd30fd0c7b8aa7e1c6375c237fc895c85ab963989773e8a246c8ecc9fca4e625e0b741dc3b59f508705907e5183a895baad81a8caf23ea05edf5932af9e5d8cc00283530fcd9292da7f58eb9086259a0cbfecdd873c7a36bb6bc4f33ec7740ea981a2724f25d70e80f6439f32fb24497d6e16e836f58a76703b23fe1f58718b155cceb155199aa50d11b2a3b75769d424fadcb680b4b65fb884da1223acf6092b29e5d98a1334702e4128a1e9bc4e2dc81cdd77419a75fdbb33705263236acbfc6f193245815a750fa1dedb83f5f16376bf45a931ff6a821222a47f9e31c2a21eb35fec26f8850d5a180b24e618697113ccbc6bd43b0ac8edbe6e8d8ab463a0b8c156fc18a852a9d3e7e72101cb99f3ca37a9b1a090dc1d3540c86b0243f8263bd634fbfd4e6cb171307db61967c18f7f07905cf8f3b12eea4e1c9e17a3e61c2e2ecac3c43f3a11025ff1dd42ebe5c3f774177136073d8ffa78a3a23c8a5287c678461bcec7ccc128f0ccb5b2522143fa769ef5ef70a4f4dc9bcb9deb37afdd728ffd858b3a64347f5d43dc46d29cf2f6fe03e9e19942b4cce4f52427237eac3f93a6f5ba1635ea0d898a466ea1793ab4f5b2073bdf542dc41a1ceb71ab12833100766d3343278151fcbfc75b1c8189a7d17456d531ae35a5f03e99138f873ecec68b55483ab87355466862df3279d76abf3315d623f3573e4f457491d563ae5435b6527fceeecf913946fb09d7ba80443db5ba13243ad717a6f25087ce9376d252f9ada68e949e02ea649c0b38e5f32570b3626472a77a5d0764ed434bae7086956c02240661aa3a080642cbf89c994443efef55a802c4e7b741590a29e59d2d8c28a84296d8dd26cad066e76cce66de970097b5452ccec6a74470f29ec06046c929933f12b7ec4967c8501e1e1b3f545185e40ef48518fccaac94088ef3f00672128b279466fc23ccfcb0f4b35f2d2aeb5ba1604d1b84e6b1bb97825a7086857398360ec0766dc42bbb9a47ba23f4657883af4a20659022a80d7aad90f0e9a1d60d62d252f2788c62f7e25eabc72fde3c86b08d6bd9173d756a5d09ffc71c8ebe95bc40000f220b7eb23eb3fdd6121862187d3ff06de1de82317a4be95fdc03592993ace92abf026643b3380b9ff5ae46ea58b24c8e5c40908a5435d96d0d8f15c4216656a32f42d48dc9e361d61c159bb0e3a35a2d7cd3d98fa2133c4a048d403eb448149847cc7729b3df5a7affa8e340511d83d9ed598aea2a8c92bf23266e5d4cffe041475f712718c88e73a421d7d7f58b6bf92eae47b8f9bd2912d337ee1e19dc353336537ae5f32c27e9be98c94782461ac4438aaf60f70996b478f18c5527fef0c517c48b2e28f8fef92befae83e6fbe715e3de49f01610baeef2eff2a2659abb0bdf310dad66903d2502d18ebf81222ea94ee60fd940128de83758aa88fdd6c3a24cc78eb38c29872a38541b97142cab6aaa3ed7ae15c82e6d3f4751784c894d5fe5327f5fdafbfea82985e5e891223a0c8e6251c7ab25a907fb3690ef168b985e6bbc6d17bc9a449934da679bb930c757d693eae2959b954f402ff96296642040e4cb584b20e990fe0a0d0c3b2cc26ad71a73c50cabdb2b1c4dc4404a64d30973f6f53d8384899645c8e8d64074095e5aaaf663e668d2904a99a83ee5df4900f3ee4363379508c242d9488f3c314d8857415a8f90fc1dcc4b90f442fcce16aeadadd56b9e311a2fe825d0bb86b3cab1058409f0fcaf53f7aab3c001a83aeafadefa4eea8d9572dff781d4f7d19ea101d5ea950efd47c6dd6745596a3d955a0416096dd936e30b51135d1f33719df83ed66f4bc91993b2bebe085ce6d4ddb7b1a0a6b4bd4f5e0251d6300e4d162cb4f8768f1280cfadcef2d8c4c9fc827597d7609a0a5b8e141a2a41a89133e7f384bd7ac614c7ec33e7429b3b72e535b2b2dd8229031205d76f52d276ec2fca40bddb9e26233ebd31f71a49b667dd8eb00d0c3282164cdc2a14af6fffa9d5511410a37b277838e2112f8fca0bc13b1f9e2359f554cffbdc160cf55adcd89ab1eb01bceccfb26755db41d3e1fccc8eac89b9cd40fe1995ee7a2f592be9bcde074fc44997c1ca1708bf83dfca2c1cf6977a17cd8c6715a29a30ed89cc8d91aa283ea6f107e95aad99ee57e372bed4746f57e702f3b64d0b33494016bd9ab123c1330c0bff87ec062c0bc4f00d91be1079093684e0223a9f297e61f9b1ea61f6413abc379c2629c51cfbbb92fddb1a9d981792a908b16f36ba52ecd823142af88dbec2f0598f8a5583cc499c1737dabb626ce820f5c18eae5e1398e3826c8c1e260a1b5c61df788ec6d5319c80680ccea54c59bc0d314d034af4a1d36a9f430b7654a2496b65a8c6390cb8f1493587b385141d8bf8fa85467a7d2cec9b9d31b9550745ae6e3544c85bfb491fd3161f6381ffb129b175dd1a6d41c676a33b6900583337d8e6ac58e1e515f982891bad0e3463a25c64b6be172ce5ea326107209f03157748f81a0cb4461d5ccb354e42fded324d59b1a82fb0ccef2f6b9aa1ca72f90cbb4b6b7d5781c6905a50b996e35c982d37b0efc8de30dd02b6c2efec2135c16296933eb2a7fe9e89975c5aa7bce71e87db02f010422be8c048c6b30d41ef253e27274ed10a4a8f3f73b16ff825b688a7e6a073793e2e77b143f1ac1d5805a01594191cd14df14bb0e1952877f7e1251c9667c7f48c70dfeb18bb8286c0bd0b45b5939a523380b1885cdc46163c880a9cfcf68433d388f23eeedc43f15dc7f9a3b2e90a6ee3b9c7401a18f532d3fd80c41bb1dbe955e632538b55083e2ba3e9f1fb2168f9bbdb002e7b92270d48b202721488f9fdd63b6e09994ea64787effed22106e419764c4882c82346f8bd79a9bb13e11042cbdadb051d33b69b792aaf0f01907ec1b48b6385f6b8710c7a2f678afe3c7c81c2f405a5b1b2f75a2a66dabc0ea91c7707cae54b65b8ea550ff18448f4736ed92b09f301c4f92a1b998b9027e64a8dc6dd0266f163dd2c4b263e1af9df04efaac22b1149d16cef172564f88df9140d17b4c7dc84db0f3774b7c7195da70b856a62ea7f665b6cb087054daf1f98846760f0683c05adb84aa540b6108e0ee5123e73a5e64864adcd1579e8b5cfffc274fa5b8b7c310c76215f4cf947ebab00e9a9c070208113752ebba8434f1c58179b96c6873df6e3588f8c81e4533d13154d73247f31cbdb0814a0094142b8df547ff90b893fe7526eb32eb94f5fd3cef29ded2daa91c320a4a3d3a26dd6cd6b71e913b8521bc80a62a3520c7b8bea641143b52ef9be86643e77e04b53e1b2a57983a2a046c744932c298c4b6db8c453373918ceae488432c4c89a6f35caf94088746661a71f50178ecd0ed3284e31cba122c4fed19319f5883de6fe8676bed53ba060344dcb3381ecf3827dcc8ad31fb10498c31fa2a4f066d40f2257584042318eafdde7b143179eb73b19a024f70e3b782e2469d194e806102d0ae5708d0ae03d3a86bb92af3035b1eb4365976dce8bdde1797dc325a6818db8020892e6d08408727bd88cfaa8c54842588d3f1b7888c32a2977949c86db19a4034fb24c1c88b903b9c9261a5b844bc1e372cd28162ef1b296b1ab9621220ab0b0644bd98005e8eb7286ce67fe8dd65ef9dfc85a2c006ff77317e1c2261add894ad6658f2f6d81d5ff8208a3c95d06109a9b71c7ed8d2bb93c601eb59a242f1bf95f4863abd630a0048f5684a6cdfbffa10c114a4ebc5ac2720e18b8719368020c0b101a4e29582d297cd35b364185d68d34df9c2cf4448bc133e6a6220f87aded1b7eaf6733ac9888e7573ccdd44eb17e31600f6d7eda07c6faacf8fc938bfa1de19f8bd0d096f4170af2596979614cc0968c0f89276a80cb72576036ada2786f768a5aba5b11f486942b501f573acb834f065488011088346e7b48822b31d91097877ab8d0dc806bca86c289a50a79610ef8501cc2cd59fda631d1137276e50e604b458813a82277ad61f522195e2b73d31e53f5e4823a23b7624e6f5826b2050635080da7c5fae75a05956913862273972f908ee5d67f4e8e8c1f16c06f6b9981001032e985c2f5057844f8cb90467a26172b033e1121eefed3e3e95d8be3284db275ebbf9fea2ffe9d7d48715d122816a09a3610bd977de26c70adeefcc804d03f861d8cf08a7ad6428e9f4ad5403f2d498b31c92a14fceda80f53bcadc50ae950f665a36611203863a625737201d9967f1a52a06964930d65e4413d0b42be2536c7b3f8e4a71d91be1962189df4e61ba2d5ff5a3765446377eebb84f129a8e059816fd9b56aefd26c7fc85c2f1f4d2ea8efd5e4ef768d2f68900344bfadd8075171170fade5d2c4bfb15b73b9ba8f722b2df8bc1aace1dc90b00a6aeca58875545dcf5d3f083545e6f16274e329a4fff3b99431c079f02ef1f85acbe32d5f7a9e535a13eee8a5d746a8970f7e1905cbedeb009ff2d604b9e2e53ccd599393849419b199dcfa1f49d5a1b50def5709e0240bb5813168465f8a0e8baef35a8f8bd06be3d652101d1512b88fdc6cc568209735ce1e9c4b0a919557889e5075cfb56b5c7f0481bb9ed9a1334dcbcc1f11aa4d85d68998953db5817c565f47263dd1ff28f6111febd3a8f6337c58359e4277b7ec012d7a5cafb3095d4cdd86cfa2fd83a6cc9c39bcc8d7d857cfdc8bb236e34a45a5f5aa522ad596848d78f8829f8ac2bac1548c082443043520029e295719757a76b33e9cde98b776f2448e443c89605ed14d1bea15818adf9f3a1732dd725f77a7a2ec06e77f7bbbcf89771a6b7d81a1584af40a998977f95f4e30f17deee3f535d90a18df141a50c0ad4c74f4d87d446e59cedb067366581aae33a9c3cdfe971a89af85189be7c49e27919d589ad59eff67fbacb740fcae8081400cd6d2f89b3dff589a746339f1f7711a5f78fd4d741cb7e0c250f1cc8930888889564166a163b6a191595a95c7c348197b6a22eb5e6fd2babc0b861e91c4edf192ec728f874336466090a779315af898ff4ecb79919634c50f593991cd7a94bf183bbe36bd155f06257bf98a73946da91e3f2063bebf006079f436bc95b745a7cd93dbc37e462c92590823dfae33e57215a78a63158e5eb25286c754cb10fbc7fee0b468d49d013ec0</script>  <div class="hbe hbe-content">    <div class="hbe hbe-input hbe-input-wave">      <input class="hbe hbe-input-field hbe-input-field-wave" type="password" id="hbePass">      <label class="hbe hbe-input-label hbe-input-label-wave" for="hbePass">        <span class="hbe hbe-input-label-content hbe-input-label-content-wave">您好, 这里需要密码.</span>      </label>      <svg class="hbe hbe-graphic hbe-graphic-wave" width="300%" height="100%" viewBox="0 0 1200 60" preserveAspectRatio="none">        <path d="M0,56.5c0,0,298.666,0,399.333,0C448.336,56.5,513.994,46,597,46c77.327,0,135,10.5,200.999,10.5c95.996,0,402.001,0,402.001,0"></path>      </svg>    </div>  </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/programmer/knowledge/interview/interview_tips/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>简历技巧</title>
      <link>https://www.ninojay.top/programmer/knowledge/resume/resume_tips/</link>
      <guid>https://www.ninojay.top/programmer/knowledge/resume/resume_tips/</guid>
      <pubDate>Thu, 29 Aug 2024 09:21:00 GMT</pubDate>
      
      <description>有东西被加密了, 请输入密码查看.</description>
      
      
      
      <content:encoded><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="密码错误。" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.">  <script id="hbeData" type="hbeData" data-hmacdigest="614097d9d530000d514ac1aefeee97f16dd28e5c0e07ab0a4853250ee2322c16">a7e357068c42329b8f33d37c25a789f17da67a35b47dde45e03668cf78c52877f1296ce613b69ca8273fe4c3bfe5233f311ff0992cf24b4b3905ce416e79cf1b9a92a22fded22072cb640d77ffa7d74a84181c4524825ee4835f82d8bcdd8a1a3a865ffb1ceeb3722bcc1534f81c666c2252c2142bb489cffb53c77a3ce32c78c1723bb98d42956bf921e6ea67fc70a4f1b4382435030bfa2adfeb038f6d3f2b5b0b1b7e327bd91849bca829adde7e7b97e801c4237bf526df6de25b85004ec514aa36217a575e2652bbb6c52628a36ea50bbcf47460d53ba99830d3ceac3e4cdd1ec56bb69a858ea3a15c78cfbf72632b28f70509227ea61b5a4701cb791b5fa8915c797b815dacc3c965560e92e5a4684d66fae33b5b7698d7e58c174f6d7d360fe5cc6977fd34f93f229fedb7a5a60aa5ffa38b5648cd1d3c002d52549f474f255ade11b58c5211b1fabd34ebaee4378698b04c3dde02b16de0770310aed2f113e3d813749a9c3fbce20c009c3e762f6b19fb4de0221ff1107e7f8c4983c2c33ac92e282d3673ca0325c041371782de3b00fdd6e60312bd20cedf1ab513f8a4323c0a87f1b0c64eabef647216f1a3c92d0643e405381e2495ee28a61e6b6ed011d443c12fec1ee2ed934bad03e2e2cbb7a156216cb50fa68adb0cf1a756c98a57bfa5b9ff3232e97429aa64dab123150f6f4191bff08d958002215cf08930a56b5271420c4f1a7241d06391d9b90f067b84fb8d0d09edfb14bad7cf96eb11dab4b734397129d22af0f6ac019fbdc81f3920c667ed6816dba2c1c2d2f97a7ded5759a01519bd2b5a249dd20daf4af0b490061396a3a1c03a2235bc28c79151ba38338ed50d7d1834c88e38ec5d2499c01561a4c528f6972fcfa990d75c1a39d5e8c74225d1017b2d58f10da1c0b03cd828305ae87fba1e6bd053e4c34582f55b339b57f81d2c2bf08150cf222147f961fb473b7789717a438ad7af6da11105a99b849d407c2494083ff3dc9dc96368584e0f0fd5d909325f9323ad660ed39a17d14f568c60cf060f7a1a6d8239a481e9435cbffe0366610f43ee4466b1395dcea0233bc608998b1a4edeede53cbd2ef623b8eb4437acb9694a9fa84e62e4743f66757517bf74843e5f208ba5eb05e6a8e5134021a85deae50edecfb0563c0c843435a1735dab206511fb018bdf02cd22598da80e93dfe0a5c50c895ce364c719e011b3c9ce1ddba8561d3edf21d6a62dd590b3d121fbe4aa4680055d936cf79246503825556641fd47dc1159096a505b58334e820c77928f53e2823982f35d5def95a0fa42647f9fd1b328f8da0a6cc22fae5dfc960ede05103f49599df858d57948fae10fac3e888efc620359a929e1aca7164f7aea058d221ed6f9708e935bd4f3ba957dc09e60b306a9e0f32a28534e44e47bde06d6f5e7653ea23d517755887c5fce3043602cbebccdf851493ed4506428c0b032a627aa48eb8b0aaae0108beab0100e4750dd2e02d6a45c4cd5091786eb879cb61b200a5d934841e5896bb9329a62982e30bc58ebb0a6199c67fc7ebc723cf78234babbf92e1d234b7c2d4ca8549dd3c1220715e5014d5c9b7e8b7facafa92524445ed06301a66ed414e8ade1e08f7f260152252b2d84a4deb822d6f9c6690dfeb4b1b264814e82df51844777aa5118c46e0c633fbeca7e19474ebfd24d51a1d38378c6674d175719b257204e63d7fc8b6f527d47815c10e89bb59fa54a3381b3f435162f7d1366ed58d5d219ee37f699477fd4d3ff9305623401f3289cd44b3b047325ba30acc9480476f3a939aa1f1f35a1fb9e672e843b580ddab6a78972938b95053eb4e97e3944a31b316d7282b495fb2a4a49bd75dc6c7f263e2d48f76a2c3389a753c17d66147099a7265f6ee85760d2956c58cb76ed859c3cb7eac2588fb19fe512a2d269a03a209c04d1fc59f731c8fd59ab72a3e847426aee467fdb050f65c3b134cff4ae2b39bb14c64dfa39b11f8b61b49a479ad51e33f03af15458204f6996717261a13ca1656e64d8ec57fe6272080dfeb1b964ffe80e9f49d24f246bbf8317272783971d23f70752d602ce8014ebdd4f5d779801a975fa95b56cfa32aa727f7d64f62d0fa5cbc0609cb4ebc6bb0f4f8b1bfbd032428759200bc42c278a6d7ed6eb1997b78ebc984db19ef44eedf921017cb55a453f55dd9a9935a31313eb9d5b037fed9c41398ced8f30310973d548a0163988e79d2793ca187f2dfde99f755282a3ad9ecc71003be982d8af6f618d9ce26a8aae0e3fdafaec46dc1704165ee68203d34deddbf146f9b5067f4e1097e52f12f45b54e09856d9d775e51d0591fc0a0558a09f487db585408efbab78d7247e5246292404e199fec4498ccb913529aa34b916818a46f15253204b8c249aaec96ae95083c5b6aac417044340bb599e0a1a93fc67391266a6b3be963f9e6f0962c9908f5c3afc85bdc7a3820b5082e1ff1d3fd22d6977c3142ec7c4e9d419faede9b1b277c032683e88b29363da722e913fef81fcd4eee5bdc7957aefc2c3d5b78bb21c672647233e04c3fa2ca15c1b87d05f574d732d5b22e6222f7d531732a373a930cee2325bdeb46322eb4039285f15fba180377508f0b97a8ce9c525fdc27e09148a1c0dd903778b78719e94b84e3eb917ac9aab8dec601fd3fba71f68a2910ee5537488cb9e5a799846bbeb9f1ccf73d03642598652aab14b9808ec27670f9dc8311f5e6812662002aa8a8abfddeae8faee9bada3a343aa14c52c01458718f3441235b5c566d13a49fe4539d687304062ab0be6b0f9256883efb2194491524bf4d26b820c8c903e096769acd4d9c3385b2dbbef8996cb5c64eb9c1068718de37f82256f913a4a20f6ab4e4febb7d7b658a604a85c9060e90bee7be4e728767854a0496b6c02838a26de23a2db1241f8acd3cb8d8cfa17ac9e35a4a5423707690f5c8898c0d9c690ad1e89f0cde0f78d73e8cc45c7efb5e23fe5b1640ca3df8d6e6538240ac5f017232e06ee490da8d2f9b548abdd407dced60fbb609a3f7dd33446ac9012bf9a4644b6cee17c764dbc2fe98d007f9277a3b576f3a4619a4721a8e397314e2b88ad99b23c0775123185bd9c06b5733ba848abe7405bf6753f52d8dc5a236f717c6e252643b93b3add821a89a8fca7b741c021ed4b89d3a12a920fc8eeefc3eb2e6f87ebd07aea073a45bfab8fe925fb53bf1b21d35d987213685745df050dbed0373f4dcc253ae22a0b4a2541a0860f64872ad28695447322b419bf066939c7b060f82fc8a674b13a52ef5983c690303e744a52f14f4a9f79731811865abc42e8064c4cc11b5ea7b456698feec712e4b45388c3b5b5d3dda08bb548533782269732fe4620ef612356eea4d965fe330d84444be761f0e52ca1160d23a25bd5dc0aabca69dab735d03205e47bd2286eb4780c54876a82227f0ba3bdc2f5e0f4f6c38cdeae47c2ef4dd91d5e9f9ae23b6eb89866a489b78bdde19a3ee0423a8e6716d1f4bffba0a9279f5887c00bb61811cccde4e57130b67497efa0d5b3fa78688211a4a42aa059db7ee4a61130093c20648d0aafcb79591f47265b1dc1de529061bbcf6e08c266d63101e7fd319e45687fc3a3045fc446ebe794cfb31a5dfa92177a0ed35b9aae857b0a6d6a16b986594aae019b00faef68a5f91ec0f682ea9e7272a3153e50601276a5cf2b0bf7ca11c67b58107b492e21af1c4bf08f3a570535a71ea16ef5020a179f5e6c1a9d31d2b6a2e5288f5cca67c01f481c27518cd973b9bd19eeabe7dab026c0d88f8ab93c05fbeff37b44fef1d31e7428396e5dc0ca99cfa7efeb4205e6c805a08e96f8622b8ee8568410b4df8519fa2a62f6eb450d42a7a93c736698ddd66e85b348db3a4b2c52181ff33521c0d26d94fb30ed5a6744cea574c636259f6a23b88ecc0f23152e26d0d7662619cae7c2468c213cd1a6b1d8c7285a7a155cc5d58582bf99117376ad59986b4c8735c03cac748c843311b89f6c2de67581cbf4e17c7531793f131d95f276151fa9da8ba2435e0dc402e9ba265b34dc5bbbd2df020a797f8813491b32b22de2e450ba9ebd980bdaf2c6307c219e2b6b3b797f0ab6ce3d267bc19523fecf9ab44ff2b87e819c97d712afdd77e47ed6b04ebcbaff83afc59f7b6a7ca91f96e1dc796e931568f1e722b371359a92835f1f8699bcfc5785a186679bd68c4739374255013746765579082eaf70584944d2a7d4f354ff1f3cae950806bbddbaf896fab1748d2895a1d3312ced9d88df6e25654e395261cdc72f64bb4545b56629430ae6455814e971884f6c029f5b0b999f4b874f0dffd0ed1e0c51838c492ed17ca884b5ad89c0507bb22ed2fb10efec6c9449f2a4240a61d4dcf42fef2ae1420796e9a5f39d7e6c87e4b16431edd194e6939ff7c0c1cafbf76575450bfe51880f54dd5e2b7a9383efab598c1a5a5efb7810b2009d5b6e6eace5ae11f60bd40ea4acfa91c635a59927bc38822a35ff7ad415263167ab286969c9ba22de5b2e853f860eef15a0e39cf10b2fb95eb5d973340926e052d4e6d603cb456079a00b89e211fa0924d4bdef461308467383ae8ed68fe027dc2e64f1bf0244f932857e6ecddeac24106b12b55d2e5717bda75f58e390a03f6d707cbf9090ba93f3d7544977475ef3b47533754459219b8ba0628ca3d3883b9d9062c8a5d9894cda478d0b2ed22c624129ed5955101d59fb742d14337d26e8f6729e5fc1a12ec5734b1b5238a7c3a550f8a7fe4c50fbd228b1c856346533090fdb6a62a22f1a5023643f89bf76b54294e950498448bf3abd2080ac1d3503c16b496b4d72eb8d9e1b95f025a500818276210c3714b1a08451b32df9d5b8798821dbe1d6eddaab71787c3c3e638bafbc5bfa09a7176b41b8b4e14c8cdd549aa7c1ac8248402e318593b2c21c930bdb808b7438f0fab72817951c7893975ec74033e4ea0cd2573d8b847ac0935484e2b4f1e528d1584f735b6bbbb7adfdf93e57da22468f2763484d2a93374941065ea81471f392b5c15eadcb2ab8a50cab2236861761de9f9274bcbd9f0143b8c337992fb1225ca8dabd776086a060cc3d49279b4d5f11f4ccfc2efe957ad9050e3b5ce4ab415e4a7bdb44b090a7811c944a2dee45f8a31eec8537c54e0f4b814cdf3e5bab4b0a31325e2c3f69bdd21b0f5bb8a46a10eba90ebc398cacf3c3fda70b8a49c1ba46a16b667252564329c286558dc23e95a50af14f3a5c23238fc4f833cc7482aedb7a7547e17bea1ba3b71aabdea2e6100ad4a6075c8e3628a9dbed0540fc5585e86f1b6555a56786e45c342c964b1b7e36da74f73fe1724c7a35a55f2a2101c67f864a27b8c7edf4f6211a10bffe23282c0202d256be3ea22c619ff12b7e7819653b339518ff516c521fa6427ab5b4bd6ede2000478ec1fc21733e4a8b97e5c8fdef0236138966cdf0b871e4a4e7af440fd3f3c6ea7c02e1a96f83bb34b7bfec6c11ddad934b7db096d35ef15821bbe19d7a00c5b5a1a685f236a875d26925fff6e54e59a28ccb6d661ff9841ae2141e01c96bbc0bd1555e9fa2c0a0d6e30b61838f474673f71a3057e384f9823810f9459ddd6d3230f204070d03471f2d211214154a1d51f31a681e8c24374f4fb5e85b98d49b004388fcb972a32b3704747eac6a489119534c57eff1ed0c59ab1ccadceac3348bb5020db1c0a11e683b1b9bcb5324a3faf94517183bd58465c42e6712de62a33085dd8696923ad802a08b1d5613bf902e0a46ffd0fe0b26414aba2456cfcce913083f7906538b12ee630cdf738cd3e6b1a9b440e6bcb36e481f2cab519fc123c8186fca44d47196c5d56ad9803ec92d98953da77755dbb4e0792fc15d8e6ef10a1cdfdc5e9aad5c2bc76d964b315508c15118f8c9e8547d3309ed7bb437561d42738b68f93b5522c19cf51349afcc4e06fb101b5bae164db5eadd3581be08ac15c1ea5acf784bca73c00e94162961e96d5950f7a8e6b06bef194ca29bc5305f68e3f71a445c7ebdcd18e2a699a6e599b209e474462eefb97c7482fdf7399286a8155eefcad98866937a80d2b450077df859e07c1a3d7252fdc29b87cd37e2aea83e1824c8af6777a2e9ef5a7f4ba4d5c7a5457d6ef0c2e6b8a6961f16534da14d23b81c61e1430a22c1bff2af7fa32cdbfeb34c769260f93872219285ea0667ec450d587cbb2013987cad360a2449cd0fc20b1bb03f389d11e511863e716f7e7662d1f31ff828d06b7caba07d22a0df70e082e37dd8323b55ea56c0a9bd22b14f06d00accad31d9a77fe4f41ea281aac0b6e91618df9eb7e1b2128033d224439ed8321ad970d3d7b247cb9c83f9b5cbd088818c7b0ab1d2d16f32c08401182ec34938f6a27b3904ff4a504e647f18c6af661f0d2a7f104183afd7d91b9124a757befb50c5137185f04a1a8bf0fcdf85aaadac69b8176eb531a1f346a3ac0523425683434f5556f141e56e7592cbf3edbbbb3b03342b74d6208f500ffa2403adbe92e89da9e0d9cb18b63615fa2f84accbe68f2d39cb3dff8a8ff19b1f0896e200941271535fdbd6b78553f1c4f57c937e955ab7671a74d451b2299ffa7cd8348c25f9ec89d391da5f9ff4b0629db0aee980769056b119feda68a517d3aba1d7f708e5c03fc9090f3c478f2f6871ba4562fe7222c25d09a34dd0b327edb44f0d1c040d070ea1a8bbba2eedf5ce05042fd21eef3a8da90798458a991fc11df4c7b1915829b42eb5428fd1c56f96c181d8271135495f6d4d35e4eecaf25f3cfc20702f88c427d179c68404a493d373ad6eadef51f15c28434fd12fe23048971ae88b5472d12459428e0b6724a3db4fd52be00ac4537a541214f35f9e260cc1bf1005e26562672c1c95d43fb841ac5973b3dc0bd0d1fd5a950df1e217cd0e7e712f7bbc2584d9d9989bf9cfd76a4550929034c879ac0110f4d7064113cf1c25c78872e846083808128bd9279a3607ef08df52c87c8f4420fe79393444bc5fbb2d8b452999b5e1560edb41634d68ef8765366c8aafe994efac528ae36ff3307bf95c7a66ea319db7cfb70bb7654d9d3091bb133f27ac3c00d706c02bf5391de78981ba5f16bbf7426ad8edc04d7ea30362fcc189701e9ea79e7ad2be8cacf14e7ac7111920d11f9cda19c4cae53a1084aad4333302ac867672908ce7e61bc9d40de0a76603c7027958895af353ac3c6716d26494722b2036b755f909af59ecef791dc1b8996d3df9df7da4438c6d6a9130309f8b947c9d7e8a33d1f639066d501ba39709e1d588ffdc3e930508e57e030996ab45d0e1354f8330f406eebe2398fd4fc1fe7352fa7a4397cf36dcf9585c62248f630e5701874eed270c81b80df769460e735b76026291428beebdaccba1b8de950f7fea3fc299658c2f82ace44e17d7e3e7a7b3e54e7980e243001e490edf5cbf97520212f16f2481916a97c63b6295d030c58507b44cca70f0ef76e23d1cd75cb15bc521e6b8feec1c35421c8c2310cb9606bf2d92d19ee6ea7be076abfe66b98232820532b2fa2e838699b50487d18e31e16e943f044442f816b12dec4d1123716cb5424e356644a5821b13499656e947f49c236919a64039454f0e3d4ab6a462c2af85e84fe63bebe1fa3ad4fa5d4398256e1d99b2e0745b01ea14b2bc0ecf131779cec372d1960f4989a90a18fac5f1f5cf7594db54e1b26df15b6de4ed72647d35a319be8770656d0777b75607e44c75958c89bac2299eff0b583369e7c4860496ef4e6b2889fbd38a3122c4dd0a6d3418af8ed2842829b0287872fdcc579eedf3b893d64bc796522c65c40b8742d3ce75cf64ffb6c808326ab2ec86b6fb215239e4acd45f775bbb4684666a3364613b4cffe5988d3953086508a410df105444cbd9a98d37699ca5f061a070b8ec9673e3acb792cb3f79896d371e889221bebae4182c0463b23f2f63a005e2cf24ef6a8d539b1d7cf1a161d3ff82dddb0a27d8e22fa523f3771d4d33798f6bb386dcbd396808f22ec3a66cb1d6e0441357265132b0d2ff99f5ff5c220fa28d2f07595631806c65ba041e4a342bdfb5151bddd39f8726d7f9268d603e8c3feca141ee6a702eeb4efd85c8224c79a245c58b0c3d1d14c83b455385f3c2cbe050fc3e8a3d9912260de425f44d0e80ebafcc7a4a42cd02f04e92dd9a4addc361880111c0659d7de1fdc05e2e4b569a27d772dd08cb9d4162522da6ce3b6cf5eab5eeceeaa2e02a30c4880567ca2b88d70830de282204add59f44ff0899eda29425c8190c51bd0004883e406a9d6470d7af856ee77fcd5659b59346b17e8218d4958e5b80e3f0a55a8da4448e4241fd01ae4fb7030331488f7b5ab54e7306cd47b6e4a7a4e6a199deda0af37156334513b0c78a82ae60a2c97768285661113af7348f56cdb1d2072030627049f567d07f6d8adba27eaf538fcd8bad2abb274451b6ffde857479623300930c4343b2e60a69af990aa51946e65849987137a3c4500a85a22ebcee9537c678f719379e459dcb5268deea77bb02610db1f2c6ede66aad715cfad5a99c03efe50953b87ded27c549c5008794ebb8f3187798a2eab99167e60b4def54b0068d719dc2091ccee64ee4ebbb614de244f7007ed63d788baeacaf0737c1d80bed34fa352635831f2c5fec853a27c1ec6f31e9ce8117c731156efaac09975f0a26a37e7a67cfee16a6e32b8f1a8cb6efb8c37844dfba7551ed96ae43126f9a7b586cf91c604183655045f8ffcee7461378aa2499543cac78fea9c6234ea0d54d56efcd5ad1551e830ad03a9bc86d89fa9376cdd3a3480b2b9292178947cffcc123bbeb9055929efc12c207438ec60fb94349924fb8cc9c393171b81af0469a69af25fe02d581e53b51e627f28b7269190b976b57e6d4ba6d152556e01c6bf59e6ea96da1e6121b21dd1d1d6fddf4426da03a9af390d9eb183cddbca6d244948eace297cd6c98a437c5a10a13f94f46772edace2f6479b5348186ed1c230c69b11fe42ba1ccbcae37c4767bc8b9fc0efc4f7178394764d0e07baada879f4f44ee4f45d21aef1d526c2dbb2de8fdc53948893c0bbd4582e8474934e1c04034c2d213f7c0dffe925c5484ca00d1f78363d8143f3abb25dce9107b1a9d245b4a6236b5438c50fbb48ca8040532154b19e5f909c279dcabb13b2cc57aa191dad4eb380ecd58fd582de325c050193b97b374658e66c830b3999351e13e9d8c3b3d9725a1d542bf3b8df59e913f1fed4f5aec01b66fc675d832ee6e8cf2bc3165734fb971424f9f7e30afadc18cae7338ae3bc5a82a2aea8ee31873f3865d7209b640ea61a55b8f6f1a87a5b80a37a71b13e1b9f1e6c2bef718623e6ec646c0e395c1bc1a6d7f00d363e50df6830d68cb8eee04f10ceab198f848482fec40854197dff40bfeb9e34b55b5e8b0d896fe518b329b8d0033742c6dc0b34e717c773ed83cad83011df3e85ecc51498ab71162aea55f68cfbaa3de6c081cad511a8df1fcfeba61402d3bc48e00a86bdd5d35911a3ee511285b2f9b67367882acc591ce4cbb6cb0b233d5fdad63365bdb3f376719bfaf3bc12d8dd2f2c4ad13b8b86a205332854c2c8a2fe145dc3acab911c22da789a9ef08f85548efdf4975d2ed448de031d56be8d73d49fadc82be19f02de867a9c1d3e29a12d735e1caf6efaff9ea72a1bc185436da50de56ba4b4cf4ca0ff4b1b4ccf25a67339bfc9fe908f1ced452ec307a5ec4f4e7636b1bf8f2964eebc4949a268f6e597097904aac72ea51ee128648ae0b532a803b5ca5ba2640d8a6f8548052d6f9a3c409f3cc71e60774d90377bbbdf3af1e2b9e4b92353d5ef5ac622dfec627f7db5a790b7508186ef1812149b4b73a7ac842f4d6f9b9b146ead7fe4c15fcb21555264a6a8f6f73140edd026f0f7589ca2f88bc58269aecb5d267a4461de99ab20da29fc7acc701f0a1aed8a7c831ee4d26931a90d448aa2c22ed9a2b934724b7a9c4d23c3ee3fc47afdb045042396c0a97f02e90ce8d4c71685b162a306b6af41740760fbb13ebfd21688f49ad21a25502bc2804e7590a8094b08446b3293292bcc6e9dc8bd7bd81973425865dfc875e4c72a07e06a61a7faed441e8c2ca8bf3aea730ac4a43d55f3923df42064e24e2616c8c9b3564be0a0302a5c31fa0d93019898937b3f3879dc95df87ae14f176175c995615b5d8617845ec556f7996f4776c5183ba72e902ea2647aa7b96a37c78248275f89caaaefb053001093366661e97a84f1c3a08e9f93b081a69ca0ab9c1895e38eff74ee47b47b74431f778b56c571d86a7add092ea2c4334325b1b392d30e25537ec70ba9222120d34ca5580313f91ff59cb1d45f8f7b6205a0e9bcc92dedfb870c7535d7b7638c51cec585ae317f592dfee08ab95bae77c6e2cdf8647e445fe1e3b71b7bc1e47fd960fb6f654c182a2630447d2c0605eebe8de39f131a36edb4a2e469ead5c5c70febd6f1e8c42c063e777a262bd157c03fe65113d9362df7251888026fba9fb95d2b645a963d8405fd5aaef40a4c5e7e315cf4f5129c26cf3c762e2167c02e43a612e663885a38c51ad75e522aef712fbf9da76870c04257e0bf50320caf2c1f6a32fb581ac16c354b9a68f6a2a80396ee20eba0f8ed3f1455333255cb77c5f894888774e6b2bfcd3a7e41e9830960e6a28eb49dfc0267a53cd5c6c3b66b2d714d000918bff1fd8af7c7f771f0e35ef7c597f108675ea8cfa42175a23d68ffaddca3cdba504ed983f84f90e89f792d51e82c262c1e76653194a0860ad200e4dbfe3021382adebb89877bf0cfa44a44916f497dfc364e964f685be60dad5399fa06184d066cde495746a45a7a1fbc6094b8b77af697ea37d74f0a8e0712fb9e30e45432570b22902de1157fd072dd764a48d13c58a598f962f363f34b36ce5db995cc346e09666e66a1a96559dc95130ec870d32d7aef98c71a87a4b7c79a22352ed58d7bca22dd7e1948a46cfc610e2e1f4338f9497fec73491c8cdabf45ce3d658636d38399e697e20114defc30a392ea45ebde7345e608057e3d3d333a3999ace1089e3a2953b73ccfb60bbd23861df1e426c60d8dc2dd30314f44f4e12d0389925680bee88999515d9e4aee89227159d56e25606709c0ec48235d84b14f0f4706ce86e25035ec6fde17ea360c2717710c15c1140564ef10e8e4a7d9625de372ed10da46dae51955fcead949a2741e1c1e3775a2ef8b9d2beebf717992b7e50b611b02b97b6455326ca1c3ec9cd5c3d3f8ccdeb8d413e623f9db55becea385169cda5361b30509ed6f9ad9a5d6d7aec27ddee97aacfdb76128f42b01ac7eb315d36913a4efd8988e5e6bde73fd7042f2944bae1a6394b340926da425784545e6d9ddbddaf1950d0466eca967719ccd54716c7da7700bd553b57f9b92e7c592811176a5a54e3dc26879741f634adfa982a680daac9af585df662a35885d69fda10fd55e27e125448179e95e81992a50b91543cdab258f2aa0d5877b187fedaae32e6bbdc14838a11d502386c9b179368eec0c6c6f7149496d67bee1052d38a2accb33f37d11a9fba2dbb5b13e3ea415c722db0093e7287dc2fb1222fd78dcd7ef593ac3c44928992dca213e2dbf9e32f9fda96fe937107af33a6c26523472369184cbc3b799c81aaf29257618fc3d9ade7269088c5b5f22a651618f689c5d9c40a39d480546cd614ef5339b9bf034b9eb766de2e776e0847536a5bd68f55d1504e1566d7d84006630a0696b7d91c8499fc041f1c7df2da59d47b87dff69b959ce1183a92e2c9bdc5023249b7df7b58c52132a31bbaa352cbc262439c66ead12c8f0f62cd696ea6df2976b9d89dfc6bf71a44453480c4c159e530040d79f97082b255cd420e5b2dd8dbf4ac1986f063f3761491a416aea269c82edce5f2aea88e4b81d39564b80327b19a0764b8921eeb79af7b1ba33a839ea5357575ec87cd92c593ed0f348fbb7ff25fa64e4788c7394b2cbe4641277efeece542c0f0ef96ea82b5a8a63b7e7bb572486b9d845748d7737c5768466e6c4b74d86377ae172990c759f77288208a67ce319364f049811244691070a0dba2b74aa0c7d4559b74e7646908c28160dd312a64fe1c3dc433f375bbb1cc916d47ce5374bc8cd11f8cebe5631e939a2de6008348c3ed68ee4bdd9442464313c6f01fe0721fe310e8c571b861d270728c5ab970b5f7e038abfc75bcade80df78c0a490e7b0f133db33e2194621efd3ad317c2d32630e718e9d93840aebfde9cfb50a7faf7524af119c55ac0df6f2d1f59b3c05049c6566ddc060e10dc5dfc8152fbe32161b7857611f963ab5d987ace315858b389f65701510ea8e0b449b4ff52f0b7db479f904f09baa90370ea175ca53c09a4c6bfba41c805819695a6cbf9ff504b73fedb82b8aea9032586a8b14d7218872f4af0b57d1c4ecf8aea19768b75ffbc1d5c22087175d20552592ee337de6314f998352c61245de960a55927c351fa60d1d3ac1b69373249575e7f7f9f173084c048fb3583a3694bda0ed413ee234eec8fab193daaa9b93fc2ebf4d0f6c651d16c86571eda6c55a73a7c4a77a5e095ffbd3afd9924a7014686589256c016542b8f2bfab7b0b5b79cbff80771fa7212926754278c798d63917f33fe0b19b9dc73b0d13878c7cc055ea5d61342cb3ed9f86e005e356b24c7634180e496cc677ecdbed7168afcaabb7a402319ae6322eb2293f9360a3758e9d99ac6077d52fa212751329761783442100a709e1f367a6761ffe7717f10cc33b2eab1319bd029eda97c7a43205290b16dabac0089f8734f259300d596b4d164e88042bdd3bcd2e28daff41f07d4db7a689caa86d1b3b521c44c7cf5724d983130288124c88d7b9070e1c5adfa3ebbeadd9252fc31740865aafd0f1b3743a428ea5c199089a010a8738d2ce5e0ebd56422bb5da594579483ba3d47be20e3dfb40b1bc399b0aa5cfed3066eb101224d8bb7d588510c541ac3a84dd9dca7529a2c6388423482440f8b3a7fa9afa98f767ad0132806b037f9f3d9867ca73d441d31a34c3d2e8dfcd07f4a404cc53efc738ce3f5da4dd23d9370bf994c58975fc6610d8056868e9487ab59e0233c9df54d9f84ce795d884d1b95219ea7c3f57bce5d48846949c770e808e75810ef91a2b884531e0a83981845d7d91d811d5b0d0a05fde0d1b246979614a339cc5bf9eea89813265daddbe84873017621c41be9195f5cee29fc3ef6a884f4da88c73f42358f679f9c9b8fb5bd2b7ae0830ac438143324777ca05c8578d3fa50ef2c4318b0c799077a11f653237402a194cb5bb8d2b25521d9df8ce710eb7d17a9e8e453033b898aa7985eed2d54baee92f25b4ab05e61eac8aa1236da1106647a1c26d7315fb8a2eb0167ea13033f913032a1a5d10c883285a1ac48bf6803b3723b7786a7bbcae773ff3478746dd206189f26aecdfda42923e3330d3f35b88bbea60352a8aa6a803e82f2b8089a04928eb9d00beeb37855ed512951e66d1f3a4fe38cb3af1b87ef62020f7945e01f63c4b43e29c0d103fc4f6fb55f9b6f9fa3b140103048482187bf26a2973d231ff742027a86d62df6d81e03ce4645b</script>  <div class="hbe hbe-content">    <div class="hbe hbe-input hbe-input-wave">      <input class="hbe hbe-input-field hbe-input-field-wave" type="password" id="hbePass">      <label class="hbe hbe-input-label hbe-input-label-wave" for="hbePass">        <span class="hbe hbe-input-label-content hbe-input-label-content-wave">您好, 这里需要密码.</span>      </label>      <svg class="hbe hbe-graphic hbe-graphic-wave" width="300%" height="100%" viewBox="0 0 1200 60" preserveAspectRatio="none">        <path d="M0,56.5c0,0,298.666,0,399.333,0C448.336,56.5,513.994,46,597,46c77.327,0,135,10.5,200.999,10.5c95.996,0,402.001,0,402.001,0"></path>      </svg>    </div>  </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/programmer/knowledge/resume/resume_tips/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>我的项目</title>
      <link>https://www.ninojay.top/programmer/my-project/</link>
      <guid>https://www.ninojay.top/programmer/my-project/</guid>
      <pubDate>Wed, 28 Aug 2024 15:56:00 GMT</pubDate>
      
      <description>有东西被加密了, 请输入密码查看.</description>
      
      
      
      <content:encoded><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="密码错误。" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.">  <script id="hbeData" type="hbeData" data-hmacdigest="5628fea4567a13f316f1cab3b9653e1bb5e09de839f37d5a9995b2d6531ccfc9">a7e357068c42329b8f33d37c25a789f17da67a35b47dde45e03668cf78c52877f1296ce613b69ca8273fe4c3bfe5233f311ff0992cf24b4b3905ce416e79cf1b9a92a22fded22072cb640d77ffa7d74a84181c4524825ee4835f82d8bcdd8a1a3a865ffb1ceeb3722bcc1534f81c666c2252c2142bb489cffb53c77a3ce32c78c1723bb98d42956bf921e6ea67fc70a4f1b4382435030bfa2adfeb038f6d3f2bc9ddedf6bcf29f7e51020efd532b29e3c16913852be26472755b8bc76a79d51140ece5d99e7d3219e85fba9c1d3672678f79fcb8fcdb2b0ebfd9062b1983d17cb01329fcec1bc3f2a26ad54eef1965ba009f40714f0e81be8bee824bf36a079d197dd8c60870c6cabe66ca598c17f9d2cd4f1c603a49619d8fc20069a861b71da54ef75e920c8938803710285cf076531a1e6e446899a763175d2068544824c13d3a01ed81b62b540d909a83edd6d1458b42cbb7dbcf06d69fc1fe05699145e64219e23148e960fcea3eeaa364aae12b1263ac9fd783594e1ca31961e3544a2de662355591988102e47a8ab6954f0a4eb5782652f97c8eeaf12c6a57f2a40e2d359a88e76c4dde3ec06c93872e006e0c7d49b024639c1e178959229be87b4a41f5152a7c747165efc45e97043ea5d9ce45568dc1834f170d73197564f75670dbbac8caf5ed84060152c2c8a5a3537a7f125a3ecac6199b2c77e9775f3cd17abdc19913347b3e33d86f628746ffb25a708c98f6ed9c6647dd9f5a6d2be2a90b31cc828fb1918d87af870763959cc846a684a7fecbe40617f3188b599a3ba6b2760a0d173c04fb2429f759c09e0e9b4d608ab762f8a4e04ce1e41abff67ff98d0e293cc5d9dec90577c27f5ca33c535d76ca2a369d086f2dd67b645e3a9301557deaa022c95a213eb513e6e43860d9a92cfea0c64d19ce84da8805b5840bc26e844d9b63368974479377f3bcecfab01720236bad9ef4891dd4ebd32e374429f1c659f1fff99dbf35d75806c915ca35834bc07602031e3cfa79d468051ce59ce13f519c33d747e140b8520f531def85280da7919059abd888c2258248d84cb6e88caf23030780a00c12472ab37c2dd1d1b270a3a5de46bd1fc1111ec3f0ca4683ba058017fc7f2e7f574617e36f1e4febd3a6eb126f404571005c745fc8f0ee27c3a8816b1b267fd8182be797826b0de4c5337b2f2da78c8dbae9efef30eb1e84f3312ecf313f928b516753d1019f961ff4419e284910ab7a3ccdbb0656a4a53da0072195be206108ece842356ebe8a85715fd03d517d4075de2dfe1b4f273df115e61742ddc6313e187db1de8e3d3479ba1037badeb821785f2f303c1a9556e4efbb7a1186f34b9447172881144465c1ad3626b5c5a52dfb3e36c017edfa125e0a3f910b3dcbe636f2f79b4a384fd36ce0cc8fd8815c207f5501b6f907657c4de0d89b1c7b57070c047177f4203e7dbea0a153ea5217d0020129211507afd6f19a6915b6f43a2c7cb74de8e68a6b3e1451b216b7497c487cfb40961bc5b41c6e2d6442455eac77e452bc8364725167ab652acaf2632a99e15d48b007382cdad859fa89bece5aabdf00795986a111309544c912a0dad020bcbe2aa2d6ce2442953bcea5ff85f9f08c01dad9a235792af6cdb94752c1431c9cb2ceadb5aa907314e5630bb9e8afb4016147880afb27abbe90b2eac7e9707105698ae3cd149121de0f2429cbd73bcb7addf78492ed7ed3c4b9c9a293f772de479c2b77e0ae67aaf248dfca0995f3fc9344eb335653daa3b061c3b6985284deb00de55b064c97fd8f69c293351d1db538cc713ebce54759670e51a05e1ee2215c8c1b249802779c277fc7102a5b2b330c190ebdb70c0e25ecaf7fb599e2eb5ff3e203b1fbed16f9b136332a12bba41240b99de8274ba4eee4949b95afc96d0e0a4b227a7ee7719e270b77f6401546187ec843c7b8b740d77fe9d9ccf6760f4ae4c6a7d5c7e9ab40d6eef524bab6ff73f4f1bda9a6541a319cd6f89db5fb72aaaf7d69a7b49902d63743494d545a094b6887e4f6b827ea589e1143c015a40a0e9baa2339ea324488b2185c20d4d45bfc500fc435d62de599bcab7c0c8be314d43ad235d55d38f4dec223a6aa7848debbe2e66186f3087339d840c974408013a31b9c23051c62cb7f217dd9e480f9a602c30d9b8a39613f9ee366cc7ffb4691353212aeda4a4ebafc05ae75700d19910bac67be4cfa418d2e57b6f0c422566e837230336782a617868960f2ec3201be5d2721e8a32eaccdd2ec6a2eb9f14a842d33ff55ae661a3dfe9d96fefe8341a5c08f6a0aa437cbcc186cf5c8f1df30f3edcd506b04eea2e1ac97d7d04ce516a3aefd5999c18c9f9f0dbff98125968b6af2d405592809148fe3c7c17ec7503d69930fa77dfeb793ff82d5ab434db32acb4119e23a6a34a88c5fa1b87db7ce853c59e835d8e6b626815431379b2f6d205256462e4293816ea393641e69bc30d53161e88990ac174b0034145d02df904976dc6139fbed2d4557e88f671e11ef42b59257f69b80a853273f6bd0a703b9356f65277e13effb3e098e85fa6cf7f22b47d0efab0d24c52d934daa0213a7715a78a74c2259dc2efef59f93c13a6d16ea653afb7207ccdda6fe570a8a61c3a1d8f391f50f5c9b487d4b100e7de54fe4ee6b49cd143cf121f84b2269d876a638dad902e11ca834a245682ce438f2be7edac0322bb4a89caf6df2e16b9be20a819529cccbbd3648fadaf37613a85a41aa5fc5c85d7cf9ae25f101aa8c46e14236ac71dc234a5c397b543a2cadd056097b061ef53d265669dcc4a6ff514412eef80c437ebe927d2439920e3c299aa650e1b30feccbb568e72662e9fb5746fe525e425c8e8efe073ad8fbfc46f26a6226d299fa2f969b2e0fefee664406f85240603a3a4f3cc5b13e811703961ca7aae61b0a24018bb3b6a40cdacbf19da65c084e99aa932efe0a34aeab358170494c29266bbf8b50b76a36bca2dceba62e26ff609adb9b87d022174ca082b019130190cc1e5838e7afc4a6fb8d43294422be0e7d4871f9bd1ad8f4b92512a0fcc93e5b395fc410fd2ab0857dee9ca9f5f3f0b42e328157f517158a82264eba9ea9b382fcbb4ad6b58a16647b1353102169165c536f3b56ac2ebbc5365f0d0dc42b2919d92189cfcaeec24c1ce4651173cddabbf51b35a871570ec18217e9963d124164e38bbf17bbd9252431934040a47b0517e6f7a0e7fe704ae5d3e8066b93ece5a83c283493c2904015b3a80fdd460f669dd153d2c878c096b09d62521999e8cbd2d6a45292d125e8199188edbf471ca6550547a668e3be77ad9dfd8a5e343c3f76d8a14861533fa4fa4dc8086a01b5fb5aa8cf22e8d14adb12bb1aaad96d3cacf7d6bd1f1572edcde0d2bf2677140b233095b4d77091c0211c17fccf3350e0d1a2be1356fa4d3c17973cbb886b8a0806d9c0888cfb903dff7b0a7066584be4124a6aa13614c733a5ac7cefb587fd03bdd101c9be013db838caaa0763be1fa80d763a5cde2b86037b56424fcb7fe771ab1f0e69ddefbb9852e78657a6d121f5e55832c26e6e608968b4d8b4c533c4b656912c3665eb98f751e063c57b18dfdb9d3219c06cf9092ce2f38603c5be5168333afff9b54e227d0e64a62c105af5a37be34a22c8ba299278bdbf54227201f74020a7740fb35c425674555846f24f66de8370b6506b84e6e77ef9ed58d26f72324992b14917dd356f29f233e4271f707e6bb83db74f3553ed98d82c5a7a31f5f2e00d073e8bd9bedace3e2ef58dd1695f8d352f31140e6959176262bd820b10b294f6fa887d27c3a6f422b6dc53218decea5fd0fb7b65d80103f29ef3d920329cb026f1d1aba3502c36dfecb15b22b7508e4082627ea2ff1d4e5fc2b1d74e5540a078becb787aa970d5712b1292015406198561164b1c2065fc634399d4e80e46802a76e157cada18b4cbe62f79b91b5e40b32fcf65e59e2f12a3a6c63306ae720077de8d3a3bcaff023f3d303ba4bf2142c54ab9d82276a3bd8a7b7dc4502d9f123a6a312a1e26e84d80c9c5a41937f837976b11faf80bcf10c5c68f5b2ccb258aa19fb7206e3e76d2d8d3f7c87b5252c75cbc61b87843234aee45a9708e34990b0d30d79ad917a98ae26def81ddb5de7030cd9a715f1774fc63120f27bf6d77c87d639c6efc3a258ab0be3317b3ba0449f58eb3a1bf28c9c69286f2e9bf433048a0d0a1101c312d7d2087986b8500a37804506d04302fcc1c18bf3aeabfda8e3a19d14826c5287c588e1341a14dd70abe3091132217f6a869d88cf384cfa782a20ffc317b8f0a6ab4f2a7f3c71e90599e168a24d8bfda5e3db2018dfd598cf48342c9d00aff9a481289bb85e7c2a076f5548ae7463753d754dbee98127777414ef6070e24c8c3c679a913424aa85c9edaab62b51aa005e6e8d4873102405238dab6bc21361a0c6b790dd0633d886cddb8e18c9400a409aba5a21411b70a3a040db53827e0b6437c83a2f1ac31b7f103535b5dbb237acd89ed917af84daf426147afc5922c719a3e51a014883f901c625d8f5b9a4305fa55284a39564fcbb2f2677cdc46639f19ba2263ed8577cea52b3f62724194a4dbec94047e3bf43c7b0bf406b21566b0540d4dcb89b06630c7a8f246bac7e05cdb66b887276e468edf20c75818a01fd10a2899aebe074b2775382023fd31a1c12db434f7a8f07c22425684aedcf55b81d8cb734d848821e9286f27d35b66b8c2dfcc374d92b7e6a0515b8d4b1c8712800490ec65d6185651b58f95e0b380a8cced24992c7f85d643dc19cb9077ed6e3ce52c297b3983ce41f9aeda6b120b013af1446b738f39f35bf4c8682e7fe34ce74e850bb742b18730d836f2c60c29534c51bb082fe4155886ee39a4ea94afa45f5c7f0531b7b6e63dbd49776839b5403df48131034c0e40c0cfe1cc1488ddae4f1b70536d388c64b54b391b3fb950763b7fda5e12f1e594b40dd5c4774b8f24d20111b96a0fbb13ab486f9857b00c5ec8eee368d5e963922bbd00161912712b79cc1693a33162ad1d8a2b1ab0a8b2d376728baa3c22f15990487737f6ac49fe209aefd3a501a3ece847259cf44c9f698ebb2cdde049067f06f74f2fbd27b56baf3657c859f5020b8d64a105ef6f79a9791499918e6391ace0a3d382cd7cdbc334049aba3d14065d1c37ca5620b19162ac30a264fcfe2080f9ba0c63f60348c8fd54297a8fe070c7c29caae64d5f14f780376c0393e71656f512bc95f1186def7e26801512532dd5452054d96bcdfeb8e6651b943350c5ff485ac081ea092a2d6df6310beb7cd24619ebad2a15f27b517f53635f58fedcec8b2a5008c3c1b8a82517149bd1de6ebf930ae4f65bd4b0fb2c2a2dcaadbff381b6ac9661fa46710f4fff52841b36376f0cfda69b253fc560e8baf8f99ddcbed1ad3f47d457f50da19efe372252d9338b4446a3a0a5680b618bbf4e86723e3841278ea9ec6afc67b2d76d2a0ee0d33b66bb35b2639944f9ed72b9b849a68f73605ba86e6f9da47e9aad86e5f65199ce9105d28a21d1cedf75a234f1961e0da48ab4be7b99ff1071f4aaf98aafbdd74bb893b57d63e5725782cd6e4808746f29729d7a9061f0e34bc65f50f792e57d7ebbe5c0e49270bdd4bc3821ab507126bce8b7f47bdb0c02355df9ce04df46289eba819a3be9942e3712c1afbf160934088fbb95ad8ca1b16b7813f07b6100bbc083d23990861e8d1419239accbd54cc0dc009799d56f42b6d86ca7a8a94daff105be2f9ade6012c12bdd6c42f8240ac806f77b147ba13985e8a2101afaf3f1e35ad6716b07f66db2a579bbce21666dcd4232c906056ace86a963f734fc7de0e7d98888255845fbbccdcccd07c8ee81187a28696d3c5e263549126b436b745efff32cde435f74bed8faa5908ea0d15e43b768de3c7bb61ab312b681db490a22427d9bf0d9f974157ea51c017419003a53361be906f4281a7693cebcf8b0ce2379d6a553b6f7fd84fe615df8d4e7fc2f75844e1502b2a5628517a5b9bd6d15e89a6d40dc527782255de659fda7a20e9aaf5e1bcc2cad08edfd05c229ed516f4a0ee3478bb7f4472ca4d54d0d19407c1954806d7a0470a21f96486eb6d38c08def9b5434979ab9d2ca21953ceaa9215822e555696f250d6aac5c575a9908248fd72dfc679ede2d5f69ef71683bf6041e81392ed96882d5abc01c529ec9b89037aea2f4bb0f0d8048dd04712c65d2c308a946ed23a015524bf10d3c5598b244cdfda8a9ad74fae96a0f6558abd298f00739f35d6738e94ef6131eee3d04e361945fea3733b65c00ab557484476c3a399bc94173b329d29372668125b749895b26b070880cd8d6c91691f7ba62c4c56f14527daaf4c894f625be0bdb17573ec0a4e62a6e23c47651a656cc7bce97457598dbeeb241c50c4f2346dcc06ebf2d6d6698ce67cbe3c008e44424834ef57cfb58645916fbb65096c50b0982bda83e436d44e43033859c930364b9bd1b688958756048ebd958b3399145bdd3b6ef2062439bc291ad9b2772dca20a7c5a2ae55b10a5fb9187f4b6b3a3be1bd5ea6e77c153d637865b66d812625e40f0ee0b12462c4239d5a8adb071a0bec03b59651bb0e898a2b1497b0f2e4b7377d90dad06672e54579c4c8571ef8e29c33b0e8d07046eb705a0e6eac99c8d08b423d76a690fc69b0b856e084278bc17a10210482c02bf015375797ec8e336ed1d262b0c3be8a60c646276d048226f72115f381e64e4ff1fcc36ae6612df37cbd390da5c0c0bd3c2b5c0335bd34c8bf2912eb41b07606aa954ccef708fc1e35448bd7db52dd58ab57da3aa26b299a93482c1a2433d2ef43ed3881cfb412faa84761fdb5feea9c40b28a246be30abfe60c3cc99ccffb1735a3d69f0955fe318bca57f8741b4c117aa2a30b261aecb32f4860e9790aa7e5245a576d60ff210efaa1815c621ee154a30796f70aec7c5536428b8677670e373ab3268e45cbefb446b2f2a606aab1955b5943486303c453eeb68b44630dfeb7d2d5c25a8d25d1407d66e644c1e7139889437d4f9d629d048ab75492c25f9df9ba194ff479f98619c43be7a80ac4912457c74b18e54d9e322914691338f287fa53e04081d032b4f20e4da7f7b1016d10b0c7dc27fa5b02069edbdf129c034a37b8de9f3df22bbe95305eb7929c5a8bd5c4ff02ef6c71916b2e1a3aff5be0acc62b46a276bc81006d82525258df4eb20a26c428c2ac55f695c010b88faaec87715bae70207c5d9ed466f5f58cdc994b0e6435da3e97a1f793bd4189b7550b7dceeca09ba81ad15170315fb1ef81839cc94c3bc0626d63f71768e7e656a645120ca5e516e75ec528c1defe34de444ca7eea164ad4c06de600512d977685c238b1ab49447d2a3fcd82fca87d3149a21af6b4abdfad9c1f7ad6f4888fd03f08bd822d8cc350d628889b6398aa8f6d7ee1f8fa6e11f550c72449f29e9f8c8ed84e649a91e30cee49179a621f8dedc88431388ab23d5aeae9d819c2ec501e1eeda59d59c87c4fdfa4e59cb0056e374a70a1184484605aa5bd613eb7641d0b81209290fafc2f45af8a96ea72c088cbfc4db6d440f56c120388b8f972815c682e49778b27932ab509583738f967ce4ff72ec23f208958101fac8a74db48c8fd3a67dfc1707b3aa6e4b2217cc1675bbdce6d24c35720b098c31706e511b7867fb54fa861a93da0def13f6e5b8809d0bd9d32d46e6f6421f518d6f9c84ce04cb32e5ff16d7130bd89720b3a47d00da3f0b5f5e4d2ddb87fb102714f5130cca2665cfbdfa277791916fa7751917747cea08b4666e2771f590635deb55fcccac799b40c950e70d4cfe9523415d91c0d17b9ad92d05d0b654e442354d38b53f9244cf6ce5acf3856c613456bf313b0d52adf8d548c9193b3b33aa6c7c4821a5a01882016231c697fa6e40fb00471b8d39d9b834dfb54e3c46975108e83092a142fc07a8832a58c632b873b0d41f7ba14f089e49f12f6872b6c029228adaba7d7ef8b8adea8a845776e71e1a32ace6fb52b52b3f7d650ce392e4fd81d533af774ddba4be42b07e0d8a90bf734d3a3c2d489d94a02b01cb4b4a8c5b6e6495aedc806f96cba573015031c1928e6ee0d3898dea4ac0e6f946fc5d8edf1daf9a092d394b9d49ce2aea6d5408a7c2171a329459fc7b987cc9b21170b79651c1b59784aa661d7bc334a358695d8fbf69cc45bda595bc584ba02bde18ed7cd794b9142d3ab735d721e37b6c982890d9b64435fc6596681e4e9e119c2a208393edb10fdafa03c3ef855bc0f998d293dc7f57294e280f03c21401311e16863af8f17d614c2f98aab6c9c61d81c9a844c9eec715cf443f865a9e81f8395f53d370f3674d4e085bd2357b883f862f894731fcba29324a1221ce8cec03da0eea71d0dc90811ec93ec55bc63a8daf21e0a5a1ca036cda8f78c74f107afc0dc67d41a4997a3a4b37af124470249823ab3aaf2a0eb84ba77b168b32e5b133d3a7fbde2e46905abd5c101ae580291765e7554a7fe73d88f9ecb009283f325b4575eb1ac4efc1a031eae1f9c47048cb2e49d50eb2eafdc1adcaf7eee0d2877095e0ba0b64ed56f9faa290b3cc1c77587213b8bee6e20d0d36e0e86660497562e320017cbb95b6f5ed8c3b0fe45149aa9ca9e1c800dfb0d79504c656f38e90edc1f2452bf4e614d66bef850fd90f7ff223771bcf8c6bf748b53b211b4f55cd16c64ec49b5abce4ce3f8240372b2a8548ed072bbff915be8203fe6fb14ec2b837be8c3a9ee026dac0cf913068233b49ff4030326c415daf857b27157b2c31b11add5f6bdbb398a41cdb4096b5cced589030bdb24d4c3b982227727413645723ffaf45eaf5ae9ed63f2c592fb0619844170d60038ebe078e526c9013af2d64168dac74be06cdcd78c33507933ca2219400271f4e83c363a0c325114b3bdb04c729ec073c04c84775b6cf18cda651a5f0c0cb4c305435ad9f84ca6c64a0fd32be741f541312b5116e6d448a11a036f1437d593b17465baedb0c5ba609788088f6c7b22efa1deb14472b1272c684f36080f23f4009249237199ac389957c245f2431f988748e6674c86ca398a31648716af112f87bb5498130f2d03e635facc5c0f5ed9a9804834a3da6c10f376b5ede7a662076f187f15bfe8b348e5a6e653baaeeef705456042578631a26b3769b8ef913435dd9e34b58e249032b6a3e24b1e9a784e97c5a2b28aeda5234c240196628847ca432ab7630129134c1af3da6882eecc9cc382f8816b04eebdaf5f29162a81c95555ec89d588e54a95007721f14e793e6abf2360ac26cb45dd8ffe04ad28673c812032f757e76d68f71281fd5eb742318edd61aca731f89ec4465efab2c49e2d8ddab6697a17d8365c44bd4999db03fe665f2f830c9a475ec5ab3b551ef687ac0ee85fbf81346219f101337dea8ac121232988a00c1efe715026e60b1be18d0a1656e08007401709300826f7a87f287f2454c3968e2936bbaed06d08293da69386c0d46d9ddd23ddc0c82de6d7c1200e067784a20f32f8352f15228bd7a4d888f6a73a7894e25d00140002ec0918e7cf812a43ee618a5e9132060d3466a929052cb4f1e317947178b197bc727fddbd6a51d8ce7cdbfd3cd305b1b99629e891fb48cacc26e380641d351a00a5da4e63913860b4eaf9928c60d74e3ac7141a796d1c089253c21e402da2d2aa1256e37cd19ea789dff1fb20f38d8afc56bd00065022558c0b97fc8dc24f03d727d900fe18f12df4db9b690643ce56a6ae9485579f62bc6069cb4bf328672fffddfc9da8750d1f4de696e4ed231a594e2246a9655175141bae43129f668ebc7c09624b5c7263c0c6227e6fb13f647ac1926e4ca23eae99d6518a13f56268d8935d5540eba7b7797512622d7f9c7b9015b062734972b23a2ee9213b1c3bc5e74525c1e8cf03f5a505cb60ade7b03086d7b7bfc7eab9b7a8fe8323cc9d73e3df3ba52f70b19f69a4099ac3043b07061328c80e34e195c7a7952c57b247f0194a16d95b7a299de3e6e9fa1739ae1614fd6797cfa016967051e2aa295e056939814931270f06e84ef0514b2a292c8b16d077e7f8e01622f001e4883b6fd49607395c0723541978ea3162b3e4820a82743c67d6da16a33cf5941d947813f8d665eaa2c60237352909ca0d69895f76b1e210371c4fd841395c4dcc3fb9e93356b67738bcb2792d890b42dbe596f359fe63a6a5a47c384cf3b1240aa04a5f8a47bafda92583da09dc4c19f1ad812f949732990112041268f61dec02bd545ff35a5098171e3e6e2c3df78b97654e94ef18fc3cfd527a05c3fe8b6b686230c4442a72db9e2dc67b3ff3bc49890f69bad6830910058cad61bf0b93f752cebb581b22f47bf738b852019b9a5805598eb86b6d18917fdc17bcdde65940481c70af7461b4bfe5560e098e5ef343c50f70c44e67f42e2184deefb34c5511503ab6b436cf7ff4780bb177a1d659681967d12c129cb4c5576c6b5f5dd42c91851e809c88e6ee816d8e33bc8709378629e2f49e016e82f2107453968e9f49424dedca720b5ff665f5976e1c2f8ea62efebaa8e4dc7075d0e0f3bb40502b2803c00827fada3bdd50c15a9359c402deddd915950b71de96547e91ec8f0258a8149a3b9055a101a0f60657198bd5aefddc3c546807e470e518860f19ab99ec31e21ac5a3c72c7da3a7d65499d58f470e508f26d813ff1cee21b8ce05129dd281fb8a93a2e91980f604c80966cf52d6d4d7bba70e4092d0c082d79a40caf7b2a7da8859d89f8458ffdfdf79af9ca273693f857baa84447685a80e9e2faae65fec80c930b63f76a878ea8ce192f1c8de614a5b5eecbb21f8e76994bbcc3bf5d7302c6773bdfea4a40731f08f5b47e787b54b3ad9e17640105daa2cb8c66139680bb7711fb18e1e47d351e5776ed2b77c11e2250cd360b2039858ecd31eb1241e979ffa6f8389c16a10963bab73959d3f24f94b0666c52f499d4e585b1485d230adef90c00036a2e5ad29049f42ef1c667f1c0dc132dcee4a8a378890c8965160da8d1b334f7c752cae47135d9011537903f6831e6b10587020626e32742321b1948aadebbd2e427b9d496e660963d8e95ebf5e046ba5b0c9b1bb0329dd4f9906fcda5b0aa70d050255cc7216f3ada33e3f41ef7f8ed260c8365eca9f9173c806725e2818fb090f6134eb7d6cfbad2d4ebee0688b6cbcda9ae9cefd39b4f1670ce927ccbb0470c68a81d4535e09a00fd7d2f407e78dfa6960bf2aedc282b45709aba008956d9076b5d18a0607c9ef0062fe96f0d580dc04fd3ea53adc6f895832b4de317c2bcdd4cf47c6217c454787bd44e05313eb303d2d8db21fa11bdebb9b1616c9d87bed68be00f380567f7bd2f9063c04ad3b5106921f946c38912e3983d83b4fa8d645b054a38fd2eb9c0c4d53a1d22c1607a5431f8c15b85428e0dd65745bd7743a6aeb49f9bd0fde8a6ab449cdcf27f7307b7e19655d688e6b0ee7bc2afee25e46da0b6334db2b5d2dd8b02407cc9fb0d8347c2a491daf36933c7becf53d4d38c2ecce538b305bcedc20e77fedd831f5b8e415789b7608840e7aacfc499bc54b8d1ec174de26a4f8c073f9db9bc878d88fa9ac969d82337ea1a90a37c7549cd7e0f58c23e5a8f5b301d72ffa8fdb4fc474d985b51e996ef97d5c22b135b183ea5bf041496f92e6035f24bc1000759073965a8ad18cfe107da38f1eb2f362fe76348e2151d9a5e0b2122f15ad84a2a2464af9aa5665707f3441ea486070ffadb239a0decf12893a96229434d90d58d33dd6cd1a6ddb0e63852489b3839f5f7d00578ccc5a4bb33c9fd88afbab2481fdc583bb26d600e09873a61dd40bf9effb2703eaf9847ad48da6f5fe0ad5ab2526e8a1693dfbf9c4b401ff93e1e67f5be474acad3c21cb31c887fafa93de3638dda3ee161d407eb74a17d4f853528bf65e5582bc85e65cc53b1db30e9690e2c668e94c77d2d5f5ee0cfba69a2c4a9fda51d6f112dd455447a9e742a6c08bbf7d92a602f010ac44123abc0ec2a2c038f0dc908ad3ac7debebae40b95822dda48adbef57cf1083eb23dbb45b95c52f506f07ec2b2edb439cf778a62af64e85f113f13e94d0bd0eb9fb375aaab814cbfcbb5bdcac10a4f22b07267299f6427301014e2032a0cc0979cfc3838a3d9e7c55a9264c9558c37fee35218ca8548a84dd723d30f74f68bdf21795895a6560e9a2a5037caf33badef36fadc5e7b590f4194ca7668f30be32e3577ddc3c6184bd735f9d4580976cb13b7127bc8e3abfc6a92ef6968467102a5e2a0ff500a1eb66af17fde2a21b3130adbeb480b7eefb28af9c22dee32b7f412c11ee256ae5cde73ed365d07479f9f2310560ed7b9f848ae7f6fc4191f5758c39ed2938a3874531a8a6ab2506afdcd5f2e4f6caad6fbd3f3bb0df1e78c070c29eec0a317bb7ef9c2a64b74a575b26101398f3ee5f017665351fbde8be49fd629e8b50c6cc48498f5edf06d6378a7cc413d7214e6e7e10f268c69638f5dedd555c14e019ee052e46e9a4dc83a7fc34692b91a355fdf5d27bb0c4cf5aab70236c609db420de9a6d7810d0452c522259c2d4d04faca0b2e4417bba3e59604432e4b0138941ac61b22d0d5485629ab338e6e0c91c6fc0ba507e813c88e25a1c94f65c1125aa0dd64278aec9b74807b42c68de80a12d180966c9451623af35d30e3c51c5278fb9d4bce4569cefa7e8a92782b088ee35e01ae1cbfc9b5bb5939933c0c4f8ac7ee5aaf11e36fabd6480853de6de8f89181ae041b41e681a787a19b6470f38c6173f8ed08cdbbd8e5f873687f7d9e79c95d9fd9de4f202db392fc38904736bc045b444559aac8f760f92a9b614fa49e014d7b2582d482aa1032b0c4694c93d7b04006b4a650e1cc19fbb6f4a8f86c3af84d1de06f10f9db13f278dbfba4f80060889567ba7cd8e2d902218249be70705f01384e219ef05542ee45d105324456060efb17a04f49f5130789ad760c694880eb57d0bf8f2f6c82b063c1d9a181de1ab55937297303d6550182fd9dd8d5902f7841ee53aab2cb7441c9acd77a20b834eee7ee58778786d53a32f1a409d0c269691d8a7888b7767d532955ca75f4c40132b9effc53ae4f23ad0d0ec38e729b7c16445a6478228f8f3e1c5e3001a27a5d4eebf7617bef3c9e7841a46c3677fa3a8a705cb76f20f55a7421a5d5acb88b0971b73c069d3941247898fa3e4f94c1a925d2b23973d380d16833616d323dd9c7a46afdf17a9936041f00b5731071653a3825e1d8fe8b0a3a5ee6df3aeaf6c2d80587172115889bed9354ab244a17e341b5f57e2617031307cd5d52f80681e2669cedce5a126d64594c050faaf1ea90d4e44faa84ad3082d3f5e989d00d860a99e05126fe6785d4e696394a98f4d5d18d04fa70d9457fc24a3e48a6a2ec0fa937163135a3233287e02ae623d13ac864996ebdf06e03c2022bf7176ce88d99393113303e110a48cd65f09c082c695b2bf846a5d904cb029b543c2f839ac2e6f72ae58a549da474c235184bec5ff3ada8062869865ea4861a3cbea9fab5f0133bbe3b99f599c94657697e7ffda90c830e0ff9b3d75282be2d49254da5fd11bb48c09ed3655b132c25cb3039013472c0fc035f6731112fcc580d99e7407d32108ca72af15cebaaff0d5bf9853dac107ff1bd5f9f4e241b923ca2512c5f56baef26f0ccbca7bb9fe1bb628d578c409c675d6aa6614ce9e5a6e51460f472850ee77c1cc591710548b73ba5dac5b1ad029d9e0ef7435dd4b78014ba741038a5cbaf77abd737f4bdbd0f09e093744bbdf12106347970b0aae427721fcbc94c4ba873c5517db80a480c0cc98be7f2ba6a09b5d6dcec41b38acf6d4b5c371120aa1084e170d6bf428a5a71eb74f0c640f3e764203bdade2d92d6eadd7e55b2a7af7ac8f5442392ef4117f678d6b0dc5720811af839f686ee96d64f5d1cf6fdb7f955297f321f2ca6cbece53050be1e0fd7340d01a9fe01846244179f4ee19646d45403b2a974b979240fbc1b3ac5565a33697bc9be797c8690a11425b202c3c50c84446e94d10b46fadfc775faaef8bf22ee72af92e7061b537e007c7e4b4db52349eb8da4f929ed41d3fb39d587d8a51e0243c862f7da4e82af192c262d3e51f05b1d97c56d2d64ebc761e4f5f9cbd509569c1b939a40d1230b533968de19fcf771d7c9ce61544194796eaa4af358d881c3c277fae6c40a3442bc32f30fc7159fbc26cad83b08298427163d6ea134cae49c2b0562b57c6e93d58361e9d809dced31b5bf7e1d42f067402431955a5061b661b49bfe207da5e9a44eb563f70d3f0903141a9d16dd11837d9ed62f6d32355eb644ec594af9adb3de7427f8b0420919514d331dfcf01dd0eb4c0073d9d3e5b9751bf92e4e8201696c2cc62f3abd4e1fdb85d16fa56e2b83776632a09a5638d3e66b9fef3b4588b0349adcaa23c42838caf2087a441f61408a14c35c853f0585a71db449e274272e06c4197209da9bdf39f85e4262927ddf8053ab6ae19fe2e6303ca8c2cbb37934dbfb2a565caaf870666c749a6d710756158de90ed5951de7d8c89b0581897b60cad1ff9c065f63b4be20534d92245db5aaa7b26777141d01ef5be6a0d571d38137e68a46867e66cdabda2eff8c661baed1302b0a2d8df1d54a459af76099e977b5b76167417c473759810825fa3654253a46586512063907ffd487bb42a57031af92194e71bebb0fdfe807864c32b88ef46ccb266b9c027c2d5b3bc8b5777934ab057fa76cafe8c012fee207e3075246227a7ed62d2310a9a1f9d427ebe29131f7a48ce0d56121a51b2299b739a6d35d3bb0c4ee69c091d203fe8ac32821df3bce09143ab5c3c69bb8e18a2a42cf8bcb0bfa6f9e4fa742003ee0241a7acd9d7a093836c0532b3b676c475a6db54afec2230d8716f1f59f0e100df9f0e939b8fb98c6049d5bd330678edacf434095930ba8a355ec735e051a37a399788405c60225b1dc4585b4d235030311539011c2e125b41e8cedb8669c3d6a2e56f57a51bc40bfb2fd6b36d3353016be5f629d9b6aa33498293cc0291acb3b03d01d270593b139f1438c85c55cfa44e6f84a2e4f07e9f26ad43f704d26912bf616782674b31746a84dc8a0ea592beef5183dd411c840d8241f9b20de5cae52d481944bc1ee492019e49163b269e9f8b4747c0063c52075a5a7afc5e0e6627f50a3224bab8d265a70c950b44301751737b852d827cf6a7407ccf38ef9a364d88996f8322e75f8f166539d91430df2e2071aa98992c3bbcf092995fd96b2cdd58ff9ceb9a3c0aa033e32894a4a57cfb4e979b57dab6f4d5c3044a352f683bd7b7d366adbbc31cbc0518c4ce02bc244a7de6a70dd1506d7f7d5d0cc35968b318029972fc170660ee33452491d6bee1a12d113d9577a44505729bacfbc307a862e7046aff316dd71dd51ce0c5fef4bc16522c4faba1b628f634cf3f8b5fa4400d61dfb28fcbf14c752bf032a9c66bfa4895d34d2083001ef2458e3576928bcabef76091d22b9d147e8ea7970d518d7a80f0cda630743ade47f8a759785832b7fbcb5b8a557d34239d8c6fe8dc20237d93eda4dc97776c0a7e0e62d781b405c6d8bdb18b16cad5b4cac62831ec32975209f8e99bb22c934f5e1aade37a14f6f060636e8d72fffb597b24fa80483a2453a9a97072ecaa13b8c1af4fdf49e4772e87f95d10addeb1ab3c907ee7c1500903c27fe065446b87c6a6d9a151ec9349e27b6d1131d0803efef1918567229f40e0a42cb4fb4711f8dccfb3a26f57a52926596609a45e92e2d8a71336405d47679ed1cbce52a837d2ede78124751c78a9968141f6b60a54c621554514ca431783b964aaf3a6709bc3231fa6065ed7a3234f8c064204272346ed54308fad7546ba87a28e0a42c073e63f26c5e23b8b814d66184237b0a82ffeb1fd4717838b68e5f9df0daf9a1e8c0827ec6bf773453bd544859174457b8b960cf6b20bb2ed7b3f78db31ae3882bcde96db702c2f5632c37960a877a9f62b2e86e4d9355feb559e7e7b56b5a74a3c2fca20c24a71523beefe6a5ddbdaababd6c09dc1f33358f09a34f0aba4a52517131ebf35286ba311786c303e8e87217a105bca3c710e259d28584e081038f8b707c5684df1ffdac837890a2c3c2d4dc3488aea290b08ac663861dfb5bfdcc7b98d1ecbd2cc622cf1a8be5e4fadb0f5fca18ea764ae04751defb8a1e7ec7a6299fbc21891b4b158b0f4ef0ac7587570b36abe3c98fa6c8f4c20c3c24c9fae69628f01b19e0d8c673cf253dc5bf2d3d330fa50dfb9259b52efda0645a6904cc7d49068eeaaadffb8af59d64ef8e33a3de45eb32b3afa004e4b5683a9df595bd8aa04e1c4fb08e4bf3cf2baa9105c1beb2803d0ba56976a4125d1f7413a4a7771baa2264e4545bf340b52d966d5b117199e3f0da12b09c4a9b75f703608edd437f7a785f71f4385a938b5491bfc9972f624b3e73b4ee4487c05ac64590115994228d9900bc7776560a58df6f5da9a3cedeff195830f9bfb657ccc8afc9f4243e4086dea3168e66df921f8727237a5c529b190ecb9e0d73e90c1b30f26b827c41172f58bfd2926b3111c6383a77546f73274b5f55a7675d7517a7ef8e6fb168dfbabad9a41933b6433e0eb1b74052ce440e1d884f91e19981d9ea3439930d7beac92b083987b7c7d425ae277e63bf6a3b17fc808467165bfe3b7f51254079c7e6cd70014d7981ec15f1e9860693ec1f5e21ca3c4e1c4e1220e679a79a6d18f09b66ed646f854defb4b338778f98c560814b0861c7e5acdb172d34167836871ecf7b12b2b8af060b4bc1c0694df38a451ffb609b64598d5645fb94ddc48fd74ed48baf2e6ed96ca132e7d773563c74754b824d8137951282226fa023b522159c44dcd543e272acf59e6859f6b17ca7466f6d122341d8cbba0f35a4fe31a4051c660a637bd403101bbb9934059ab0df0043ce8ac1c4aee1934f79e6ec33d45504a75e5283a466ee2ee36227ea71fdf75b4750219d13438d48a197cad9b1d7d51404f919fa3eb61636c7f078cfbc92fbfd502a65a783d4cd17ceccf1735d3df51bb5829b737baa4a851ea829dba87594ffdfee98a33a1c5594138554137ebdfc491988c77c795036b1dbecd8a3fa2f4d57219b6224250b5dfdbc17654325de126009aa6036637187e813a989eb6f7b289c65cd3049d7527dd03c65fb8424c742c137d5fcf21733934913e0d868c3d2f12ee9ba548df8e3e9b34208ddb50999fc9dcdd2ec9a1cd7d8144f4d45a246e573946902d40c169006362a9b91f89809e620e7f04aee25ed058f27960076188a78a905c13879833ca0efb9bb0e28248b2539295ce439eaf363a2010524822a474a50498c3fea276e7a2b1731f8acb9766d9684cbc557ae75c683a220e23960956e5397e410da1373458749a5750fbfacb1b058c0f13916197ca3bb5a8fbe0636758100478e3033b8d92a80ca174562b58c8b750f864e0eec7cc5a6da894983b876324f6985cf4218fc978b9ac4cf0c25f6be1dfa976c34b4582d11d16c497185a78b43fb8d1d67bee6052e75c77c7877f9fe98bcd6426683146185868c10b0a4c80f688b67d0ad02045b710ae6472d4558e100dbcba1933131e7df9c48214d3d4e7d85dce6e78afd02032a6075fcd177183e7bbb1531fa757beda86ff10ef53986665b7d158eaa325d29a58f4d93547442d86966ee4938a57c022b50e924aca2cc107ce440719b785fdf67a5c84fffa61d8457998505c3cadcc8ad2a8bb7d786821fa488eab716f9cd6c06094c056276ce6d4d50bedc69a9b384765555e48f0d02efa5626229ac43e1d8d464c82ff897d7ea4e10a6d34864594ee2e01b1752d49b378ec23fe79b305f716ac5e69aa4f7108b41cda14ae69e01b040230f3395ed782dcb594c04b20f41440f824158fd0d40c8e837ac881a0c89f070894fd3af9d1e6003a14f64ce4147037e789dca716019170265725ff0a539db9206135d4755418ec31bb16e89359e034c45e765885ab52c03690aa65a06953a97f5c95f12d4bc968ff97d60b8f75816888110300232161a3644c30a9de1d0e40371f3e7a8b0e0ea7423ab46023124e689ce06922f64c632ee39fc41a0eb13e0c0ba347347295f5d162b4022b22c236652d53549ba8d9b5c5d3875a19b6d9d47530368d893277f155d65f852bf000571f6374b8190ba1aa2cd48ae17ea99955ac04d8eac997276b71ef7c2447a7e893d7846e3dca99f5607347f07bc530230886bf569908d4ad21139d5589dff6406325a783aabe029cf03f5ca94786b14a3fab005749b9a08975345ca7542e182d7b6d146cf77e8511a48e0cedc9fc5f1222d047056c18feddd88551b05fc6db59fe9dbe0ce986127137b4dce3513d89ec72729051232dbfb1823613a96b34c5998e9f97abb9d7e9169002174cc5e47228b767bee90d96b95a5b9c6cb4297fd4d4a292351f96d743f0e35d9afa92aec3bdf980c34f90e1346f353572a8be438e0f4f71f9acf0584d714c9a00876733c08ce6962f3658c30e1528749c75934a9f4c389a406b65494cf8a4dcd33dd1a76462bcc82beaa056b3726e3df492746594740d939c61ead2aa4dbe823f34a5ac94bf5de40a6130f3dac129e8e1808aab46315ce6ca957ed1e447839fb34d0821ea861695efdcc89d7ba9f4c3f792f58359566200d2e40408786371811bb4117f3cfa1258596127acf9e52e41d63cf75d70a1f506d7fabf2f2ad2769b0aa8619b9c9817ed64892e59e695d7d878c80e05aefb514362f304972cbb26533feae98d9eefb9948505cd058fb9881d9782d1174466e9061d279aeb3699341ec9fd1e15bc3864d2cf3b534d85bb5ce31131e44a1c03864ad22476977992ca16b6f337f3e5dd509fd246a1c3ff3cebefcfcb8afaa4450e903b2c066050942898ef3e5b12bf6a01926894777ef02687a2a6c7645f27d9a25bebb72a546aabfd017f8b861c3982fa1b526c48a9d471368d867f9e9ca9184396d4bc96cce6f28e4b110f07f15d21e6697bf8d7e87e31ddde1beefa30063c4da88da1486b40f6eb9c6d64c5ec73ba93c692ae8a9101e12c60b050c65b4469a6dacb1415d7b9259a9b3a51cea5229e7ec3c3222d1e42599107f5df772d26c3bdf1147c3a51adec838a2bc39b250fb89f11bd08e80ed454621c3a0376b78f0938817ff63b740c909945f82521ead33394292f71b5d5727d3b4f913b984bb48adc732e2d0aca43b3bba0766f278f89bf2528ba4b2a14804017b62a22df37345da8e0cb7666ffb9cded76469fc3fe3c9b64e6ea5c2a26577951771cf29970b7ed9225be0f9f07dfb234efdd27addce4c209d86e28d094f46ebcd032e291e4b588bfd2b29027f3413bb041054dc57ca0148937b0d2aa9b521c6a5ac892bacbb8aea192b4fcf13ffca9285ed6822ab402e53424b8a8cc500756ac4258bf3ecbc2b938edd5910658f49e6b149d555085a4e6846d6c6123ed233ab8338ceaa77be6b7e019fbbfd6a6875b042d6c01fcb1416961db4b6a94e3cfd0cb20048e3216c73cfef53fa219b3837854e3016239123b39bf2ae456db441605d67bb4f4962a022c24fc6f4234e6a1e82831c82589459720e59e0bb14f59c98b9262405123d7e54c5e2aa4435948c12d2d47d3b3bbb94aaf3d797703979fcbe5b947b3a554ccdefdbf09909dc445e197894e880b08b0296634ae95024942e89f6d82bec4e95ec614fbb31c8424d85c9e2bedbd33b976b1ebe810a1ac10191dde68ac1db041ef2581cf70e1a9255ae478e10987dba65a4883ad136f08523f072b693334d357a686935adefc6de31105022713c92a36bbf1c3928911bb5a077a80b41552b8a3b5cecb9182fa9d34c270792cec0a4336cee31e4cf1b7ac1f606f6cc7d4001fd5ca4e1a82c9599eec0f1bba4966c3213c6d05159794b175fae7c0a3ed35c7736385044c8c8fe314b686fced4420c0818a98f6920150ab4a2398dc34dd1b2820a502297e8270fa7d1ffc47ed297793679ff85558d63afab8cc1494eef7a2ea3024c0fe29b232bf87aa24574b20fd0ebcd8e7964629bb38f0a155269daa9c3b5d876c2b87f7fc3f321faf6b796afa9cb788d7042abbdcf9a1b97868cf9de4b5ca21ad02c13220ae1bf5bb0821af377a3522bfed350ad3466673eb813bc6b34457a3b0cb69061e79520ebc00bd6897c3f47285f063663eac5affa4badc4cd04ffa672e099150d38af23260eaf7f138445b6d426489d4d32dda703cee7af0aacdcaf0000d104aba2c7caaf715b288baa387a6572daf7cd14c15f5e32171a0bcb88f863a15d75a95190bec9446344ec9c7c201e69f0398fa119b149022c1008ee6c520b7b8ce2bfb1c8a0659fa2708f2ea5193ce27da7588d2f8f90bf10e98f0f2a34f7378309fff0f6d2e15c967de3b90e399b58ed785183c1a1b88f03d64653ca9434c42d59fa629316acaef8c36c68590b32a8362801393c10a7c819105d34ad7398df5782dc38a4b242608401f04e71c73039a11036c77d60ba6a70fc5aac52987892b776c3733bbfaf2e376008a1d5d94f8be70ea4a7170529e33afd9e305963458ee938b1777b1c374c7f4e1914297b66aee0139e07916d8e00a114ac173c0a5ff4e9540342679dfccf3e5814faaae3e5b80f9e67a78634a96c6b45bfc5daedb18da360526afe5d1c16ca523f8bfd6f0fcedede3e993de24252a1fb5d67b3d81a443662738ab49c36f6bccb67279cd2ed3ebac8b1bc598f310470c68879981063cead72d3b1961f75fea0702ff75a50ece58f2ae7c019f2bf989543788198363ea7c31a8dd1af369cda9e970365f5c88793b94ff9b662a383a774721038d95977285a91374e2dd4e4dc56651c4c1b223a6a7ec0691341a4fa9acdd0979c412f41b700271f3e051aad86dd8ad70cd88f9984c9236caeed0a46c102ad6a0cacb35a3045539eec1541144156daada81535b2f58818d43eabef67f3c03c0a2d500b2b4abcb2affabfff293ea758bfb08fbbbb725e7c961805d330d679c8dfd01ba4e3f217357c94c61c248d548f234b519cf3ba48a337f3e54ca05241988a0bcdd0a8af04ca0f9fb2f714d8506be330699dc3a17af31496ada3ee6b019f5172a7e8f6862a499007ce19a40596b117cfb7b9f508925ee78a9f09ed9b5b84464d68098b5ddb8aafe2985d6cfa1a1181d16a3673ac4657e25910fc5485847607999806c22c5de8b58d4faa5027b064d9782e1da8fc40dce80faeb9d7378c606f387f5499889b2614c2d5aaf5a69f4aa6060e1f7fed5a62615914708cb5fe28b2ec648cf4d84c3875e409d98497332f5b119b666d5ae0c7dda394ea9ae7fec56a1c784261ccfe4d8344c8a218135296e06af582c5fff000f188352574ff8a2be90d28cb9aeac9f7f9ecd25b25546dc6f24cc2f5db4fa25ed76918ed85ba5591a297742c6569240b3d7efffe6f3ee8ed54d4ba65f18de1160e3e2a003fa8ce6c7cf5891938b5273f9645560fa19ef743c3940d51a9d768212878fc9e70a25a50d518b0d1c286411bfed5336f594abf7516bdcda1b4c00fe0a376903c8ca75384a6b68ca98fa3dbca7a254bac55ae819a6bacadd398d125148052fdb705a02e7dd1aecc0de0281114b1d3e6ff2a80118dc06e9216bcb1987e5711bc0510f0d4369027a98e8b082a17a5ecb5e32bb91b72cc105b10e8574c28aa58f9439c6306d16d4d3411771a88aeaa5caf5dfe12f61920733476507d6db3aec758a3ec126d6ce4b8bf044560ef13ccca294d28d6001623871c65432c178579961b84316561def72004411a043f3bb1b0aaeed1a94a0e9e0f71c9cf9cba59cfe57b9da9ca777f5c54382c63693b95ca17769029d913ad00ce46cc91a8677651a5e9bc2267af30baf395f2ab86c9742e85f8df51b7500d9573e6d9131ce6046b53ef9ac5e810acbd1ac060ccea770e975eea2547ae9e559b005619d5767ac91c44a2d1f62d5736adaeca8c333c9d62713970517ed3b8370671fa83d6144c4812c6fa57e35f62a9ea0e8672641fc0be3e8179e2d147ae642f7b6b224e43cf1cb83219fbfd1efec8fb019ba7a56462d4801607bfccf0589d019466f407d76e1c47bf51778e1eac4e2881b309ad2e90a5b76489e5d3112e23fe3d0c714b8df8990279ebee7eddc036619619612cf02fa1d1f537dacb3b152a443ac615f714feabfb2e96a184c18f27631bdbe4346d9d573cedc5830e0808fbda649b5d10ad83a9e0f364b153b87e1248adb3716d91e8c566e1f92bba7f54d33f18d0d184291c4e72edb1e03c770e368d226efdd4f5c2ebdfa4ea044648f6769ed3975f98abb8c2f3e203279d3212ca0c662c8894eaeb38cb6a0e06dc7278544971bc0dbfd421f4e8854726fe5e30a9589c31271d4487ab4f41fb9726c67981c35be3480ccedc552a96f0d54a86c000fdac0dd9b916eabb2b609834cc0b405abc4e28a00715911b9bc24f0a102e00b507193d34c932352064f0fb335de694814a706ee3bea16f2c05033749b30703d421811566c756e5151820762cf65a7f4fd76afe6474cad12411f6b154ad5a6efa491ac9b19b1ce38f2d195ba9b83e52b76ea5d9abb905d55a26bb558d20133e9811c39c8d22f60c47ccb11a0f181164a81d882433d4f7ac5c8dec93b9ad4a8c0f9d8dc71c2c514159f3b0c24b4385aa957c2c584c25e9ee9554e4f909b5379e5eb61e39d8116a4955ff6688a42650e9cbd44613428b8dcd1aa1dc08d999d0807dec4ef981b85ccc6970c775bfcb499b3a7c2efaa9275640c534b3d756a84a554ae2fb963e00e56cb80f5ca96bb4e12582c7cbbf7cca9f031ca5e3fcdb7fd95b383817168b318ce63a88ba3774c62a384e9decf22f852244a70af0e0152ba9f06cc137a3a67910e0e3a7e9070afdc2e97a07ee9c41ee2462ac645bf241ca0243d101d6f79369cf0d4a6956537f9064a5ec5f0d66063917413868f42fb8addad3d5a7850b2291618fe0c442ccd64e8b1ed2115fd7bf57b8c5d5250ff227ee47f4cbd761e09038b326e733f1e802b8b8a12737fe3286a7318d99aa7e263e50891ed8b5d809d17dccc57479a3d5261be8b22ccf77c1d2460a3c0b4d74229cbf13c45c0d8db9e8506f41b854ca31a2d28642baf52116b3245ac73188ae57a6ed1bdd387885427dfcbbf8b336da173a3d3225de30c7e300115472caf475ff1d4ca7b6ae5d14fc367a9af53b93c9c02ae7696920815daf32c06811befcb983154eacd198b39da76349e816070c0132031251ac2ca9a0570d2458725c17bd5d2826a208d01f23a460c49aa9d78cd5e4a928fc657303cf2aa8b220d2969554cadce58a626165a7f90f6f56edbd827211f56c3e7f33d56d59e096d7657a9d298b579442cf3a2b6261bba746862bd9ec3065f9c6705ae65504a321b284d990c229c322c08c2cf5687f660f5eb188981d43f552558888781435983d1ca84ae24816c39b2cb4bf490895474d841bf093c0fe8e4fc007e9034372be822b7f6222f7c6f42241abdb45af3d8c66038de3d2eeadff23adc98978ebee3b4a78e2a588c6c1acd7d7c1f5148cf7e022ba6383564809f5527ef8cda43420534436ec0889ee54f6af77644146e90b5c9ed2eb02b038408bcf1b33b87184b3c0aae325c6328eb67d6ccf0ce0848ec111c81ca4fdd628372d049dc8972e4b71e793e5bb0fe10e8f5a11ee792cf79d31264f72ef8615dcad33062151534d4271496f11581b068e3e53f4c07d8106546fe05540b8cd148435af8820b72e83b0e2d97757a824a4e90fbb29c74c6cf0e8ea53e749113241a8cadc51f31a1e40d22465e220620117a48979b694cc449d1da280aacac9a46e449cb56a4fb8841ccd4b423f50e6d54fd48e2608b061de8208368e9414fdcd05858f79d2b3658a76f62629acdaa09a0d276ce6d1027ad0dbe081822becf9f5c9934bfce5390782b8b1009c0fd664926d4c9b80ff98bc3cedd96fb38b891e0d155312d4553fe6e8d8febca12d43ba67648ef85dd2203a92eccf10297249dbc6355dca0f7475073f1069684dee85d406688c35c009c5493117b94f465edf5f421a725405f08411197fac14655d9315340ab158ac08b05b97c577758ac983477f0f3516d0ce8551b72e31c8a4bf199ff5a1a13f76bcf463c100e51c1c487d6e3c21a0f5adda24e05875f50ce05930bb157dc3769124fe623faff38494d1978be0dd053476bada23aac103ef3812af59b35c5a4d2dbc80d0fdf5d617f13d604506f43b5ffed69ad85c1463deba81dbac435cdbe94ea20f2e69bb35ec23c53b4e7c8c4a9784811842f3683768817de03acefc28b706beba23eccfa5ac3cb6666868342ddb472407456532c235a4d61c2fafa42787e1b802c42f752725e3f56edb520e17525e51820d53bf9e9866d9a639cdba741e9e5450e458f5996a251758850e05d96c53609d1d1fa5f3d6063ddf6c6b8e789aacdc17cab48ce02c3f8bb1c6fd497428915a1f3a108f4fd4468051cc861e33c0d5606bcecd230d05b874f10a21be1f770594a8d6e4f5de0f44086d341a9912098e81a7a6186f990f5be3975a9bddc6d4a36cd9ac07ec12e538681f27b3d2b711ab0e244aaaaf0df33b638cb5840ceb9eb444b038a7488f3f58e937c65ce14a854364bc4982d38dd7348a1b3ec92d12f9c8012eaccbf2f283240bb06922a95fb462cf2a9f68ee3b0bc93bda92b68c40eb5763fe65b62c3c506d572464643e6775af3a335d272452c46c0e7aa22c63fc0c39843db72914ee87cf0e4a08dc6d9afbb2c76385e18a97daea69e918d274c3cb62750db6867b6d524c76b3599c70ad9f9a6a31b9eaf72975b5b7e5dfcbae91399db4ad14f59622be83d39c26cc5d9e6359247f7e3cca59c1d4ddfa9adf408e70228c8bb129fde279731cf4db570ebd3d82e341470a1ec3102ccb2e96062fee2cab85cd477eca276906b98480b58a7d49b25fdcf3a7d5b3688877fad64b26e0720363aea9e8edbeab8c62575304dd04d1ec7e2b381295a669df023626823ed75c98661e09d3913cd9089471c0d858cbda2640974f540c800dd8add4ea090a81e5315ee141620f3294fd920352fbd235083fe26e5cb20817227a33f9d29341ec06981a2e9900ea77367d661bb520ad2eea0c5f077d59e384c867829e333abb50a3785d351cac115c8cd85c8b4d7145f0b171a739ee8a28134b7560929ce85cba0384899eb4ee2a44757153724fa2518248f6930bd898f23e32cff9aee32a830c8e79a0fa07172ae4c228190d128abafa43e826db7b326ee2fd3fbed6af625034f61d8aa4f8dc4e30253616f77ad0e794c89ba92e95d92a72ad423805c6ef860a7c90d3fe5fddeb83df5d743dd8e5517d219332a514855d53b88366bc0542445982ed8d357866a1d9172026fc0f5c4f75b56fc401c7c5d4878dac7462352de5bf9b9d7f55b3f3c8c5f51693bec7e09bc699d989af9f6a73542ed9cbabba295a9982d340103b585a6a559e7d6c56633f5437ef9b52046f37bc1cbae8fa56bf5c7778f997b2baf3e33133e43784ec1d8827b45f60fef0a5fc2a7d451474f505436b2b8fbd467b33b7632488a6dac7ae42b79de041df723c6c8a390c6eece12086984679d05af50eeb75109b511651a974903573f89bd3fdce3c63db515b1f83185b3628e1a925fb74d4f14524bde09a18b64de8017744e4cd8b4dcf279305835191ec0441ef85fa72df2292eb67706e611d44f053604243a6f8b739d61d08859c1453b4986d297ca730d9fb91a8f19ca029cd407dde89f6d1037b08a9fe71ca30d1e5ea3284d7b7ba672fc9736a988a55395312bc122a344c15dec338b913f5d4e32ad9a9398a5735192598532d8b2623b15f69417757036018fd38b8b8624070f7e4841030b37e17265790aa455362bafe03b86b18fdb76f649123aecc21bf72f3147a94ebdd11f2c4ac952d663c6d398ee2aa2e80f80bfbfc23ecc799caff250bd0f6ee884411492ed0886a2ef1228109072f2571dd4620f680079c7cd6a8e38d877caa82dad2fb8f9fd16a7007796f7561505d2da2ddcdbb2e2fdac7ec892c5c1dda37c0605a95e9154928036fb1b792b975216058c486cbe8eb4e208bf6e930a44ff9f78b699ad44809f7d6938357eb291ce9c5e329646a68649b3e169cc4e23e19b7990663072f4425ae6929ad7bbb42d10b8c8c333874f42388a68c27a74361ea402a98cbf98b713f1a1895fbdcb43b7356c12d6f0d002d74f974383ebfb5b8cf462716f3ae5210084c1c55487fbecc207a36b7427e47dc8175f2e266994270fb8bbed012c53c4a9bce460b211647748cfa1ffb47c5b2d54ed2a96b6a031c88474595453c4e82cf434050973ca1922234709fcb501a40e4a7ca98948e7c69314cdb3fd92cc90ea0d48979bc245b6dedbf3fc48bdcd25c6b9e2224923e650e91bc71ab3009b40048a148422a1ebbc8aefe0a505e87ee5822d76e4202605256e1386e995f3512b64d210618157b35ea765e1837e28ad71683a6e6f2eafd6bf417abf32cf5e4609f91d968596aaf8e301ed396b8c4d95868fdf6dc2fbb2c5d4e13c89ef7aabab30181898e8841ed395470e3666aefbe04b8c30f3dc4e83c133f29e6d2e188a6091f622d0b36ef76e184524e1d735996a7e16ca18b95c7b3a7a0a1051bd75db16e2d278e6f74a4147c9594e0509002861e2ac4202e1a8c8d2fa68dcc43df6e6df6e39f7746c2008cda5c63f6fda0eb4d4bc018e655bf50abb86367279224b30c61786fcaaa2a24db081703f14df47c91b6ef93aa5e109f4fad286e256310e7e893e25667fbb46401072215b790e3a7c48a7e34f9e6ed99901a6a69471130199bee4313c2edd9f3c0abe3081323c3412114322ee058011c23c2c962d126329fe6d5fcd3d24389022e39b14d6715d0dc30e3d88ec44bae4f0459da9480394959d229ed498250f69b60e0f220047c94f8be222d3852df2892fe7aa8330e7c1eb8d3ce6493bd12a425832975695caa3e8acd2514fb275b56887785e047cac46b158b185588a299de14b9cf7d4fc7e73a7439ee9ecc9bb0747157de149781457215247d2e8663317e3608d72d116612e0983b176dcc041c7fcc69ac920f219e4b424c1518d992e0b662358b2a8d6a41b4c7a744c498fa51a10885d73472fb010029939e3176a75974cc9722ebdd78811323d60bb61bd590610f00745a525fc94156bbacd3473df693e8dcd14f813c620d6103db377c113c6edb390f9552b6d220617fcfef8385d2891697403ea27d5d1507f3adc8e5b0aaf7c405020dd4dbd5cd8f71ba4146d7b41e42e888dc613a5b7cec2992a951f739134dcd94fc5a6d4fdc70d7b0d81749f57a2b28ac2cdf7554e51996ea0ac98679d74f3d4ef8ee22e72da0309504123aba686822f289506e88f333c33c52ffacf43ae565c4ec0326b90ec51695b7745f9ce72aeef9dd061f7f66b268a56b59fbc889c50b842ed27554a345a84f0b56b3bd91fd06520ef773078bb6b757b25a65abfbb6750c074c28e22dc7cc372a3847ade4a813ea02d54af68a1781093fae89bae4e31938968ede6384b1f12db3e091dbcafa6bbaf39d00c08bc9568a20be863fbe9577b6dbb55beb2103d2f90872470de9335ff7220b0b2f9ce137c4861e1c3984e936d7513aedb83f732816cbc4347831b9e85a3ae7b9d2499255620e0a3ed2b5f4601beacbd15c66ec2bc8e6ca6f223b23e06fac81918ebb2892b186d185f4171a19ea63a0e4a29d8fe4d7715e444c3479b61c4e9026ba4fa60fd20ad90e1d3f60cbf43ffc70a44501837a50af4f3ccd38c9e809c35f697649d6281f7d506ef170871f117f053cdd0b9a2dc5810774cd8c24808560be7870faeac6ae745441422fa7a9495d275fa5279c3e5dda132ad9398d53d23d29fd305dce53f5003367714e50b777a61126349d9540d08db5bbb5fe98a684f976fa07370e9552a17fa4239b18d562f5e1f0b3bca99e47513243555444cb3959de58d5c249e80070a0f617adb960f8f9ef97aaabc402962e41e19abe39408c7a3b3650dffe9ff2a4fa8524b3b2f5cac14dce87882d4ec15e70bb860e7f5e9776f578de2679eaa5ffd729a4bb15881224628fbdcb45957d3097d2e38981e765543e17f55adb4927eca9baf8c3034c91ab513da08c77ed5f2329b147b0edc25cdba889a9615ca1b9b8186469be0e39bf320d12497f5f12d8f9789e67b4ac6690dba1151da384ac8552e8cb753e6889860aa77de3b3d84c1777f5148f827942329c1ca0d4b8e4fccd46d1276ee73ff1f67d1da1b84c0cc3144a2712efae388beb30acdfec5cff3f15aeadcd5b3c1255b69f36e4f2be0c5f31dbc78943bff10924b4af44807b5d672cc743ad166352c01c93fe7d0f5f5cc8d235303d084d06c856c531f07156fb4906496c3ce99a35803a387056becb1e5504ef5fe81caa6caaed1b1afb9b47179381f479559ae5657c1c8dc1aec16e0bd484b7c7634b7d0fd212e8b35b05024292f32e65ee9560e14ddcdfa0536340f52d1f8162e06c8aa938cbd13eaf0cd9e69c6ecfcc6293d748828b2c2e6e48a6dbe8ff41e9ec355a11493afeac7275d9127241f1892a3112f733d2e576de5ec45ca22a6fa2934a068c04e075cfe286d73a876a33b3b11e9abc826c51b003206df0602f5b885a7afbce90732947a5e8bed0d8a081c445ad06c6704ea4301b94f261f4e52b340d417b1e6bd2480a3146f0811b1214d4d2c4deef6791790705c78cc8cc1860c08826ad93df5aea64da661071e38480efb1b16313122cd50a8473b4553cb64301dd83301a64bb0d6ab78991477666ab323e9be864b26eb78e7c44b153f7ac6ffa930a50a3b4510cc72276f9f51eedcc6530704105412a7021b29e12e2c1c0e46fe058b5ff8c8c43519be2b765cca6eea045f642b2d8e689764bee30b3036386170ff258c441a02c3a94a3e828f2dfe1d93d1b60fd8d59bafcb0639b9e59190a6c4a6cb0d01f6c6014b1e36ef3d539628e75c28ecae823c9c81f4f63b3b27ea101462e1214c5db8e34b4b01b4488c8375a2699cb14efa85d0c8ee4d5ecba4db6407409f7bd56e4cb2e671ddfc2b40aed6f56b92cda786516c24d5c56b371997508f399cbc97ac20a826d177fe71c74265ac4dc4d74448478940126a64f0da1fc4ecbc749a49ddfce55c597aefc1b034d93364bde89bff2e14d60b3c63572af0a33ad9fc6c08c121828bbca53239d6af3c1153a1b2f69b8d169eac99a0aaa2875e4eaab5a3fc915575bc975b909c9b5e71f4d416714de38c1c791a669d7a3a4b1fc8a2c92bad137622658b8fbdb48fdbb99f4728e1d24b1f2ffbe3390e7eaa65d575c526ed3b56e2f1b2aed90db58dea45cf6b1b323d1cd0434be65d7732ce553af38dcf7b52d40c93ce0cc76d20919ef5c90d9dbd4301225a3bd25ac5f9e13a2817eb2a51be07ed2284eca8907dd5f3e040145587a021473f1fb7eccc75df3121a443b5a1a1432844a80b1e34dc0d72bf1f0fa9dc352fd144185fdf31703dc0c367800c917a64e832877567bbe479c56f131694801a71876f8e747d445ba25867c9b848dba27dcec988c3810394d43c47e1ee1a2cb4bbbd73b1a55b1937825f6cfd9aed930640835fed56fdc3615535ebb4889d1e9762445d3d48a4f5387c1e41ecbca1000eb5ad2a66ad544fbdac8acb45fd4cf6dd90a32642c82218535d927d206139baf576c449a5fd3f9f94881ae786f4633fb5d4625fa4b24bf99534e1da819b2d3fbb321a17be6760aa84d28a68f0da151f6d1bfabe71613808e0173bff18c0420c827991b5db73c572ede602b37edea86284d265884a6c9cbe65ed54a4b977552f5f41cea0a444d0a8527130774fc65f9aff6040328f692baa0d841a1fe13f64e1dedc9377a06a75c22700bd3385fac7d833b8c2241c7cb4b1bfa2ea2d0ede3fd07e84fab50360627106878cab95c1537a95d2fa07c13d2e889e4a2c72326281b2cbbb2bae1d3eb73b4e7c10a152b31514195b2af46c598eec87c307a96acf6627db4efecd5e7e0f165e025dc5e1ebda012bd3c5cfd122d7958d6409d7ea22eeca3d227aa3e5ef1b2792cbd7bd55ac97faa8025d045ee8b03c0b0c29242e971c8f4f5e1e3c9c4bc38d18869ea7754d033dfce33736c4eab7efc93ad736717871c0c48b9fd32c6af2efebd144f94711267828234905ef75c291e49da1a82d895f87ab97b28ffff77106c82e3d225b34e664fc7c227c9918c9d07300c0978bc9e42783264135c40a26be371d5c4bfacdf3d0c5c52f126e8503d428d4bdf0da968d423eb51816623b5c0d3069850648d87c08676bc4dcd3804cdd5d829a296287b7c62c336e73f38bf9fa7365607606e824fa19d5b1a897ced149653b394c55be278cec6a378d33b51dc75ce6f2996fbe418e70f0117f2ff9ba92bfddd8f142d94a58c768c7f909c4ddac745c02ba65aa69d3bed0cb9c0198e779abe66fab8b876b81c526446c62cb987b094baa0ce7f66bc18ea21b623052cf79ef0f07fdb0263e03e7edfa5da15940ae92b39d49c643b75058d00d6eb809e8ef8724ac9dee7a1aab067d1255cd22c9324d979538faf586a7d75408e76baa6ff43a18c265a1d014d1efa18cc182298afd5681dfa6e1d0a22d7d7c8c1bcfdf913418d82d20bd90cbea245ca6673302dae065ff5afaa67008b662537aa13aeb0f8947924a25a3e2eddd55953357c5f6ceb2578f624a382e759d9c1b31ddac80fb4f44f0db4b88d0a88f7d4b4c6e496301f68f7ab20091cd8130ae496be61a541ffa77dc0a6b38c83d8eae0649bb5571824a4b8e909bc6d2d8d7ea6bea143468199091fde5d500bdfedde1a304cec39ea5da4a52f2d6f63274b08444ce98614bc48416fc60838f875cc655f3c72e4f9ad71e5369b390cd88d0be12aabf83cde604f1994682a5d97e60b2c6b3a578369cef5cd5e756767c20d58290585856cdeafa491731ad86ef081d1de194c8eb8f3fd777a8fbd693f4f154c11242bb427003c296fa9b0b7ee05a2e928da8e68b41c1b3b1dd27e98db00ddadb2fe3af7ba43cb78707b40a570b0bdfc2dce1a6a92bedd6dd4a3618b2ac876ab12a8b664f0160b191e0394349243b40c3f8a43742948545459745d6cdd1a3a6a7240420de7a63e62013077753a7757656f25e03363eba537d4ce83a44307331385e3ce738bff84d2709dde992f3381c149a311d5801ee8a7a9956460edd60d7eeabcd232c43884904858c1486f239e11ee7aa2691846df989fe8809540f8b7abb0c793b2d5fe836b1a890f49cfb5e14527cbd09de63a0b22ac7985b27f03bd6c97b7b7fd5be0426c9a9854a649c6a42ee04eeaa0cff5ddf23119f7b4906302a59cc862c9727e2701f833d918f8afc3dd85e048386558727d0ab6e8a8c4a4ed8758f2ffc2f2964815b19f3efb35f0ddcc362c2aaf2adce402c16b921234fd56a8e71c527b30dee56cf5505fe2812787c006c12c742d2d23389f571c5946290c1dd97f2a5d097b3506bdc9ee3585f6a827a0f26445fd6f77eb55349bb8e7ae3ab4f5d79cbc4ead610ef6db29e5e5aa998fd4e9ca803bd41dca3401607cbcd63402fb940cf1071a8f419efbb8578e174f31edf941b36ec579b0830259e5d8b24eab2f7c432d20b4e8e2083510926ccb372fc65d4ca782801a166c38381cf98285f961328e465d6c74fae1f681f2577cc4c3ef4a779d3f6bb007596c61766834e7c627b1f465be6fa31d793c9bef97206177809ac1b7dbed44309b6cc069332e9f96c5a673f730931a029930ed9c8c028a34e5add21e798a77674d2a00cb339470801e779cd531d3152ef1b32572f2a23f701e4ebb81018e6466cef57c27f24cc369b0f293639482c7dcc03c55b0875e6f8176c96e86c197a0ab92f038a0aad803f582846dbfadfd09af14dcd0f128cbba16039544c9b8b9efc9057dfdf5a5411251e2aab7f60028bd4a7a70921eea2352aaf60be862cc4fdb04cd28e37d727ca5aff497ab3588bc4a1ac85505d1cc451510bf04325d58ad0d9d89a3a14d02b2a4933cc08e1532862304ce7d782521eb885d4bf404af31cecafe1c416d041e9c2d222e8590969e41733b10e4e39ca9e2897fe26516ce56d1e702ff0b717454c09d728eaca8312f42854755f805eea511623119530a66ce30a9c6d8b2765ace6fd99c556dee74096dd52ac5b33d48d791074e7c937f053a592e615d81eff4cfbda3c9b31bb675dcf110a9490d324bd69a7e977140487b0d1f5afb0dcc4afafbf559a05b9f9adaafcad68dfe052f5d2344e22d7ed16652ab34438eef7d3e45875ba3f7386ebad513c36456f7e646d47c46f8680c5b233ce23b2052a94b759a611767ec18770b9bb13a036be1843a8821d262ffcf95f69bff6c86552c80f5c878e5ceec45f05085c8bf2127ee7aadb2526f589b84a65d6a123ee5e35966a49f6689ff07adff0ca71362a2784beafcdf4fce883e865958958ab5030d27254cbaa9d47ee188cbbad2ce7d5c3162fbf7155c058303f11d54d7ca95b4a4811bf5731ccace483a4f35dbd020e577e57345ff363e46ff5aac9ced70dfd061b3e7323509901b9bcb1761511a492ea97810ea5e0d5fc79a593315d81f6b606aaa458d47da24776cb49aeca8ac7662267d3f7afaccf781c01d59d22ef95c90ca4c5d1c822ad80a8eb19c2874e2f094527923ec8cd6f514516a6fa3842387f94d98f9e7d305732dd4dfc2cd25e80f3a1b0960e160f7bf61687a99469f687fcf216519e78d7aab1f835783116c5cad1831eb429cb0a464bf484cb03e752535f33e63264994c0532997ef51edda678af23fd559f71c3a9a82efc9a497bd89b3f836f4a152ce66f90beeaa8b23de09a834c2ead1adfc7ee1f399e6c7a911aabe4475b1b9c68316f7ca6b87f33aba8042308e6a0cedf2b3a9e9307b3376ab908ff4a398706b647512f3e7701167ccacae5eace59a924edca7936d8a5a76dd68bea3cd3b56b3c577e3727ef859d22d657b4e62df0bafb7f664ebffdee54603b4f8668511825e5b7ad3ad5ff53a5a262d4013df1276caeed733d3f3ad82a81a439e36b78777fb66ec5bd34a781e4c2bea9ed7f2be7c33c1c21b5d5b912acc098c22ca4e1b98266cb9450acb2be8950f21e0d973477234a116389cc359f352c75be56fcc417fc1cf496d0254f7f8436167e52cf483576f7d4cd852462737ccbd21f3e3b861c1bc11b3e7d4597a47953b264515747988625df38ad29ccd482409af04e50cbd0c37afc828ba964e067822dcc8d0d825fd85805aa8f99c8a906e919d15c4f922488e31f01159ac1828ebf67d8080fa2b0c298eb1ab0cdb42cbd6efc9463949f4e8f7d6aa3d571fcc8b0ab7634a9d197dd9890581d271b8c6f190470394841b454873856e45ae2b10c7b675b022d160f1ec416bd5f196f099b1518e24de05640ba294c88e858562ffa1d762b4e70a35a4fdb96a80d7692ed5efb78385eb98e45c38fa35841bd628029a6ad78fd28231bb92f8f852d234d131b8a375b60031c1815dd22d43adc0d0c6e5d0b9e11df40deae32275c437fa32dcc8c7d1efcc4c69274b1547cf48aed009102594a093cd6fb36d5193c01ff38706d308b26e1bffcb1a3b2f106dc2565d78c62dc7537b789752675ec04939e0435001d020c6d7d1a435acff129727880634e68118a5b1e1ced9aa653ba0635e4b061e48b210e1c8b22a58173836bfdb64225d8930858d7e3a5873276ba9d1b6deee8dea8a5b414217df35ca11ae595013cf4ef9a7a964d7f5d1d2cd0dd2e172119fb58f5d47c01069eea90121f2f59f644c9891c0177de1ec210ae0fc1a2d3ebf52993ce65a3d3689e921a63b8a82fb3df4dcfba710d6eb32eadda1418c5fe136f966d9552ddd1446c5762414a4524ec02543b6a0d064107ee42bf2fc5be0a3d62334c6fa4c236f60e6c703c3d6d9fdcf0abba02edc7264094b61f64dc0b2335b06e488fc284ac0e886935e5684fc934b1598da7b963e329320cf9c54c9d49b9bd425460ec88082cc6cf95606ef7e496b9982ecc7dd79d63eefb4edf66186993d3b48cb5def3de343941e4ffac6fd730ca23a13d3dd3fe44a032416a2d29ab8aae413678a6ad0a7fc810bcb6199c5c9a5b9d71dcb92c5419735797cb5c8edc47ac13a27caea7462c3050b71dc2d8b856bae2a651ad437b5afc4907d8bc9ffbdcc3dfc1cb9c637a6409ba4294b017ce8faf7e63ab24982e1630dbd390d475500eb2437473e4330dab163356610acf8c2c42a50424d58dbfdd010b01f7f4e92eaa6550fcccc06b865861dac73dfbeeb22d6f6939648bd5d89ef11598932d126ae7af6783a583ea3de9bb323b8decf2b493a7e0c8068a0661c97e96f7be7027fa20b9c95386797505b625f4ac570a06e36e3d939902f2811ec1319d9686d1b9b379e6238e4375589e9349f676d1935a8015f7993c1aa651641482f1d10f24c72b19f627a5eeac33622b5c95f76c5d5fd88c7500cebfc28ad9bf17a8e041447c36889d27f9cb19e69078533a6699a3e6e202bd3402bafba8a741aa5c27ad6eff49182d0ccf3c45c2e13c4a6931d869efdf507f0ee89a51aa14c530153d6c952ddbb6f1fb6478b8cef2587597b5c78629911cbcbfb51a99a3561628e4ec469ea25161b711081dea2c2bbb6e282a74f1c917940facb91653215532d9cfd60b68a7e4e4d144ef7921b9a916352a42f242280e542424dacfad210cf18b1ecdeffbf3a43a31b8b6389d218e8273a2e9e264aa5095d01bd2ffd45ef8a440f6f7e97943118fd64772d57fcfedf0626a04c4b52855295965a8f95f271aa65d2686611a84cf68064d333c8ff687cc053853a591a4bd3e9b0846b95ce12650114147328d44941db167b1ed5f0bba9aaf8e687aa160dcbe898b6ad51431e67d3405dba62a6c15ae01e8b72335841a9049073c0014dd994f2ea8383712bf1ceac44810213373f9922d411bd3d148cadbf3e0278b3e5283678403c1927eaa3f36cd8ff4be78f3e61a37b65cee2e27e0bfd4d90f134753850339d58b40dcb04e879c34841748aea74c560fd2c041afe2688cd4d3f10e86a194bd6b03b0a3e9589573e12fb086616cdd07694580e419e05413086172a4b57607af683c7bede90415636c43e466b2ed166aea5ce78c9fc29dbfe886d75b2c5db703637da7db2dfeb7126df8bb3217d8dad13c9a36115af170881a98a6df28d88ece7845b44fcbff4c0f83fbf66d0040ceb199f01a65bc788ab779c51a37a0af037bd63c7c59636359661f6c6fc54252a0ac4706a9c89323adc20b062a566cd238a311a2c8ab6933161b30a3ecefe2d650f9aaf8105b3522e4d03bfc96f43318fa1007fb927d940f5070f8b8ce299981dc83e56115d69709dc3168dae61fd17f5fff0850b461cf9833fed390ac099da7737cdefc487e3100d16d468fb7b23a18a7ce016af6b6ab599f547b32aae928f1d35ad2e418de66ed719736fb348ea8e38b96e73fe5f1052bfc51e9f3db85fd4dc1e4f2407560caf25b61cb28a1fb72fda793ffd2981a90019ecc5be308c9b03b6cce0c658c0b542f300954a064873a9bbba70db6d97497c03ca98970fcd058e387cf1578b4f11ffe9c9d2ca24bc4f9a851ca35b884155ea8f45f811a32d825aee000216bb20422b92ef0a4caa8040273ee6c7d92a1760877c0036b0ad61c0dbe5e29a20d239d3a4c6a53866981b0666fff151db508265e8bb48b88c3b184ec2ae5cf7d1cbff9f6103f4963446ce99b0207d031335913d25f3aa9f99dfd47e343e21e1e18cdb1728d2f95476f160cea92878a61599f77ac767231b6b98b1132b8faa6ec06404b87765e110a2c9d4a247a0a3bdffb0d661c4157139dd82a9019c0e9e98c2d76b218c2d7fc871ca933cad59ae741c73f7b8dd555862f5278d213f891d17248c0decf017273fcd89e3b2cf000f6f27f3e83bae3afd4e4f27acc291cd2c1050f6453a31e14ecab7eddf361a64c9afed48423d5ad45dd8211a792d0104fedc096b41e07946f0aabcff0b2bf1bef099865717c81a8d052ac23c4f4df677f2ba8de2e6c3c61111ac44cdb6d89a6f3fb556539c37161fbc73e2c179b8d57a328e32f8357c5b4d496cf0b1e17fa81940b10163a7733f481ec6f09f0458fd50fae80776665e0c595b00684b7011f4998878537cd02e82dfc693eb996911eb9613ffe6bcc48d57f9d21a08c8d8266a4f42c90994253834cea984aebc5fbeabfe25571480f98c9f4fd31b4ace1d173be56107494aaad00321ae242d70021d41f7ef24269ee1e5efe8b35d399e9a900d655ac50b89633bda85748c937c358ba1c4f32e64ef80d11e2c23308f5c0490f812c338ec618bec4360147eec3aac63d0ad6d1545b5b98fc1d2fdaedcd8d6075d38f92f4a6a6443742b2f451ebb7bddda488ef242a581938574774dcf0ecbe2807a22e03d840bbe41acce4bc82ba752fba87294e8eaa8044adebdae6372f488c9f9d69f7d7d9b5618baf8ddad5e2b607dad8e3edaaf0826ed4a35fa1a71b7187513eb8e01d64d535259563d20d8c18e59f43f4afd045c7e166b02361fa1a93f9154b215e859bbe678c77054985a6e324fb74504bf0653786494467c27e619e002c637a17460deb0d8b113381fce723438fba61d8d15b30a3c84c008a7f916d57fe9460450cfeee43dbf8f147c7a89c364488db5306c67e4df15558440af051c1a9e7f6419d5aee61d1dc5f51f8d8bc8e449ef577d52d05ec1cebae3c2779da0dd3ef0d6f1a8428f657264d97ba2abe0da2776f19040588041d8358203564c768365485d5bfeb52c9e58184e598a25b832dba4b8ad7104cdcaa2388ed9d0cc9902aa820b16859d4f9edd645f92bb6b6effd512026cc495e045301619c464e91967e4051e1efbf544a19ed343997a403c0f890ef56bf71f1bfff76ba50e6057dabe209a3eb20e52cb89884d699b81cc3482bfc62e6e499b9cc45dd9bd93f8fc378bdec12610f62ce2e2af4effadad24db818864210fa9249cb4e359b892ff76434a645ff9b10d9e744e36e2eb0df55a284c5c73ceb72096787fda80c0af01aaab857110813e938c104a8952ddcf8f95f6674239d4ec18d89cf9fbcdd1bfb1d5baf4e1d0a76fa8e82d4154973105d924800953a502d8930a556ec7e5038f241acea630353f6a79837d461b0d80913fb02f95911be87f0d013ff17df6145343d9bbf60db17485ae081f24c40e6f894e0f88b524c3eb8fb3af28457b12b8fcd5069a3fd8a08530e5225870b12eb817c3c307925950f35dc4c3675b2c27b9681c6dd2cd8a8647bbddc169a5289e84d06e22f56dae2499bea2dfb93a8c285bc860e726b6f433afb1baff452cb81697017bfa3044d68cf57bc733fc13d9ae3a9b81f85e18e5121251b0b5954a05bd47b633ed60a3101f40323072b23770dde2a14db692e7852dd7631bfb0f5e0c41ce8ee2749b4a6b66c72a6634275728ae4d4d8554d750dd35e264f6237f1c006a4478f93ebc6119941059cabbfb14724fd406def39734289772a0a2a149cde95af652a126056fd034921db9b4db18555f3dd225d4192a6fc6012ab7ac06d91cf2c4926b991f7cb306e448445962b8d6006226d93a15314789a185a5dca1dab6a6dae6c823ccb9f432d1267c8a9a2d0467b1963297399c57d228388376dcb9534bae207037075f4b8ae19fb14439505013ec59c6999b82087f5a18eab2c552ec37faef17cac05332288c918448521b0311f35c4d03e9980e980fe4884c6b0263bb0d0f0771d77aa73af6338e6d4a11c6ddc294692833a3ee3be09074d9a1dea580b2058d74998ebf9e9828d1a5a456cbc24dd4a28814799c0c45733025dd072db6dfe53bbe65e53e7f0882e7d917b57b1bb972bbbdd83702bc2a2982e81c93b73b77bf334e264b0ae6c9a2d2780791b79001efbd38a71e6f838fd79b454461eba229a2b3261c0e2f066494bf36288bb4f67888ae9b3762993c037541d6f5b23cc90d28af7903857b4faafcb5ebc6f53bfa12d18fee6ea4369b560b62f3a0d96fa5f6a994f8969742e424149ebe2f1dc8c1471251f3b3daff5a16238ad2c18dc3e9f239c27e996d4ab01a427d0526beb0460255245559bf7516a997c52dd33355eee112143e225846a70466f47e47d257bf75b8cbc26113c24db11f2a59d0ba0788bed982773b0c52f135848f73ff0016a10e019eff98e6b3c4cf33010298d8a4eee93c030d9d1e1e39ddb4969232244fd93422355fe2e492b2a5eb1748e908b84003ae1502ebda1f9a645fcf9c16bdccc3e1aa3b19d364e9fdfd79ef2bf0bfadc9dcf3a1def68702390ca371f9f4c35eaca902b938423879487423e6fdb74ce57d87ac9e74b63b1dd66b16d30b5e4d1f2794aba536edb1d92414bfc28b92037e34a9048c31b1e7ec161687eae557a4231c4c767d0a2993b42cc51c50e643a9b0801012ead908be9a1369514c95acb80a1369655efaa463fb0c2278208554d2024ba1f74f95e2d88e6dcaad2f3fa5ea2e51c22df9c71f1a58380bb3df86e1a60617de3174497d664f5609ecb242a4c83a5bc26ec183a379d4ddbd41e2f635d21d7e3b76199dc3e044e5ad7d85009d4c20eb2bc57ff3b4378ad96f72c71738349b97a946e0941ff0d261eb66db24f987c1deca83266eddf5aa1480191375e5a673574a509b098d633d9f135996f58178acea0bc6a36b84c0404b0ee7fc4ac6f825a62c540e7bdef710e1c6ed009962b55be2b492fbcf4d3405dc296e3f1d026f4c6c43dba55b47f9cc13a3982364fc3134a9958fb0b247d8a75b22ec63523df2d2d3800c7447a5bc01b10e8179a676b5e8b5d803efbac2997adf96782590cda886acf575695af21ed818b1cba88c18097b017bc425df5b499784caaf641f025d37ea42456234669757348e86779675863fd5d41fe40d784488697f0f3c5d39afc3f0cce16999b1637fe451249fc0ade8a458c23380ad6c6baff836352a5829e06cbdae36ad0fe649c75aca7e72f1c0d105b506cf8062b86cb25a6934cc5e863563a517c360a0768cb90a65034d299a88983fe876c2112dfcf4c7ee3025b9d7a6ab0ca056f2855a2fa481e0a0093be50f1e68ad44c735b9a181ff3d2395852b8ded4a5f80992e8a363bd7ed023226bc16b5e36eb94205f49468b1ee738af8b444974899318fd0f86a67189d17988bfb154fc089d4c749a79bf640d2211ffa4afcd800632743a4c398637f3742c1fb0e2adf2556485a71ee5a9170e23e126b345c81cd759ef4b98524650b814bada2338cf410ca64f71a8e09e8280ff83fa76e1c1948cdac945d24b0dec344dd6aeafa44f8bcaa2a2a3987a465d45466f3912d129bad66494eb0fd638997a9f29fa4ff1efdf97304d0bb1d2db6f73256d40b939b2e7c64ff08b575e8bf723ab4048545614841acd4f0351d677aad4314eb4d0105c866828d6760763ab3c4aacf539183b57612524ffb26d187456f10e64a717542ffd6a36ada1dc17e209765bce9ef8ccf767d557fd8bd890e0219f089d1db179e487b71505876249dcbc9fbdf6cb43328ce58d3298ffec850041b7f274bd50c896b437518a357cadbf51955dfc51e84c49718cff9be7952c9895bc58504d27a2d234ac30ca48cab8cedc1b2b5310d3431b99e3734f5ead831e3b92930fd6011280860b7f2e412ab20cb020283ebdb6b7afc86cea04d7059521e25df45bf7d28c5ee4920a5dc64ca5e68ca410ffd743fbdefcb6f4bba482db341039ed99cbf263bfd0413d562d3d24db14b7bb0f0c2948fa95111ce89528ee91e1c590f9fd64f578ee0e7addd62677c9770c7bdb024d16f3dcf19d659a1c133fa438e505c29a79ce7c44332f6213330acbae4b71ff23a99e7a8948c90374bb1180b83293b62cd891f3712649c765b014e648d047e21d4c5a74e472acfdfdd87942f3bcb916d3124c81996256f4604a2aa0ad0f255753228077ca01bd8f622d855bf758aeb35e1b4c3049f06cf450e8b6a7af9be7b36aad609947679bd20824f86a55b0e5e76fe71d0f28a0b3dffe33271c514b642be9961bd7ace4f39db32b2c72dd96fcf17bcd7357193d0b26d02f934acbf55e4afb3e1fdba0fb2f6fb9f04931c4ab51f09a736af7ff4c798910749749c700a88b99f50a2890341810b06a027b50d344a595a5b4726fe65ab9b17082e01549aacbdd945602f13278f4b4f7ab6d14bf8a4984ca31cd76bc5d88c733baf9b02b2e02eb4bafa570b263b2c58fe41e2f089d2ae7689e85e19995ed028ddcf9c762d8aa76775f682ad817620caa8af1130f81cfc08baa414db49e4faa7f27463103f78466ff15aebcd7d7bcb188d5c0a254843a52cacbea54160d56783bbb32b93fe049cc0d3997393c66c41467b24151f9a993d8cf9e0d25f0036a90212276678f7ff63afe798da493a5bcdf577026df15671dcbcd652b174bf80455ee5070531b62bb5fb33f419a00b8a0c9867955d0c72bbfda62599435871f60e8bde4fc7d164a625c38b5b2b5d780353632a608a2c900a99ae5a5dc7b72fb248acef9571ca7ef7ac7178a2d0876076fba44c224964677fc5d8d9b1eba81b8d78ec3e5ea9114b2d48ce25213ab7b522a3f326b99a8e854062ef4de24993eeacdb67fbbdd2bae1b793054e05e4c0826ac59b0b2a4b5835e54829d0b783cdb8aed679745bf7a032b9198f83221f0b2213d69e004cf0ff68b4caa975858eb1731644e17248c3043076e66229c0df324f2a4f8e1b4a3d85102804aad4d1b6dfaa7c83f80ee083c45e6fc8c3b7ce15d23feb7d70ba38492319a09522c2d0610086adc9bc49badc48ce7329ae4028c2e5da41556ce2d9e0b87d981b3e7e9ce61c1ebabcf795713dc8bf7a894a31c678efaf471a946b682348d4aa4a3ac26a6e8d689353d539785d805235f7bcf96c65e1d7adfb7cf3a1eb240155354be2ba95fd41e62d03f117d627367c3d01b601d38c68933e6eefe00e7efa9f3fa044356722b99407edd9d4fe0dff8923ada4ce7c9fdc6d91fa0e6773df4bc59eb3139b740c75dddbd72e939fc736a3a9ee74ea6e6d4367d30fa7f7239967d29ede9d001755586b415b5b64f047790b7a766aad7dc17f8ebbe2939d84c35955dd9ebbb1226f766d67a4ec4ad85825c66e8503a9259728634079bcc16f35d45bfb9029f7cb202f472cd04bef3540cbe29a59b770e25ae49f428f606e60f24a43e64631a892134ee0ac80185139fc022355e7079a558ed31aeb26fb966c11d77ff316654cd1f4f1397ea839d48aa522eca1ee9c5a42c28586eeeb66878f0eca5c8dae62ac40f5fa211ed5094f47c3d655f809004be9eef022b81da46848a6cc1eae610cba44d9ee2b9d3e9a999758083c6290a9b3a89c22cff539eb789289bc9e6bdc2f5a8bd27e3a47150f67b644d748334f4563fa7987ded6a0e8fed872147628972007f9e6c55963d279f01f0d7c6531b48ca7ba71167cbc3a35399c2706436f4b127518222ed72197c99839f6b4fef4c4068eeba3913f9f8118fa0ca73aa30ed0449e0d137ef02f12504bb8e38d912b6d1ed6e12edb53bab7ec62d07d34b525d087081fd6f06920e4c4af9dc8fc94fe2475005e44c1d9a09270ee91ce44bd57c66c7e74f88fbe21b56a0c554fc5f046a926cef9787b2963a224a540d93d19cf29ee6c26eef2eed27e2ea023ff65730e4ef64ff0988c9195314f57fe4e23e95174d42df3ed24e0c301e4699a23079c7930bb87d90924462cf46ee4003faca2be06d421b04d07fd576f7cde6b67c6d479225a9cff9da7c7b5704c707fa7a21ce22e7ecea131712b66d1d687942519a8d40f060af39af9a85672c7b31b86683dff83a4a42ed5173b1ba3c645ec8853fc84a5258e187e87b1e8251eb258ab7d03b538ad95aae0544fc50e8ca575f7f0636e004574ef698eb0a28cf2e6c14a971b8ccbcd5e4bbb4401fba9f846b296ff6028c94c3cd53ec387410dc46f2b6b527b6f96188863a508448cccb4132222a1e7d2683e009d15c7a7860514d906a258744418b77e1de8826ccad180c6f7982047e182f962dd0f300e08356bbd323a9f3ca8072ad29fb9a05ee816679e12816cf9ce3efba15af6254c2bd8055ead46bc494c01f81d55acee5b8648300d4fbf815dc91afd7c85cb08c5241890c15cdff7b35cdd9a6b2997a00254b10d2124418503f7a31dba1174dee6d3e3f1f15537e089ffe0f475cafc05f12ebad906c00456572ab5bcaf8e5d2ba63afd65449e884a640b05e66320b8c9655c40f123ba2d0be1187d0cf22b8807c67021db10cca995370b18780e564f8c08b9146869ed45204d181f51e1a0c59a2947bee2131bbe35601484800cfeee43685b066652207eb4b6c706ff2e17d4b5fa9626639f2f38f94b2b5832b7c220e98344a2f1a8230384564fc47acce040f0fdb145d30ae2cca5294aae4bc217314c0804468ae290b684e4b943d3ec3eeb7ce85395bc9977f6029f8f3a673d0f6725bacd17d070a451372170f641d7422eae18149c6170aa556213b8fa9fb62258347625d11526be5bcd9a136b284a6374dee60c638b2ad581330a7d80cb0c7622b5e12944ae8ee29689dff4e1c84d251e8efaa3c83f7f362bc2227132f89b572a54892bce49429a9199d5b16801ef20aed73cfd191ddcd55753edd39a7c834b54305d305a216af33b950925d539d25605cb3ebb4009ad21c326ff291ab753582158cb9b9aa9c80184afec9e25f2cdd3ff42bd97e031b093216afa7b6ede21a38baa90b31f34ba7bd77a842147e8a4ce09e12beaca3744878ecfc63cfecb2b0a2e8db66f5f1fe562f6a624d6dedb2b98092ae712062a774245487cdb9bbf2243eff0a5302694e58485cf5a59acdee19649f1e72458ed077195a2f808f959321829ae57680bf3b948ec5686c66f9f17b68a5457b70b184b5d94eaf5fdef09d75f8529ef807a3afa9ec3ced4c42bd24a2ecd780f4333aa65ccc3bd9c5d0603010884507cfa4450b86c2b797059e206f936f7bb5b522d2b729a3ee4e8a5923b4a7793f93822ba30faa78c0c0a191932f42a4b356d17ecb11509e8f4ab4f344a37e0e47c91afa057a7c2e6813ce080be2bb90d169cf26f8c1e5b9396639da03315eefa5eea4635fe7f23d4ba04da99c072854344507c07db9596fa89346a77ef752f981acb95509fd85e7cb8c8772a7ee1de56c90310465eedb9c0424a98264dc7904c01fd3c82024fe3bd0ed2b4ad3135da98e077cbb877c45b494bc0fc2f065987ffcaf07ff992e47ca5096c080bb073c4567bee71ab43f4ad70a5adbf7a58cea4c5ddb201617452711b3e7dad0834d7e49235dbef414be689e3d763c3c25c8c67a9776a7d9fbbf183fccbcb953e3c78cf0be07c1fb8380e3814325731c9426ffe92676b9f30cf19a221f3107c09879a9877c139a2f05a527f1f2d58267590a1f75af906554f91880cbfc235edc6567d7644fb42683a0a38b57d33aa94e40e2e7dd556d1ea94ebc171c0e33872cab139f6355a600510557c9102b76c72193132806b557f0dcbfb56f3fdd483c41475b57d57eac4bc8559ce72407ae433dcef047a2046f553c54be69a7c76aedeb4d31d2f58eadf0e7dc77cd5bc8cf654b80b6235c8bc20b7e83462f1940c639885a080242fa13f0c6331a7317149511751acdf67cecc29d6420a57974b3345de9dd735e5ee97fad79d625aaf7163157a6ab140ea968c1727667362c829d23929e7b2e9e7d452527356adffe8de8db7383190c8bba339e617bf0f939e1c47dadb17208a763e09bc6f99aeaf8b53c9930ccab9143e37214d86c7487a22969fb5793c6e2c3ead02d00cc600bcae7e783cf5fda6ca4546fcc582b1129a53a114d47e47e68a23719fdeefdd04b563973a1a4f582df4ae0549b25324a55b91bafb784fce06c1d816cd5a2c29cd76afefa575a19f8fa2e126801f63fef4ca4c2f323e97c7b9f1960df09412c927afb015d4b54cb113f98728aa6a5658b9ff095555462dfe204ba1e800b45960ab3f7e59f037e6dc3a0a74677544c1a7104610549ebae8b6b3ea2d9be2e6c70457a4d82314a6247bf4e55b3a9f4e42900de97f720f5d5cfeb5b87c3c76230bda388efce32d5102cbe7c493ebd1d7a6acc0bbff2ab5a46165002bca06f60d85fd03611a58be56d13b3ebaa19021a285199b09febf309f1bb0c1deb4f2b1e214da31dd0105b933fadbd8743542472e6ebb0db86f606ebb7fafbb9f86ff7a51023fe84af928057263e2768d7887b4f4797c19528e8a25b6b965a85862ca1ce3815f20e07084265abbcf144e0e656c5f0c03c2b4cde5e5ee2bf6aabd38c2b2e0d2e8b102697e5bc0c14571a77759b20aa0f94847298ef06cfe01d70ce765347893fef0e727c42898e95b7125ceb1b7b1fcaca7424a6c19bb3a2a161962c1572302d7d531849fc284634d2df42a170768ac298b38977ba05f33eba3a658ab64512767498edadb6f1f88eece20a64920ba613b25cd3a6e10527086bbcda5c97658b19a5ed96180409594b8b13f67b95f3a7fe40fc8b8e5423470e8f8f3f3d21a5645172d1a7e3ccf376c71646d2aa003eb45fb5c9a8672148e4b9e2b2cbf608f449695d4008ae7a88a19c593f0b36e416dbc6dcf30bc175a82d7e6fde542170705070a700492a8656a092383cd9e21cb2fe2b841c97c979057482ecc0ffdc4b7278796c49550f3a07386ae7013d02e62ffdc1138a00afd04fa68fe47e88ae517f79c77f8b0682170b622e45318f9d8aa37cfc820a3dc1bb5d8265f93b8767cdc1627cbcb35c52710cca6c1e244c85006a9b38d8c099744d80af5122e31753d553bc0b4bfc7af4258d95d8634c878c7e0cff94e646b9451d104aa7e8770c510c9b8c6303a742754eef8b989eec661ba0e530fc05c0e9298d421789a7d43a6792556c44a40e5d6941f8aedffa8911815e51041f2e928a5d0ce28a887fc1c1b6f893ec0ba2e0b30637b43181616fc81eae95f06843713d14d051722a3b5d225557c5d743e1c8e2d3309eaf3ae1535f12840bd931137a5469da22896dcf69235b4670dc4e13303f74ef5d69ec55c7ea706c5643caccdd35f405a01844f543b80a63bf43c0af05320572a04601b26102bbf6df949cea846b1f03ed5e459de937aeabeafe03b913cea0acd34aaa310e073282265c69232156503c0c58935a1230e1fdbd170d37f16f6be24074765a727fe80696f0866123481ecae3b3ae4d231adb7591558073cc0ea7a09cc923c6a2e72144a2436790894efec73e67b2195b0ef23608dbd6cb2235caa004bcf813f65ba6d373044bac6c8aa304da5310c724e385eb295f5d91edc96b0546b47ff4335c6ffa54d69ae15b96867960bc5c3d2e516b58b048378a3471fa02a35dfc5b66c2275499a56bc6d420161b5c272c2301959c82796e17bb4f3a6b00f1850b4c093bad632846f197f99d76ea6bd4f57dd262037848fafb1e661ea4b95c9086fc3c7e2068c508f7d37ee6b0cbba372654fcd21654840c39231aac070d9c1e2f6e80f00f818a92d055cbdeb8de0254f897687e9a72bf1ca3dabef4fb3dcdc8369dd451e30b1a49183d30abd5018a7aa723d80705ba82339dbf68dee6ce23a8690083fb11c2e56dc0c23d01b7acaf99ca0130573151565a8455e97bcf8c8477f4484743cbe3bcb7a8c7dc0f2440a191917359129e9febc10fd85f74885b23072047485496e26b0c5420f3691661e2e44a1eb3e57a42385d1782ba91b9f25361626ff90849fc4ee027958feb1bac5be5f0c75116e509601f2323f01905e4a0277f9f2c5eb6de656ba17472fdb1f26356d8de35fb2735b0e1a4d58876cf746c3bd797b035c79525358dde5fcff58b303e154b44f2c3d78159f98d0775152887bf048809119943b67b9aac1ed1be906bd9be857dbc705b532e0a2b8afdeb45bea56bdedf715e8f79e19be0a256289b1fc6d5726c223993d785ac0185d9281ec55ad25129f27e17c6b2be6299d3b3ea2bc0941bd56d00ea72f6e36be12e79b8762693d6b88e39e773c27fe7e4c1f3955b5ff829f2482f62a57d60c1977d203f0bf6e5a9ee4edc579ad386a4d665cfcb0a18bca1e95e99b52fd3320dc7b065930aa59b675b37476d8dcacb39682ebd6ec948b3967cf66e8a3dba62bd6cd344452f2b0848c0547c6680d7f6ba7543c5b4157fa966c68d0e09ac71191928bbdd23d423cb8a2f6e16d233a8645e0a231d52c37b6740eda3f3a7c9e21cfea6ef19490f77987dddb3d3f9ef2c0aa926b9baf78f5a3cc84aa3643c55f45f79d964ead1c2c2cab9ff01bba4627dfc11a2b8285c39dd5fd95c283efb6d0d0c82f17179dc36afe10dd4426d9f3a3bfa7dc30d030c27f369e5bd15ed39dd0e20ac443592fe0fcd83f5a2a053c56ea7ebe8bcf5a7997f908eb2dfdeec2366d8514b44d04f8eca1d1b2554ed9e6608223662b2419a1433848b9308989f4429c20d8ae3b3d6e0fa7beb183bda42e4e8b26f5a3485e04f017d2fc448166756069139533add36a16764f4c7a6a6b70d5a8495cdf3e00f25c652fa6f5e8ecd1f08458814a5e025c9967fff8d51047bd3fd9c2df5d9d9719b5748e7eb7ad7f215b091a3ff34cd1b0ac0b8ed9f62a2161f923398852dc47f200225d0fe47c19e4030012a2aa9bef0b43da293102c969dfe62cca35784f632b1cd87961e57cb18d42bdebfa918507437acd5a0a678e659dae5a8a6d671707499f673b53e9b2e37e578267e98c4ec7fd38fca0b336ad9531175ac453cb07a12279b43220c728483223b921daa993d552d0433532e13eddad750bef68e0ff4db78782c3d6b3c6c5c6d6b280ba75133c1ee54cb94a04703878413e85da2f91ece88ab11a2740f89822fa694ead082d7d14565f9de5cdabfe274b417b872c934f5037257878871f4647b02910661bff807a084146e7e44462c0c88859906d1238d1986d399460030f275a670f79415446775f3cdb55abdd63d30f0bd2ed4101880baa2e0bdb3e2907bc2c9797958592744322418eae4ccfb0ec2a11595779e830f37bf03a53c794c569e2d7f39676cfe2e5cfc2cf1c8469eee0895472019b0e4df7be7e1fb238956b92887afd87dd547bc1a497de7822ad1e616898e7caaa75534cc7d88e40d387d1c3c4d7988924cdb4dbbb29582bc9a8cfa8dbdaedcfdab9f6a8da7cd30459f5d49d748219046a1cbbceaaead8990c14f9af90aff52c0fcf069f7400b223f05363bcb1c7299d6ec37ce36dcb012dd1c01de5520cbbca9d78b40d8b7771bd98bf9e8cb587b76928eaf8c65723ea45e0735079e54ded79d8378943311f1c3dfab46a2bd3d60e96b9e72eaaa5132c30611176c407b8c18e691061681604ff839ffb79e99dec2debb1ab9908de634660fc29a1e866ddd6028dbae62c245dd72c5e86973f02cb9c07accf4d58618ef50b0c4ec77b159438999af7e2d29d34075a3c402cf2b18696747a73df0e3142698cdd5f05775d46ecda294886170d854925709ae3f2de18a832e667dd3e07aa162ca9f67ddbcf09e7082dfeb95e4a64b27257a7901eca5ac6a68247a215cfc9a8448e773b33a08ebfe7e4aeb4749576b19d9074bfbc65c6ca31afce7ef353cd0e4fdb861f8354d94eae93883a83d101800cafd2bea1282d979483c696824759119b6fb38628272e07977bb0f2856dc9b2d0532c35a8cb1ba39d6cb43afc4af2d99129bb1673a9c0f76be2196bfe634c1e4bb500e145dee3070e1c82540df3a14d55dd7fc971945f93496c41e7f7bacffabb51c14037953ca9f71cf9c4637713203785e78423af38436c933d7b3bb9413debabeeea5a7c3cfa8a559abb408bcb630cb6bfdd6a78beef3dab384357cb62d</script>  <div class="hbe hbe-content">    <div class="hbe hbe-input hbe-input-wave">      <input class="hbe hbe-input-field hbe-input-field-wave" type="password" id="hbePass">      <label class="hbe hbe-input-label hbe-input-label-wave" for="hbePass">        <span class="hbe hbe-input-label-content hbe-input-label-content-wave">您好, 这里需要密码.</span>      </label>      <svg class="hbe hbe-graphic hbe-graphic-wave" width="300%" height="100%" viewBox="0 0 1200 60" preserveAspectRatio="none">        <path d="M0,56.5c0,0,298.666,0,399.333,0C448.336,56.5,513.994,46,597,46c77.327,0,135,10.5,200.999,10.5c95.996,0,402.001,0,402.001,0"></path>      </svg>    </div>  </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/programmer/my-project/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>操作系统</title>
      <link>https://www.ninojay.top/programmer/knowledge/base/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/</link>
      <guid>https://www.ninojay.top/programmer/knowledge/base/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/</guid>
      <pubDate>Wed, 28 Aug 2024 15:34:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><ul><li><a href="https://xiaolincoding.com/interview/os.html">小林coding</a></li><li><a href="https://javabetter.cn/sidebar/sanfene/os.html">沉默王二-操作系统</a></li><li><a href="https://javabetter.cn/sidebar/sanfene/linux.html">沉默王二-linus</a></li></ul><h2 id="基本的Linux命令"><a href="#基本的Linux命令" class="headerlink" title="基本的Linux命令"></a>基本的Linux命令</h2><ul><li>ls: 查看目录列表</li><li>touch: 新建文件</li><li>cp: 复制文件</li><li>mv: 移动文件</li></ul><hr><div align="right"><p><a href="/coder/">Return To coder page🔙</a></p></div></div>]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/programmer/knowledge/base/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>数据库</title>
      <link>https://www.ninojay.top/programmer/knowledge/base/%E6%95%B0%E6%8D%AE%E5%BA%93/</link>
      <guid>https://www.ninojay.top/programmer/knowledge/base/%E6%95%B0%E6%8D%AE%E5%BA%93/</guid>
      <pubDate>Wed, 28 Aug 2024 15:34:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h2 id="Mysql"><a href="#Mysql" class="headerlink" title="Mysql"></a>Mysql</h2><ul><li><a href="https://xiaolincoding.com/mysql/">小林coding</a></li><li><a href="https://mp.weixin.qq.com/s?__biz=MzkyMzU5Mzk1NQ==&amp;mid=2247506739&amp;idx=1&amp;sn=4c0d91c3c49838d210ae93fe1ff937f1&amp;source=41#wechat_redirect">15道精选MySQL索引面试题</a></li><li><a href="https://javabetter.cn/sidebar/sanfene/mysql.html">沉默王二</a></li></ul><h3 id="面试题收集"><a href="#面试题收集" class="headerlink" title="面试题收集"></a>面试题收集</h3><h4 id="执行一条-select-语句，期间发生了什么？"><a href="#执行一条-select-语句，期间发生了什么？" class="headerlink" title="执行一条 select 语句，期间发生了什么？"></a>执行一条 select 语句，期间发生了什么？</h4><h4 id="MySQL-一行记录是怎么存储的？"><a href="#MySQL-一行记录是怎么存储的？" class="headerlink" title="MySQL 一行记录是怎么存储的？"></a>MySQL 一行记录是怎么存储的？</h4><h4 id="什么是索引？"><a href="#什么是索引？" class="headerlink" title="什么是索引？"></a>什么是索引？</h4><h4 id="索引的分类有哪些？"><a href="#索引的分类有哪些？" class="headerlink" title="索引的分类有哪些？"></a>索引的分类有哪些？</h4><h4 id="什么时候需要-不需要创建索引"><a href="#什么时候需要-不需要创建索引" class="headerlink" title="什么时候需要/不需要创建索引?"></a>什么时候需要/不需要创建索引?</h4><h4 id="有什么优化索引的方法？"><a href="#有什么优化索引的方法？" class="headerlink" title="有什么优化索引的方法？"></a>有什么优化索引的方法？</h4><h4 id="InnoDB-是如何存储数据的？"><a href="#InnoDB-是如何存储数据的？" class="headerlink" title="InnoDB 是如何存储数据的？"></a>InnoDB 是如何存储数据的？</h4><h4 id="B-树是如何进行查询的？"><a href="#B-树是如何进行查询的？" class="headerlink" title="B+树是如何进行查询的？"></a>B+树是如何进行查询的？</h4><h4 id="聚簇索引和二级索引"><a href="#聚簇索引和二级索引" class="headerlink" title="聚簇索引和二级索引"></a>聚簇索引和二级索引</h4><h4 id="为什么MySQL采用B-树作为索引？"><a href="#为什么MySQL采用B-树作为索引？" class="headerlink" title="为什么MySQL采用B+树作为索引？"></a>为什么MySQL采用B+树作为索引？</h4><h4 id="MySQL单表不要超过2000W行，靠谱吗？"><a href="#MySQL单表不要超过2000W行，靠谱吗？" class="headerlink" title="MySQL单表不要超过2000W行，靠谱吗？"></a>MySQL单表不要超过2000W行，靠谱吗？</h4><h4 id="索引失效有哪些？"><a href="#索引失效有哪些？" class="headerlink" title="索引失效有哪些？"></a>索引失效有哪些？</h4><h4 id="MySQL使用like-“-x”-索引一定会失效吗？"><a href="#MySQL使用like-“-x”-索引一定会失效吗？" class="headerlink" title="MySQL使用like “%x”,索引一定会失效吗？"></a>MySQL使用like “%x”,索引一定会失效吗？</h4><h4 id="count-和count-1-有什么区别？哪个性能最好？"><a href="#count-和count-1-有什么区别？哪个性能最好？" class="headerlink" title="count(*)和count(1)有什么区别？哪个性能最好？"></a>count(*)和count(1)有什么区别？哪个性能最好？</h4><h4 id="事务有哪些特性？"><a href="#事务有哪些特性？" class="headerlink" title="事务有哪些特性？"></a>事务有哪些特性？</h4><h4 id="并行事务会引发什么问题？"><a href="#并行事务会引发什么问题？" class="headerlink" title="并行事务会引发什么问题？"></a>并行事务会引发什么问题？</h4><h4 id="事务的隔离级别有哪些？"><a href="#事务的隔离级别有哪些？" class="headerlink" title="事务的隔离级别有哪些？"></a>事务的隔离级别有哪些？</h4><h4 id="ReadView-在MVCC里如何工作的？"><a href="#ReadView-在MVCC里如何工作的？" class="headerlink" title="ReadView 在MVCC里如何工作的？"></a>ReadView 在MVCC里如何工作的？</h4><h4 id="可重复读是如何工作的？"><a href="#可重复读是如何工作的？" class="headerlink" title="可重复读是如何工作的？"></a>可重复读是如何工作的？</h4><h4 id="读提交是如何工作的？"><a href="#读提交是如何工作的？" class="headerlink" title="读提交是如何工作的？"></a>读提交是如何工作的？</h4><h4 id="MySQL-可重复读隔离级别，完全解决幻读了吗？"><a href="#MySQL-可重复读隔离级别，完全解决幻读了吗？" class="headerlink" title="MySQL 可重复读隔离级别，完全解决幻读了吗？"></a>MySQL 可重复读隔离级别，完全解决幻读了吗？</h4><h4 id="MySQL有哪些锁？"><a href="#MySQL有哪些锁？" class="headerlink" title="MySQL有哪些锁？"></a>MySQL有哪些锁？</h4><h4 id="MySQL是怎么加锁的？"><a href="#MySQL是怎么加锁的？" class="headerlink" title="MySQL是怎么加锁的？"></a>MySQL是怎么加锁的？</h4><h4 id="update没加索引会锁全表？"><a href="#update没加索引会锁全表？" class="headerlink" title="update没加索引会锁全表？"></a>update没加索引会锁全表？</h4><h4 id="MySQL记录锁-间隙锁可以防止删除操作而导致的幻读吗？"><a href="#MySQL记录锁-间隙锁可以防止删除操作而导致的幻读吗？" class="headerlink" title="MySQL记录锁+间隙锁可以防止删除操作而导致的幻读吗？"></a>MySQL记录锁+间隙锁可以防止删除操作而导致的幻读吗？</h4><h4 id="MySQL死锁了，怎么办？"><a href="#MySQL死锁了，怎么办？" class="headerlink" title="MySQL死锁了，怎么办？"></a>MySQL死锁了，怎么办？</h4><h4 id="MySQL日志：undo-log、redo-log、binlog-有什么用？"><a href="#MySQL日志：undo-log、redo-log、binlog-有什么用？" class="headerlink" title="MySQL日志：undo log、redo log、binlog 有什么用？"></a>MySQL日志：undo log、redo log、binlog 有什么用？</h4><hr><div align="right"><p><a href="/coder/">Return To coder page🔙</a></p></div></div>]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/programmer/knowledge/base/%E6%95%B0%E6%8D%AE%E5%BA%93/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>架构</title>
      <link>https://www.ninojay.top/programmer/knowledge/base/%E6%9E%B6%E6%9E%84/</link>
      <guid>https://www.ninojay.top/programmer/knowledge/base/%E6%9E%B6%E6%9E%84/</guid>
      <pubDate>Wed, 28 Aug 2024 15:34:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><ul><li><a href="https://javabetter.cn/sidebar/sanfene/fenbushi.html">沉默王二-分布式</a></li><li><a href="https://javabetter.cn/sidebar/sanfene/weifuwu.html">沉默王二-微服务</a></li></ul><p><a href="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/a4color/%E6%9E%B6%E6%9E%84%E9%83%A8%E5%88%86%E5%9B%BE.png" class="gallery-item" style="box-shadow: none;"> <img src="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/a4color/%E6%9E%B6%E6%9E%84%E9%83%A8%E5%88%86%E5%9B%BE.png"></a></p><hr><div align="right"><p><a href="/coder/">Return To coder page🔙</a></p></div></div>]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/programmer/knowledge/base/%E6%9E%B6%E6%9E%84/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>消息队列</title>
      <link>https://www.ninojay.top/programmer/knowledge/base/%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97/</link>
      <guid>https://www.ninojay.top/programmer/knowledge/base/%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97/</guid>
      <pubDate>Wed, 28 Aug 2024 15:34:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h2 id="RokectMQ"><a href="#RokectMQ" class="headerlink" title="RokectMQ"></a>RokectMQ</h2><ul><li><a href="https://javabetter.cn/sidebar/sanfene/rocketmq.html">沉默王二</a></li></ul><h2 id="Kafka"><a href="#Kafka" class="headerlink" title="Kafka"></a>Kafka</h2><ul><li><a href="https://mp.weixin.qq.com/s/1Mcm_vAq6Qv_pP-y0lPf0g">40道精选Kafka面试题</a></li></ul><hr><div align="right"><p><a href="/coder/">Return To coder page🔙</a></p></div></div>]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/programmer/knowledge/base/%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>缓存</title>
      <link>https://www.ninojay.top/programmer/knowledge/base/%E7%BC%93%E5%AD%98/</link>
      <guid>https://www.ninojay.top/programmer/knowledge/base/%E7%BC%93%E5%AD%98/</guid>
      <pubDate>Wed, 28 Aug 2024 15:34:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h2 id="Redis"><a href="#Redis" class="headerlink" title="Redis"></a>Redis</h2><ul><li><a href="https://xiaolincoding.com/redis/">小林coding</a></li><li><a href="https://javabetter.cn/sidebar/sanfene/redis.html">沉默王二</a></li></ul><h3 id="面试题收集"><a href="#面试题收集" class="headerlink" title="面试题收集"></a>面试题收集</h3><h4 id="什么是Redis"><a href="#什么是Redis" class="headerlink" title="什么是Redis?"></a>什么是Redis?</h4><h4 id="Redis-和-Memcached-有什么区别？"><a href="#Redis-和-Memcached-有什么区别？" class="headerlink" title="Redis 和 Memcached 有什么区别？"></a>Redis 和 Memcached 有什么区别？</h4><h4 id="为什么用-Redis-作为-MySQL-的缓存？"><a href="#为什么用-Redis-作为-MySQL-的缓存？" class="headerlink" title="为什么用 Redis 作为 MySQL 的缓存？"></a>为什么用 Redis 作为 MySQL 的缓存？</h4><h4 id="Redis-数据类型以及使用场景分别是什么？"><a href="#Redis-数据类型以及使用场景分别是什么？" class="headerlink" title="Redis 数据类型以及使用场景分别是什么？"></a>Redis 数据类型以及使用场景分别是什么？</h4><h4 id="五种常见的-Redis-数据类型是怎么实现？"><a href="#五种常见的-Redis-数据类型是怎么实现？" class="headerlink" title="五种常见的 Redis 数据类型是怎么实现？"></a>五种常见的 Redis 数据类型是怎么实现？</h4><h4 id="Redis-是单线程吗？"><a href="#Redis-是单线程吗？" class="headerlink" title="Redis 是单线程吗？"></a>Redis 是单线程吗？</h4><h4 id="Redis-单线程模式是怎样的？"><a href="#Redis-单线程模式是怎样的？" class="headerlink" title="Redis 单线程模式是怎样的？"></a>Redis 单线程模式是怎样的？</h4><h4 id="Redis-采用单线程为什么还这么快？"><a href="#Redis-采用单线程为什么还这么快？" class="headerlink" title="Redis 采用单线程为什么还这么快？"></a>Redis 采用单线程为什么还这么快？</h4><h4 id="Redis-6-0-之前为什么使用单线程？"><a href="#Redis-6-0-之前为什么使用单线程？" class="headerlink" title="Redis 6.0 之前为什么使用单线程？"></a>Redis 6.0 之前为什么使用单线程？</h4><h4 id="Redis-6-0-之后为什么引入了多线程？"><a href="#Redis-6-0-之后为什么引入了多线程？" class="headerlink" title="Redis 6.0 之后为什么引入了多线程？"></a>Redis 6.0 之后为什么引入了多线程？</h4><h4 id="Redis-如何实现数据不丢失？"><a href="#Redis-如何实现数据不丢失？" class="headerlink" title="Redis 如何实现数据不丢失？"></a>Redis 如何实现数据不丢失？</h4><h4 id="AOF-日志是如何实现的？"><a href="#AOF-日志是如何实现的？" class="headerlink" title="AOF 日志是如何实现的？"></a>AOF 日志是如何实现的？</h4><h4 id="RDB-快照是如何实现的呢？"><a href="#RDB-快照是如何实现的呢？" class="headerlink" title="RDB 快照是如何实现的呢？"></a>RDB 快照是如何实现的呢？</h4><h4 id="为什么会有混合持久化？"><a href="#为什么会有混合持久化？" class="headerlink" title="为什么会有混合持久化？"></a>为什么会有混合持久化？</h4><h4 id="Redis-如何实现服务高可用？"><a href="#Redis-如何实现服务高可用？" class="headerlink" title="Redis 如何实现服务高可用？"></a>Redis 如何实现服务高可用？</h4><h4 id="集群脑裂导致数据丢失怎么办？"><a href="#集群脑裂导致数据丢失怎么办？" class="headerlink" title="集群脑裂导致数据丢失怎么办？"></a>集群脑裂导致数据丢失怎么办？</h4><h4 id="Redis-使用的过期删除策略是什么？"><a href="#Redis-使用的过期删除策略是什么？" class="headerlink" title="Redis 使用的过期删除策略是什么？"></a>Redis 使用的过期删除策略是什么？</h4><h4 id="Redis-持久化时，对过期键会如何处理的？"><a href="#Redis-持久化时，对过期键会如何处理的？" class="headerlink" title="Redis 持久化时，对过期键会如何处理的？"></a>Redis 持久化时，对过期键会如何处理的？</h4><h4 id="Redis-主从模式中，对过期键会如何处理？"><a href="#Redis-主从模式中，对过期键会如何处理？" class="headerlink" title="Redis 主从模式中，对过期键会如何处理？"></a>Redis 主从模式中，对过期键会如何处理？</h4><h4 id="Redis-内存满了，会发生什么？"><a href="#Redis-内存满了，会发生什么？" class="headerlink" title="Redis 内存满了，会发生什么？"></a>Redis 内存满了，会发生什么？</h4><h4 id="Redis-内存淘汰策略有哪些？"><a href="#Redis-内存淘汰策略有哪些？" class="headerlink" title="Redis 内存淘汰策略有哪些？"></a>Redis 内存淘汰策略有哪些？</h4><h4 id="LRU-算法和-LFU-算法有什么区别？"><a href="#LRU-算法和-LFU-算法有什么区别？" class="headerlink" title="LRU 算法和 LFU 算法有什么区别？"></a>LRU 算法和 LFU 算法有什么区别？</h4><h4 id="如何避免缓存雪崩、缓存击穿、缓存穿透？"><a href="#如何避免缓存雪崩、缓存击穿、缓存穿透？" class="headerlink" title="如何避免缓存雪崩、缓存击穿、缓存穿透？"></a>如何避免缓存雪崩、缓存击穿、缓存穿透？</h4><h4 id="如何设计一个缓存策略，可以动态缓存热点数据呢？"><a href="#如何设计一个缓存策略，可以动态缓存热点数据呢？" class="headerlink" title="如何设计一个缓存策略，可以动态缓存热点数据呢？"></a>如何设计一个缓存策略，可以动态缓存热点数据呢？</h4><h4 id="说说常见的缓存更新策略？"><a href="#说说常见的缓存更新策略？" class="headerlink" title="说说常见的缓存更新策略？"></a>说说常见的缓存更新策略？</h4><h4 id="如何保证缓存和数据库数据的一致性？"><a href="#如何保证缓存和数据库数据的一致性？" class="headerlink" title="如何保证缓存和数据库数据的一致性？"></a>如何保证缓存和数据库数据的一致性？</h4><h4 id="Redis-如何实现延迟队列？"><a href="#Redis-如何实现延迟队列？" class="headerlink" title="Redis 如何实现延迟队列？"></a>Redis 如何实现延迟队列？</h4><h4 id="Redis-的大-key-如何处理？"><a href="#Redis-的大-key-如何处理？" class="headerlink" title="Redis 的大 key 如何处理？"></a>Redis 的大 key 如何处理？</h4><h4 id="Redis-管道有什么用？"><a href="#Redis-管道有什么用？" class="headerlink" title="Redis 管道有什么用？"></a>Redis 管道有什么用？</h4><h4 id="Redis-事务支持回滚吗？"><a href="#Redis-事务支持回滚吗？" class="headerlink" title="Redis 事务支持回滚吗？"></a>Redis 事务支持回滚吗？</h4><h4 id="如何用-Redis-实现分布式锁的？"><a href="#如何用-Redis-实现分布式锁的？" class="headerlink" title="如何用 Redis 实现分布式锁的？"></a>如何用 Redis 实现分布式锁的？</h4><h4 id="主从复制是怎么实现的？"><a href="#主从复制是怎么实现的？" class="headerlink" title="主从复制是怎么实现的？"></a>主从复制是怎么实现的？</h4><h4 id="为什么要有哨兵？"><a href="#为什么要有哨兵？" class="headerlink" title="为什么要有哨兵？"></a>为什么要有哨兵？</h4><hr><div align="right"><p><a href="/coder/">Return To coder page🔙</a></p></div></div>]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/programmer/knowledge/base/%E7%BC%93%E5%AD%98/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>计算机网络</title>
      <link>https://www.ninojay.top/programmer/knowledge/base/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/</link>
      <guid>https://www.ninojay.top/programmer/knowledge/base/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/</guid>
      <pubDate>Wed, 28 Aug 2024 15:34:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><ul><li><a href="https://xiaolincoding.com/interview/network.html">小林coding</a></li><li><a href="https://javabetter.cn/sidebar/sanfene/network.html">沉默王二</a></li></ul><hr><div align="right"><p><a href="/coder/">Return To coder page🔙</a></p></div></div>]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/programmer/knowledge/base/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>Java基础</title>
      <link>https://www.ninojay.top/programmer/knowledge/java/java%E5%9F%BA%E7%A1%80/</link>
      <guid>https://www.ninojay.top/programmer/knowledge/java/java%E5%9F%BA%E7%A1%80/</guid>
      <pubDate>Wed, 28 Aug 2024 15:34:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><ul><li><a href="https://xiaolincoding.com/interview/java.html">小林coding</a></li><li><a href="https://javabetter.cn/sidebar/sanfene/javase.html">沉默王二</a></li></ul><hr><div align="right"><p><a href="/coder/">Return To coder page🔙</a></p></div></div>]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/programmer/knowledge/java/java%E5%9F%BA%E7%A1%80/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>Java并发</title>
      <link>https://www.ninojay.top/programmer/knowledge/java/java%E5%B9%B6%E5%8F%91/</link>
      <guid>https://www.ninojay.top/programmer/knowledge/java/java%E5%B9%B6%E5%8F%91/</guid>
      <pubDate>Wed, 28 Aug 2024 15:34:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><ul><li><a href="https://xiaolincoding.com/interview/juc.html">小林coding</a></li><li><a href="https://javabetter.cn/sidebar/sanfene/javathread.html">沉默王二</a></li></ul><hr><div align="right"><p><a href="/coder/">Return To coder page🔙</a></p></div></div>]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/programmer/knowledge/java/java%E5%B9%B6%E5%8F%91/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>Java框架</title>
      <link>https://www.ninojay.top/programmer/knowledge/java/java%E6%A1%86%E6%9E%B6/</link>
      <guid>https://www.ninojay.top/programmer/knowledge/java/java%E6%A1%86%E6%9E%B6/</guid>
      <pubDate>Wed, 28 Aug 2024 15:34:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><ul><li><a href="https://xiaolincoding.com/interview/spring.html">小林coding</a></li><li><a href="https://javabetter.cn/sidebar/sanfene/spring.html">沉默王二</a></li></ul><hr><div align="right"><p><a href="/coder/">Return To coder page🔙</a></p></div></div>]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/programmer/knowledge/java/java%E6%A1%86%E6%9E%B6/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>Java虚拟机</title>
      <link>https://www.ninojay.top/programmer/knowledge/java/java%E8%99%9A%E6%8B%9F%E6%9C%BA/</link>
      <guid>https://www.ninojay.top/programmer/knowledge/java/java%E8%99%9A%E6%8B%9F%E6%9C%BA/</guid>
      <pubDate>Wed, 28 Aug 2024 15:34:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><ul><li><a href="https://xiaolincoding.com/interview/jvm.html">小林coding</a></li><li><a href="https://javabetter.cn/sidebar/sanfene/jvm.html">沉默王二</a></li></ul><hr><div align="right"><p><a href="/coder/">Return To coder page🔙</a></p></div></div>]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/programmer/knowledge/java/java%E8%99%9A%E6%8B%9F%E6%9C%BA/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>Java集合</title>
      <link>https://www.ninojay.top/programmer/knowledge/java/java%E9%9B%86%E5%90%88/</link>
      <guid>https://www.ninojay.top/programmer/knowledge/java/java%E9%9B%86%E5%90%88/</guid>
      <pubDate>Wed, 28 Aug 2024 15:34:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><ul><li><a href="https://xiaolincoding.com/interview/collections.html">小林coding</a></li><li><a href="https://javabetter.cn/sidebar/sanfene/collection.html">沉默王二</a></li></ul><hr><div align="right"><p><a href="/coder/">Return To coder page🔙</a></p></div></div>]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/programmer/knowledge/java/java%E9%9B%86%E5%90%88/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>北京的公司</title>
      <link>https://www.ninojay.top/programmer/company/beijing/</link>
      <guid>https://www.ninojay.top/programmer/company/beijing/</guid>
      <pubDate>Wed, 28 Aug 2024 14:15:00 GMT</pubDate>
      
      <description>有东西被加密了, 请输入密码查看.</description>
      
      
      
      <content:encoded><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="密码错误。" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.">  <script id="hbeData" type="hbeData" data-hmacdigest="242ecb8bc2ed670c5b1741a80dd9fbccb06dd3061c77bc10930bb746dcf97ba1">a7e357068c42329b8f33d37c25a789f17da67a35b47dde45e03668cf78c52877f1296ce613b69ca8273fe4c3bfe5233f311ff0992cf24b4b3905ce416e79cf1b9a92a22fded22072cb640d77ffa7d74a84181c4524825ee4835f82d8bcdd8a1a3a865ffb1ceeb3722bcc1534f81c666c2252c2142bb489cffb53c77a3ce32c78c1723bb98d42956bf921e6ea67fc70a4f1b4382435030bfa2adfeb038f6d3f2b9232450d9441620ff820c0f41c0cc815d8d303fdd27ea82fa294c8f721ff2eaa9e16a8b84a6f7bba5887cb4c42887ee704eb6cc544d993cd4f1c6a3304f40ea7cbbcbb4786edf985ff14cb391407fd02a689eadb9415e8046ee74cf38b1c6d73c4aae5758688906fda965d467abf2e4ddb751cbe12c96939bb5e1c882ae8b76b6b5bbd9e99855f02c1820621c79ca4d7ffd9fd76df8b48ec66dce438d3878bb8a719ff05dc497257e11557591adb74ab6b4ce3c051fd04ca08978557a65dd38c542ec5e8b6629ff1ef7470049df711057b9b1d08420ea8d3c13e91bbd0998f3b</script>  <div class="hbe hbe-content">    <div class="hbe hbe-input hbe-input-wave">      <input class="hbe hbe-input-field hbe-input-field-wave" type="password" id="hbePass">      <label class="hbe hbe-input-label hbe-input-label-wave" for="hbePass">        <span class="hbe hbe-input-label-content hbe-input-label-content-wave">您好, 这里需要密码.</span>      </label>      <svg class="hbe hbe-graphic hbe-graphic-wave" width="300%" height="100%" viewBox="0 0 1200 60" preserveAspectRatio="none">        <path d="M0,56.5c0,0,298.666,0,399.333,0C448.336,56.5,513.994,46,597,46c77.327,0,135,10.5,200.999,10.5c95.996,0,402.001,0,402.001,0"></path>      </svg>    </div>  </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/programmer/company/beijing/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>上海的公司</title>
      <link>https://www.ninojay.top/programmer/company/shanghai/</link>
      <guid>https://www.ninojay.top/programmer/company/shanghai/</guid>
      <pubDate>Wed, 28 Aug 2024 14:15:00 GMT</pubDate>
      
      <description>有东西被加密了, 请输入密码查看.</description>
      
      
      
      <content:encoded><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="密码错误。" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.">  <script id="hbeData" type="hbeData" data-hmacdigest="ed3e8fdcb5dcaec8f2baaf749a0c105327970abc83fcf18ed8c058f977ec7507">a7e357068c42329b8f33d37c25a789f17da67a35b47dde45e03668cf78c52877f1296ce613b69ca8273fe4c3bfe5233f311ff0992cf24b4b3905ce416e79cf1b9a92a22fded22072cb640d77ffa7d74a84181c4524825ee4835f82d8bcdd8a1a3a865ffb1ceeb3722bcc1534f81c666c2252c2142bb489cffb53c77a3ce32c78c1723bb98d42956bf921e6ea67fc70a4f1b4382435030bfa2adfeb038f6d3f2b975557ce2dab35be9270edcfb5793cc60714da6bf6c188bf1dd0b1e2ce212f5eb1e5555aba65b661799e1deab5e725660979170f78058711482b6d4f60d6ec6dc6418ef22c658691b4678d4a95f34e8232709590419ee0089122ad1bf1774a093a6c4fe91b9e06ffc650b2546c9f312e3c9c50ff052850b57692b1cee409a8ee7edf07ef3aaff92ae3d445c922d250b00ae3a2a7bc97842467dea900b7be9315f89ba7e2a25fd54e25547fdd97eb985f733723093959e62ab5e60f6dc0f3251c4790344e63bc4bdb9bace305bb6eb84d614930d826e34beeb17f9c2d49234aecb79e2d6bd7fec7082fd35cd26d84842a20da683f377a4cfd1953ac3a36b6559f85ca78eaedb6ad228b0ed74bdfb4ac490764782406a1f0c8a3694c28b2d03b52a7e999384e5858cc0f62dcdfd3adbeeb34af4d1343061d05e8a11689d600a6536ea2f6b34f161cfb20c53329ff6526b83141dfd22707c72d92b21f91d6ddc2483ad2deeea7de298c1f68c1bfc4e3c10de21372bca23e65bf6010de2b5297f612f8bf7891fab4c7e6fee3fc38cf6d34cf8d369f33059fa2dc9ab73f6ee26c30d5320e31d1a4703b47a301dd3b11a4933f605a300eb8d432d9442521b6b954c844d7a91d2966ef31accc3a2fd6c10a9fddc785156341061b6f4263a743641339dc1ee82e7670d61e4a734df044b97209afe3f7caac76859ac7cb5bb860af1b0c45a2f76f6f17af6a5d3ae407dd3d201df76f32c3da1b2e03917272e3e204f9129e8756bf7aeef6720cda76bbb647b094ed5c68814e6cecd40fe7d3148a119e04963be8e8b2274baa126348ded3a6d33303e1d20ad06157e2155edf13373a0b13a1324ecf4c1dfbca07ad02b4cc76a6c1a62c32082271fceddd5d2ba70890bfab485dd8f880d25e4e6dc0b4fd072302d2be86294eecd5a324ca5cbd0e57e6f296294182279dc99c64489fe98ac1b9dababd7117c2cb8978d633d6ded5873e9088e27905371b1ad1cb57ec3c16c207e3ee780853f9bf499bae4ad8879b91475e90e601d09d7c19b6fe91786778f9faf213f51d080f0e4b09b710db86f995e5afa41f4cc9fe84d2344741dffd1c7f70a3caf7f19957885890c74853c19b08511193e54db6270a691351f58775a56db634aeb7a5140a6e4858f685dd63e485dca96c122146c204d454b2b5e286455b8f980a8016193f925d541dbfe7a3a7c980b6246c9cbc838ad9c9e8623d57c04e14ad2548a42c4159cb74495b0a77f13d599d886d6d1f1a6039067d084251e1705c0701a0391e36a62029297bcb1f442653ac24da54fd3bec4174e03501ff5ecf3fc59ce32ae8e12c95823d69835fb083f6035fa1167f4334e8f819f9fb8f7d85117126fece93ffc349b83968e31754ee24e13d73b593bb15d1aab0caed80be9b377391223f7676b70fee9b0346c6dc9d3f1ce41bc9b1c055ea5ae43494705b8529e5209c3004ab35bcc45518b8cc757d962eb005951bbde52b2965390084119591f5af2b812f087ac88660d448f057ca149edd86f02d4b3b24eea5280643a1d1f41397c2256ec27b44b2b507ec9107211c0b099ec8e7f968f549b640e19d00d3371003b56853a5808f7ef09f53307808cb50cb56d59f4b569c50ed0bb6c8e42629af31f1ec455d1e141255cc685dc30197f4e8cd669adaaa9e29e001abf39f328931093a0d6cdeb892835ac780b09c887e34f2483cffeadf3996a43f3e51b08f3f480dd7383ff1a65522c66e3f92c8e3323cd31e93dadd453b791cbf5cd45fec742a13eb67e9b8e92a159f3a5ce492b887e9d9c9f46b9c501014f2a03a8c3efbbcc9d7fb3025ff244002fdf679ee3b92cc87a616bd3af90a136700696e4090610329dfb8f93f7311d550024e27f4fd74c16a6566213d4dd0b7946149fc26690a5e5ba1a0d1fd9abe72b51f48c5e5a095e2c222c8228c9b0df5f535571ec6809e84fe373f1a2e7466bedb114afb06c884cfda5866a4e9d35f8b9d0fbf2310ff4144dbee03fea22e0f6ace5ca1ce4537235db402602f3f6fb13031f82f1df05caca4df113dc2b4d0c9ad1da881d2514735e9cc69c722ec43d4dc9573a584b96e5d5adac66880c5c062734e49014ffe11096407a9373560528337c0fe3f9f025eaf28eadd1b053bac551d4b2636700470f3e9a23386e5dacf1feb9257799e59f3061e3aa5eb4cec5c40b6a29ef95e226239ca1b3f84e635fe08b4685b748db9a21dd24c51b84cd83a9f5ef2d1b661a8411c2cffa2b6ba5593f6baf1575cbfff28fa36d5023ee8f505a527c3be1746182fd64e9d8b2bbc554aab56ecee325f35c77e9dd5dbbe02dc74821d43b6364757f94a38cbce0625200a4f52bb705f44697ca546b014b532edf7cfcb3156c0927cc7346d9277b786bac7b941349024f4757009c2ddaeabc7c963876eca31a0696a35930dec6d5efca28228e8c302bafe7b3562ff67d730f6f535d68eb00b66bdaaed3839f9495207fa0554c64587afbd699b88dccca4a460400c6d2d4d22aabdb323a14ac099028fe2889ae0e6fc5295ff516599619a5f3cea989ec21b6283c940b51432413f8e0a3032538c052b7d757132088e732691629973bcc4b866a50b12d9dde9280d2225119e95566f92873a190db44696513e242f579c1399a66db97dcffb9716c1b18fef6b36847971af3cc61c79b77b43a0d862ffe241c96831747a8058d4274b4effff1fff23b9499fb2ccbd74a0d387f4efd56177d16a6c2616889375e42c3cf75ad344528b9333ffb2083cca1f228ec06b71b02628b5660447b30098055da66b5445b9309dad66894075171f2647fe03a309324991306f0a01aa174e86c0ebe721a0e0f6af7a2e90bd0efd127f3809a8ddd8268df65ae87265134029e053e798658474ef5f5afaee7944a65dcc717bb50faf3e22f5e5787ae966f1efb9adfe8d3ebf9c3628f75b357f0740141e3b4563cec0886688aa05db537164abc0d3912cc1d0c0d9387bd550a53ca3cfdfa69d3aba32a285edf13476ade57319311d108fbbc104f3ab25df2d31cae83bc46bf541e33c17265d6799119f878775da57533c4f53179da78e00c53c42281b8e977ea38ce7a6b0c442639d2de74ab6ca52994f8fb6a3dc5096bfd19ef681e7ff66da80b48d7159e6ce2ad0c644fdaaa0f184ff8442e2781c755ff5077c387c56cb16bfff6d5f10d7334fd72b9f3c33b754fecd0cbe920267e3cb2f8fb399f1c2329d8913307d80b4ba8587205bc0b6d3eba057f38b5af3994b0c078ef25a276bd889f3eedd6a24ade445ea378dc6599d7ac8099bbd677ecd647fd3c7858de8556152c0d920318944951348cd2bcafadcdb0945f8a235330e9098dffb7e1aeed79fb3a85c9ef4398e73408663ddadb8cbcd5e0ed1b12d6f238f49dffe406c02040e0a9b7ed0e65d03b7ea4472a81cbaa8a7f66372ee9bc4cc7ac0ad1384faf5819b56820a14d083b8c81d470c28fa66efd473480be85dabd7a4e6f22af970f42f6aa565c30d674aeb5671f13ac7051fd0762fa326379a71eeb31213d7fca743cc005f076387287d838eceb69e4265b9bc614a3b2e4c232504b224a4a43dc44932826effcc92495e751c635e6c0a572133983384a8f7aac8cfbcbe039692cd4bec1f050d028f195995e257eddf98fd75fc60e8891bba0074497af8efb0114957ff2f8f0b85fe82b1d14276071836a4f4eae21469724d0a038e8b3ee2af345f9b863f892f5f10fe8566f84eaa9fac833b538348b72428e804b4683c35171e665eba362f42fa9b56636e103b8b9deeb0423eb9e7af4cbfb8fecf0132f766e9ef692fe9be0cc81106369e14999d4fa0730902ea64aba7d609c666900c3ddda7fe1cf7ec753ec843feee56fed2d510989a4104c85ce02f38b60aa6355209cf765af66362ab445a4b920ad3662f2c68df939135598ff596a02eb9f713f46b1554e16ea557f03daf48672354496090554961d9ff9ec66908e1c7d55060276c723a0dabcfeb862b5426d643f11f7e95666f5d094952bc0e1bdaba25796261356b47042c05cbf4df45f95fa3031402b36513e7ef6b6185db073923af363f738998ad7a892a8a03ef05b9dae7e0fbd95c323490117f826cb6cf448f5bfcd1ac496b8e16186eec68265a899516bcfe5a85e6c81e3aa8b5bdf71b442accf866bdc838f31afbcbaa63eaad99035235e1e0c811d033daa77809452d26308ff6f5d72ca5018eeda0287245f1413d28357cf962febbc90d0a8379c61ab9027bcf9004118bf32a58552ca0a1beb46fe21400a63f057e6622517b36cd975835c63218e1221c99598d8818b5cf78579a6927c01bc3d1c819c0b1db7ac70b1cbe5a1beab2ffabc1139e77ebb993a17595b07b6b2be45b0b57416f1fa3dd9885db0b09887091700b9f2c9bde94b4ca94a26d3b5a801d3538d4fffa9646fe83fb5de25d10abc6abb2beac9959b5743aa336a80a6d8e0ae97494373887ac4a0ea4b05b772b889002441efac533759a6d70b9d267cb9e0fca72b0df4c93e46096d46fd04532584a58ece3f796a50ce5d94923f3b3656cae6010e8672f7d5b6a87e2ce26c77a00ebce188cbeaf183828f8529bedb28f6cc07b65ae5d65270b9125c69626522d228846b051fa3bbd1850f4ef220bb8ac0ade46eb110d2519990dd4af5740ac635f0f767936514bbea98342ef2b6e3d9da02345991c0213073a29aa80526c9525b8ed122653ce3c793f32d34c5f03857903c2c1d17003e76f95df27213ee42aadae1a7bc86b1bf00821470bc6044f148e44fd64043e18f44613bd4002c27dfb76c6e03d5cd140ca9b1bb3ec61de9eaf8fddb00408fa7638581d44843999c7636e45609f40bb28e04cc53c1bb22be27958be228d23c2b937b241e14eac5da72df2f5bae864011da327f99021233a8b4c0a4f9141c0b6bfe59c14eb376df81203c17907a2c3e1248e1def7c962abffddbb0a428a9644b13dce5b947d5cdf391e808a701e8a43aa57e3540949f578b61be5d463197f810e3adac786cebae9385906e79b638fc9dbca9fbfb6e3750f7ee1dfc4dc96217b528f28802afddd70866d4c8aa5793e36fdfb96c2d05130c42fbe9feb8388440c40735d4d989bd5690369f7922258d190b04287cecc1042d63ca28a122d1a83f1979e2627501ff6162b59dd07da089db874515c21eeb0efcf688f8f397414af371e9b1fe7c8790211a8a4294541989af108edb2036f51fcddcd1ac4dbd58913b1cd11f5740786ade611ad76d2c73a372a4e87603584377183afc37c66834686f4fbe11e6ebd167610d3cebc1aa37b4bfd6c944f5ee96d03c5e0a0816035341e37db22f84b9f54753a93e8bc1a55019674f4c16eb008fa634713713102d3da9e6223bcf0eb62b2523da4c47b072daaed86a20fef48cbda7239f842ec93a746b8172be6f875559d7ad10b965de72da5c8f88cb9b27d44bae268a011dc3c2a3752d145b0b9eff210e9002c192ea69d4601d214de53a9fd6223c2daff19a3c94892352d4d2c480698aeb6cf2db65966de9ca4b59fac2dea156c2edec3557c4e994174529a5a8aea1f50243d1fc00eea93de5c345d5e7db68fae9c764dea9628de22895672c72a01de1e2fe0b1439d9c6b93aa7221895860fe05575e820622ef2c33a4639d47c0695d667b39614e1cad2d028c653b0388a4b9795f8c4ce50d79084e3f708eea83d38b3f7ccf4a11b20f206e59cfbadc417163d2c8afe53ea412e20be15c472f9befdad402a72540164a8a0d041cc4c6d261ad51453d8473cef48b56adbc3b540e1ef210795091959e94592515da6693224e0c1a27f4a0d5f27a790ff45afb8da7591735a5eab2b3b4c78edfb6034645b9c62177e9eb7f4a6a720f9105179fc741f7400af9aa40eabcf3daced8b061c846e2d9748826eb7e60d619a3269b779977334216c73be968b8529d2f77625716c8d6bd236a8e4b34dedddbc1bcd4a760e5db3d04c8a5eef84b54338ccebabdeaa5d9a52e00de3ffa57415b8f14e9d5f64408ccd11bbc70466eecf4d3d4209e37d53df12005756618f3864af10b62fa512f12cbeb3249c4c14f110ceed0575058ea3e311c97fb83c6a7638159d91a81c08ef2804087ad6ca1dcf7d560a92c4a9252e753ac7d84da6335a2fdea4ad32b794a074ef472801162c98072f91b347f134be17e808a1ffe2d0a6fe57d5180c8ef355e1da087feb318af38bf8e3fffaf2214e024777cd8b787840326d73467fb5efe7c48135bd7d85847a086a6b305c1b3b5fe96d2c156ede5d450bc733c73af89cfe174e7d4bd2fd775bb8e28b43fce0b7712f8892f4f9d9a3a7773a1c0b7539d168a5195fcd1175767516dc3a2f6a933eb7cbaa0f32c6b377b0504ffe46f6b20602e858efb811b61c86f3aef6127bf83289f12742a04247ce6a6eeda49b2361ad34644ac125018f952f552f543ab1759e5824582751276b8e87aac3c82367d6f8841b6976cda4113c9ff30da22cacea8245ea097e586933fe2b6595de3e817c5da08eed9aae31a539911319daf2b775b6994fe8fbf083e4368eca2888c03ca1ddc9a231d66233c15e909a8acb1dbd1f3af0110e441349ab2515d76c8939946dda0fd66863a86eb84ac0cb1946c86c5a674536a4707f7792e8ccd210138683dbac4776839fe3ce1743dd9a3ea28db8a5376680940f685123a89109d1fdf4b01dade352944ad5103e1c998f605624a8f12198345e1a2a6986c5791ec9c9d65a3e66ae49d81618e650dc446f59228a03b68cc2200aaa4877c4df87941a5b68d186bcb54391f3537ab0f40998640946a07a40461f5278cb82ad3f55ef2892cbc0656bb7f3531f6fd3fdff06cfefbee4f653d220b441eeac41a49396fa18ef15749e11b5dc838da32ae7343dd287d202eb5bb9ae87968fe49801ad39e0964f40aa888a62c56094c9d7f05b7ee7e1d112bbca6c45a706726ff3d99595fab4f6cd1a3bab2750d8f52237ac8cd8d3985ac941eabbaf73af2e248537e1da435633a45dba7adf700acebff6d458c40a44f767366c29c4540943d3778f044b076fc7afcd1f066a899cce2fdd47566ddef50280aa3e65aae0811ebc5111b7c5d234a41d551af60231d5bd49462138c358958728322b94463235414f4e6325041c859e14fee4597c43a53255993f9de9c973781f34039f6601c35a388c2e1f244c4e41baba855688a9d9fbcfa272970ae64862d7f11cdde1f208b2de8cfb402f04b8981f3c164f390268d5c72719c6c0eb2e3d7da2230a964e517cfb027ec0441c0cf3ebfee70d5fdee11c2656e79f8e978ac6088a7c4d96fbf3c1a5089cdcfb19a3b60a284bc11fd7c0db3f2777d2aded39a61a9624355d3ada47e45217cc52c97b033ba0284f37b041c80da620f69203b08edf6ba3ac21048e4d2a5f7b338612fafa083d63e8c111c5ff0e479dca809d91523141a2c7ea16cca11d747880893aba53203416de04e9bfb8b3698f9263e5cd10571a65584b7336e0589a618d6433269c89541c887a994a024119e68b30eb2a72d9d74d47d4ba65995dbb13909264fe1d8e7d64f1146c9811c75f66bab4ef507ec7e348a9f8361186afb45e06b1b1e6ed21444d61e6b94d143b7ad1c0093d3c9cbe27041e90b596ed603184147cc76e11f40dac4427e83d96043c3d53e701a2629b78d490225ea0283a8eb5f0d303aa3870c506f4988f661a5febbae3729965b0b694b078bcadb7738f69bd8d6ac748dcdc67e1286f1f5ac97ee44c187cb84ebe7e087de223ea49a66269e77881277ea05a529f5fbe31096014679d55f6d3a1ac76a60a1d494fc6b43e65e72d3ea4080733503b5b5944fe8c2fee937aed9a0a6f58ab69c11e81b3ad617a8e7092d8e44102cdd411585b3ade79c3a9c2ece885adb44edaa1158a077eedf5e3a366dbc11dfe6bc3d71d745029651d632d4fe5a02cceddc212cd761019d07a989a833e46237025ef77ddd25b66a45670d19b112c3440f37060a80a4348ecec37ca85a5c070d0c568b12dc80b94bce1d4e34d0ac2ccce079b6612fccbbe9a8ee3a80ccadcd937d02c286925dfb35ebfeffb25e84fc6abad009af9371593f5b20fc2a10baa45e8fa9c16026665b7d39219af5840264c4a940c44e6c2e01df860686018a9a3bf750c5b9adbfc73f5b4eee249bd8e0f25e53333e444ebe61f3b43d502b71b524e740c46157ee9b5fda07bc1894ae078c07eafbe7dba3a815507ec99e6c01a6615bf29fb73a02d34785d2edaf9d7f55a3c817f32e0302e489b41b387c9f6d9c33a4c6cfe6e4bafd70fb56160a9eecbeb864ed8f878cb441c24eff6c6a0b6c6eb2ae09a4664674affa3286fe477d547ae2db5ee525a7f5c067e762a6e46ef9dc2f30e3198ec846b9503b62a6ae8ed50fa6368facb5e700afa5895620941f1c6c035da3cac48afb0bbdc074f83ae17bae11bb688ff71c50911011051e86ead258bd66f4093b3ffc0e3acd131deb8c84ed3a23455112dae30b16b313520baaa465ceb98a20c9a724930d64964f9857cf0223bb5de8d78ff947b8c23e1bcdf0a45643247f9a3e40a77dd54a561df7fbeef465bf6429e59af9590a012882bf68496c76fa4227daf1a9c58dc75f9ad44c7a09dcbe5db23bde0dc98962595a7328a6850062a9bdeb470c19a06e12f103f1908ea25354bd0697a1cd59c66e0c462860c800c194f2fd96a908a34c0e111e95962260a12121b9d872a89902777ec17a43fdcbc91a5459f5015b05665be3f7f08a02107311953398b9c873d162ee63ea4f880a0567c83a2d98d1ee4a7a48214c12e5c8c27f93416e94e30865bb18ac22ae5b7585f74114a7515d34ebf52647774e020c5fca5c5fc060a54294a824596c2bae5f29bb2b1806ce235f3e61129ff85a5743711a7e59b24f9ecfe3fece68124d85950caa613a8ebe08cb0c1d46f41cd4c7189067b358ff61243934ffbf7ad1c96a13cb936575ebcb169773b2492d8785f2c44c0e711a42beb0169181526513dff6242c6b4422099ff3623c6262c96e2d4352c33b362ee348f021dc77eede8e7f9ff8686fe61155dc44fa780c691b78630162343cad62bd86439f691c8a9bafe982ff6d95ff15bac1a24d0958385d3e77c284cf79e25ec48c097f5c09265f9088e657974f9c3b1b247490d2e99d39dfc53446f576a67f63d869136ca5d25c45c301bbec04f3c86921543a26b1a3d3dce5828f4e473f4e423635a688ea06fe132c7361ab43a7d369f2dac5857d1799c47bb3fe233b862830799c6c103d094bec5015162cf8a31794645c610d7fdd9f8b7a345f5669dc2987e6e7c874758b9d8a60bfd0bbeeaf6f56f7710d46c84144cec1942c7aa67a3933ede8d3e3fac37d39259774c50545eb87e77012a8375647ce181245acb85f2b6c55b22034b608982f0782c1262ae2fbd0fb0a77f8ca9e4068aab49136a5ee5707af730127eb3a2bd1e5e19c2e5e60640a77c7bde51dfef6eaeef18eddb87acc39b2d6a3a9b01f74c3b685d8f8ba958ce83cdc1f60781ed6cbc34ba3443199cf274a691679fe6f8e3f7176a68e883e5a6f3603e9c189089c58ebdbc48c7848070e1028017e84c2628eeb02ca7d1bf9b21f9996ba94bf35089f6fd510de299340b930dca1298e2076d5d8ab683eb4c3eacd0f5da23aafe77c63d9b922310c70e114bf91eb50f5bf16ec4bff636f8b295c39cb94da1ab0797a34a30d8765f9c1b92fc58259498aab7c98c49c7f196aadb3e01f0e13dbd42df6c25700888ec648c40f107758c6509e9aa8e0c22866bc5ad18164b35100c0e805d74d85d1697ef0db50b7495c226270ad9d6ce6916cebad0aafb410f132886f3cd5ef8a42afbb621c874d7779023a59127302f5bc2eea3fac97e39fd7f0357be6e31948d639247b4f769998682c4f1df0bb2e6e8c4a2a60f1010da1d83764949f85be17a5e3ef68a0775507e89fe5dba3a35f98fb68a091acf085f6979ac444d0cecf6d45f952a728982e9fe0810f8c2e4005cdc2a219e602d39b49ee952c0be35868036e151fe726563b685fb3f9a2d9e09969f8ae9c077cd118951b5371b89c145b398b1b07459670992ee4a20bc8bf3dd85d5d3bea0b1bbdb7366cb09c304812920c6f6de840aded8f43bbc0d37f1729f2d0869b2bedd9a2734decfe0c175ce3f30aedd15bc49c1e760434a40b805680c29b02d70e7f5b9491c66fa7dbdfba8e973f27fcd0cb397b79ed4c732b67c3c5e618616fa53733fc54ff30d4d66e4e39175f796cbf4c454b521d8e5cf55a56b6a8a7f42000e376d3f05658909d4dff03fb87cf6440e09cd31012d99ce11a7e31b5022415595b8a0f4a30bfb819d38e3b8dd56959568d1c64ca3ce5ae3c83a52b05f951c314dbfbda89cb2bab804a19a074a0cf4d6605bd42e0421d7d3fe2ceb1fa3d4375b504c3034578e36ffbff8873ec9fe01c23b3e1498f48d3bd5c592b0b64f28eea96f8a7678b150b1105e255a6b00fb6e7e46591da9a4937480928db33cfd884619c85c97ece969f9fe87aec6d15105db99f0acebaf4f967c519d7e18a65cb080ade3d62d7360f1432ccbb6e27a70712d1455120eaf21c497743b41386280c43f8b6990ac93350ebdc1f11e9e84381bacfb35388dad4e030665d93108d5119f346eca0e982008cdc7c2ec90b36e3515e8efa9d180aa93ec46e9d39c0f5951f2163d48d80f15cbfb352eaedbee2665eca9714e9e9c138ba09d79f3f1c44c8dc5faaf337c38d130e67695e58315d06e47867c3f1b2cdae37304a51658bfce2a24db46a4b307ad9938f49ccc2b3c20897111904868d81225bb19ad51842c3cc3a6a25a2a298cb425cd453478723d0b69f67d4fcdd32653e05e2b4f6b58a87573f9c1d4857df286b7dd2fe9652fa165f3dafb8ab8e332208ab3f5305e1dd0a4ea765c3013662457f15fe3a104c1648f50e588aee896fee1cdc6cae2b2357a91bca7f98d065fcaa5eb621c5e281b9e83952fb716b009052c7babc613e05de9fedc198c0f50b2a874e00e754d6a0968e761447b479536c2d3ecc94ed0d6f6b5545cb9ef83f0bfd18ecd23aa158cbeac0afe448affdeed999b262da5f863868caf9d7259fc9626467ad21ff65d7e7e041215cb7f7ae1890902b6a5afaa277786e4ae47bf489549e4cc78372144c65d59ad170da859a91979ac55a93b4cc7d1b7624143d74bac0c3f2cb695b841afabe019708545859df4c7793dbcf969a7cf49ee4e4cfd2eae5428cc761fce85cc4ec5555c1b2f7aefc0416876e6b00214fd21aca42651b435d73b14a49fa96f48754cce514a8d560e754f596e200cdff087ab84f6f2a944ee01b90720f945cb7c5f03d0d268ec719ff0e62b6cb1f31a51725e8756c02eef929acd50c19cc4da3003c454fe7c7458851d70b5128ec288c7acafb6a60fffec28cf85b8ff1cdc737b3cb3c4416bc3d53b3c601f566298921a7a63b1cc4ef08d3d81caece39d69896860c572df9d3b08001629460c9484bdeb25b332cac118bce857260d3e61d435defeba2b9aed5ba7f7441c42e853e2269fed32fff547e1652a72505d22740f1e6a2706129a02e77340389937d11a6842bd1e249699563a4bb4d2dff1b073272548a68778c924f926590f32db716affb29aac621233ff5edd9149f2aa0daf3d63fd01630545c330701464ba2180bcfa3584f197da961990fea162acbc6218f3a618a4a8a85e9da40ad11dc66d89cd97a2a3c3444c3a0d2a4c19f99fa2227f5a19101f1c65b46f99151b5ed9485676c8a9bd21bd7631928818059eb9a603714a1c71291d66272a762f217274c0f40b092968b995fbf559c27f8cff0b6540c471152106e51badb7b10c3822e31c5ece4fc341ffa3033a884a17cf474ecbf6b5cb8d508ad95fb8f9cee7405f9e1727737815381d29577054def2dc8e2b05ecce895e409156a8b84d4f50ea875f6b5f8e389168afdc9b78d77dc7b786ff4282ab00b77c4dff0b660bc26126c00496f081494511a2c528f474858f0c43a451207356e02b6a7a8582bff349a662740160953a8ca334c42971c8291c05837ac5896cd288569aa4d7f70943a5ca0395060c64f3f65e58bdaac71c083b1d186aa0d18c1c7cdd18465c1f2faa3b761d34dbdd5a45ec0a4f156dc5ec8f899ac65b5afd0077c2727749c0aa78f16db647c99f12f18ef455193997c90c8a6c98c348dfdfcc7055c489db9352fa7210d28eaa819389fe7a5ca09d963dd8abb8fe5d4771fbbdaaf81f9450dd333c7244f7878a07086cabec9aee89bf87a5af2a0d67ed1729e68c8b848fe876604196b68d28b55c0f208820038a0601cb2e95afb964fa9aacf5be1034736cf4c2d771cb225811e972f1e5e5d0c2d4a987d92688fee8d63709ddc3e3b2db2338bbb392597da1b617f07c22a83585c21ffbf56954b79f612ece216350af07c308f645d3709046689c11207d69f900eecbefb7cbb07848f26cfa4141294b8cd75b622998e7b9a6c272079304123d36a7312bfbaa7306a0bc414ac00ba4fabc6728608fb3c8a2d2d5f802ec7c35361a161586fde33123b6825378d6f61c727301e8fee1d033b8c8dcf9ee4b014236a3ecaa023ee8c0a4503f55289294a8f83f3dbfb49f09472fce54c60787a3ed76292ae2443b15b52830023150069bb13fc509957ae78ca666dc0fca3c8a0f8a9aed19b951543dbf2176fe4f9064f10048da8785ef2b17af0e8c95919ce98293ae7795ce6198cf7c704dc5d156e2bcf78f6d1ad992f124959248b6bb3bc355742e375eb59a49246b8376ea676ca729fe20f02718f8dd01542b5e36922ad5c146353b47b09ba9709e29f39de730d563e2777da2cf82a681b73c222f2e1598a014b9df6b10973546965276d60620572580f6c981941dfab010747718303d2cb5ba8efe9dcf4d5e14f274c3dc440cd5b3e3e6a37c916e32ded782d9c0ac5f9395332f4ae7780dd05999a073ee58c0aedb414c6aae53b2d2c81b5fe56034d868f5a2c6004b83ac7794224b207d527f4d95a2ba7c0c8aca8f19f870a8249f983bb0383589a9b5e3cb57a8255cd3ac055c9ce364caf843b0ea34c33494e8cb5f71c950bfd7688ca3ea014266e4077e046f53e5ff1f8b7dd26a172908a041001595998ae2df6abf362717d54aa4a1afc9b3a194244e65868619a4a06f595c3ae16a3ba34ce2745955bdf2036b33e9abf62750c96234b630319a6d0b20670ccad7aec28f47f9786c2ed00e564c3f3ee661014ee5fe136cb7b8f40768a6463f1bf802043a4991338cd9a43005cfc2da5a02cd4944ea7b0ec598239121e8feaa9586b92b226a221e3ccd42bbfa24b2b4cf055681f515b83ba899492c3f6f284f1b9fd2f58725a95ac50477934723b62e529ba8dff9dbdf6b1969efb201ec2a2e43bc3374bd6712574c8e4957ed771976e751849dbecb3dc3555d57ee0a86a841a48824f11aeb2c85bd0405eafb3773282db3d665194b5ac3f0ab4662f19205b0f9fe57dd415dfe0c32506b78010bf200dccf4b9ca87696afc4ed502f2110e90e084309fd25243d8392dcfce6648eca59b9594a6bfd8206038e1394dee5d8bfbf67bc0cab5b6c9c6552495a63f47580bfb24715767f27e96c4debe13969b499909d80fd09c0e1d5a7459cb458fb0245790748ddd7e8c7596ded662a316386ad00a83de85f5d6aa68402e4fef70b5c6b8abdbe41f1968abf33feab3fe5efadb4f0d17d6ad1a3c9d8585dd35140f4a88d74166b4e2cf7492c59d37d18b4f62a24d637e4a75979fa344e3d3029cc107fed2040438f55a6a742a117c58fb8b8d11b2722c8f7faa3165ebb5b27a263444a7332e3b473fcf219273e616c0eb6344b69e1fd30831f2c5e99fcace0f1e83324ffda091f2dd1a4a62321950edaa8ca4640fa1a75e2762fe8de7e7ad8c0a370ce2c371888debc9a238e4d974a2a697d588b0e2888a0362b07eddacf49c1f8672cb0fe692252ff7075b99685bab784e4851f9bd04548a7e1e7148eb8c344616cf654b16af51caaf78fa8aa5aae703a99d2687e85c9b3825d69de464d93a726ffc0508ef8b8c473b9d18f7afc1d5e18896012e2b14b3526e439779be36cf20c6b8b1edbd235642d62f538dcb75944e23aa9940f6285ffa84a9fc5f10a52a4205bbfd4be1517590abfb0daa2555a47ff5944363176aa11531b64a2f69419edc64ae68bf80b63f0000c505ded02be70029869ec490505b8eab4b19533a282044943b6743d5d5724286e34ecbd14d4d3694f314a6cf4bcae72a6b02ec6f72d5e26051478bfb5ed31b765f74d49cbcab32602b9a85922697d432b18e7b38bc437348aff3ebb68015c8969a582241365e7977be4bad4ee65f4ffc102c4a15d8d4e3c41af05694ce5d0a46221a3493378bc4d4d5a67286f60dda20724097ccb87f6193c110ef5b9852e4912693efc33b103607f57ca32a2e13dff21e4e3173a81b9040266629d226e0ad3eb5d5d8f835dabd4942cf5da0e1180142eb5430aa07e88a4bbe2b7dadffb505d5a8ef969194d79004de06e6583150beaa441cddc73ed69f9b2603cc653589bb1ff7230331b3ff9efbd25911bf5fecdd6db917595eda34f33c6b4ae960dea1ec70abe13660c50534a00baf062130def431fdfba43796c13e9b35d3c7d35dab07d92c8f944b27d40cf396a39714bcbf7f7d4040c136c8cfeaa2f367a59d6704b5c0978b7be83e8e2f27b2f75b69240416d6152271694f4d4172d8dc95358b0d0109945bccb3131417388327a87fc0b7c79cc594b48a6fcb93742026a0dee18003af9f96ac1ebe589da7763ea90ef7ac6c18d807adc5c4054cdd7ef43c3cf7d57ea5a79c41997729b7490949da0634fb64b02a70cdbfd093801bde3b412e9bb910dd0b5e5b2261f5ae5af557a60d9418c54a4260b6645a29ab821e52a08a95eed77c5109271d238bbe2e1700bb999b2287b5794bb339a523e60059be48f06da65b057a6011c457dad88035cc97e9143</script>  <div class="hbe hbe-content">    <div class="hbe hbe-input hbe-input-wave">      <input class="hbe hbe-input-field hbe-input-field-wave" type="password" id="hbePass">      <label class="hbe hbe-input-label hbe-input-label-wave" for="hbePass">        <span class="hbe hbe-input-label-content hbe-input-label-content-wave">您好, 这里需要密码.</span>      </label>      <svg class="hbe hbe-graphic hbe-graphic-wave" width="300%" height="100%" viewBox="0 0 1200 60" preserveAspectRatio="none">        <path d="M0,56.5c0,0,298.666,0,399.333,0C448.336,56.5,513.994,46,597,46c77.327,0,135,10.5,200.999,10.5c95.996,0,402.001,0,402.001,0"></path>      </svg>    </div>  </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/programmer/company/shanghai/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>利于java选手系统刷的Leetcode-Hot-100题解</title>
      <link>https://www.ninojay.top/programmer/knowledge/algorithm/leetcode-hot-100/</link>
      <guid>https://www.ninojay.top/programmer/knowledge/algorithm/leetcode-hot-100/</guid>
      <pubDate>Thu, 08 Aug 2024 16:00:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>[TOC]</p><ul><li><strong>题目来源</strong>：<a href="https://leetcode.cn/studyplan/top-100-liked/">LeetCode 热题 100 - 学习计划 - 力扣（LeetCode）全球极客挚爱的技术成长平台</a>  </li><li><strong>代码来源</strong>：刷了多遍所有题目后，参考各种题解，由本人根据自己的java编码习惯,系统化不断优化编码风格而来，整体编码风格成一个体系：比方说变量命名尽量见名知意，每道题的代码结构有相似性、注释丰富、链表题目几乎都会首先新建一个头节点、回溯模版、滑动窗口模版、dfs上下左右的技巧、二分法的技巧…</li><li><strong>好处</strong>：利于java选手系统刷题，因为所有的代码思维是在一个空间内的，你一看就知道是一个人写的，零散地看每个题目不同人写的题解，风格往往差异很多，新手理解起来会走弯路。</li></ul><h3 id="链表"><a href="#链表" class="headerlink" title="链表"></a>链表</h3><h4 id="160-相交链表"><a href="#160-相交链表" class="headerlink" title="160. 相交链表"></a><a href="https://leetcode.cn/problems/intersection-of-two-linked-lists/">160. 相交链表</a></h4><p>给你两个单链表的头节点 <code>headA</code> 和 <code>headB</code> ，请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点，返回 <code>null</code> 。</p><p>图示两个链表在节点 <code>c1</code> 开始相交<strong>：</strong></p><p><a href="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2018/12/14/160_statement.png"></a><a href="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2018/12/14/160_statement.png" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2018/12/14/160_statement.png" alt="img"></a></p><p>题目数据 <strong>保证</strong> 整个链式结构中不存在环。</p><p><strong>注意</strong>，函数返回结果后，链表必须 <strong>保持其原始结构</strong> 。</p><p><strong>自定义评测：</strong></p><p><strong>评测系统</strong> 的输入如下（你设计的程序 <strong>不适用</strong> 此输入）：</p><ul><li><code>intersectVal</code> - 相交的起始节点的值。如果不存在相交节点，这一值为 <code>0</code></li><li><code>listA</code> - 第一个链表</li><li><code>listB</code> - 第二个链表</li><li><code>skipA</code> - 在 <code>listA</code> 中（从头节点开始）跳到交叉节点的节点数</li><li><code>skipB</code> - 在 <code>listB</code> 中（从头节点开始）跳到交叉节点的节点数</li></ul><p>评测系统将根据这些输入创建链式数据结构，并将两个头节点 <code>headA</code> 和 <code>headB</code> 传递给你的程序。如果程序能够正确返回相交节点，那么你的解决方案将被 <strong>视作正确答案</strong> 。</p><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode.com/uploads/2018/12/13/160_example_1.png"></a><a href="https://assets.leetcode.com/uploads/2021/03/05/160_example_1_1.png" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2021/03/05/160_example_1_1.png" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">输入：intersectVal = 8, listA = [4,1,8,4,5], listB = [5,6,1,8,4,5], skipA = 2, skipB = 3</span><br><span class="line">输出：Intersected at '8'</span><br><span class="line">解释：相交节点的值为 8 （注意，如果两个链表相交则不能为 0）。</span><br><span class="line">从各自的表头开始算起，链表 A 为 [4,1,8,4,5]，链表 B 为 [5,6,1,8,4,5]。</span><br><span class="line">在 A 中，相交节点前有 2 个节点；在 B 中，相交节点前有 3 个节点。</span><br><span class="line">— 请注意相交节点的值不为 1，因为在链表 A 和链表 B 之中值为 1 的节点 (A 中第二个节点和 B 中第三个节点) 是不同的节点。换句话说，它们在内存中指向两个不同的位置，而链表 A 和链表 B 中值为 8 的节点 (A 中第三个节点，B 中第四个节点) 在内存中指向相同的位置。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><p><a href="https://assets.leetcode.com/uploads/2018/12/13/160_example_2.png"></a><a href="https://assets.leetcode.com/uploads/2021/03/05/160_example_2.png" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2021/03/05/160_example_2.png" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">输入：intersectVal = 2, listA = [1,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1</span><br><span class="line">输出：Intersected at '2'</span><br><span class="line">解释：相交节点的值为 2 （注意，如果两个链表相交则不能为 0）。</span><br><span class="line">从各自的表头开始算起，链表 A 为 [1,9,1,2,4]，链表 B 为 [3,2,4]。</span><br><span class="line">在 A 中，相交节点前有 3 个节点；在 B 中，相交节点前有 1 个节点。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><p><a href="https://assets.leetcode.com/uploads/2018/12/13/160_example_3.png"></a><a href="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2018/12/14/160_example_3.png" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2018/12/14/160_example_3.png" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">输入：intersectVal = 0, listA = [2,6,4], listB = [1,5], skipA = 3, skipB = 2</span><br><span class="line">输出：null</span><br><span class="line">解释：从各自的表头开始算起，链表 A 为 [2,6,4]，链表 B 为 [1,5]。</span><br><span class="line">由于这两个链表不相交，所以 intersectVal 必须为 0，而 skipA 和 skipB 可以是任意值。</span><br><span class="line">这两个链表不相交，因此返回 null 。</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>listA</code> 中节点数目为 <code>m</code></li><li><code>listB</code> 中节点数目为 <code>n</code></li><li><code>1 &lt;= m, n &lt;= 3 * 104</code></li><li><code>1 &lt;= Node.val &lt;= 105</code></li><li><code>0 &lt;= skipA &lt;= m</code></li><li><code>0 &lt;= skipB &lt;= n</code></li><li>如果 <code>listA</code> 和 <code>listB</code> 没有交点，<code>intersectVal</code> 为 <code>0</code></li><li>如果 <code>listA</code> 和 <code>listB</code> 有交点，<code>intersectVal == listA[skipA] == listB[skipB]</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for singly-linked list.</span></span><br><span class="line"><span class="comment"> * public class ListNode {</span></span><br><span class="line"><span class="comment"> *     int val;</span></span><br><span class="line"><span class="comment"> *     ListNode next;</span></span><br><span class="line"><span class="comment"> *     ListNode(int x) {</span></span><br><span class="line"><span class="comment"> *         val = x;</span></span><br><span class="line"><span class="comment"> *         next = null;</span></span><br><span class="line"><span class="comment"> *     }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> ListNode <span class="title function_">getIntersectionNode</span><span class="params">(ListNode headA, ListNode headB)</span> {</span><br><span class="line">        <span class="comment">// 基本原理是 两个指针都一步一步走，到底了，就从另一指针 接着走</span></span><br><span class="line">        <span class="comment">// 这样实际上 两条指针的 长度 都一样 都为 a+b+c</span></span><br><span class="line">        <span class="comment">// 那么一定会相遇，最后相遇的节点即是交点</span></span><br><span class="line">        <span class="keyword">if</span>(headA == <span class="literal">null</span> || headB == <span class="literal">null</span>) <span class="keyword">return</span> <span class="literal">null</span>;</span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">tempA</span> <span class="operator">=</span> headA;</span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">tempB</span> <span class="operator">=</span> headB;</span><br><span class="line">        <span class="keyword">while</span>(tempA != tempB) {</span><br><span class="line">            tempA = tempA == <span class="literal">null</span> ? headB : tempA.next;</span><br><span class="line">            tempB = tempB == <span class="literal">null</span> ? headA : tempB.next;</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> tempA;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="206-反转链表"><a href="#206-反转链表" class="headerlink" title="206. 反转链表"></a><a href="https://leetcode.cn/problems/reverse-linked-list/">206. 反转链表</a></h4><p>给你单链表的头节点 <code>head</code> ，请你反转链表，并返回反转后的链表。</p><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode.com/uploads/2021/02/19/rev1ex1.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2021/02/19/rev1ex1.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：head = [1,2,3,4,5]</span><br><span class="line">输出：[5,4,3,2,1]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><p><a href="https://assets.leetcode.com/uploads/2021/02/19/rev1ex2.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2021/02/19/rev1ex2.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：head = [1,2]</span><br><span class="line">输出：[2,1]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：head = []</span><br><span class="line">输出：[]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li>链表中节点的数目范围是 <code>[0, 5000]</code></li><li><code>-5000 &lt;= Node.val &lt;= 5000</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for singly-linked list.</span></span><br><span class="line"><span class="comment"> * public class ListNode {</span></span><br><span class="line"><span class="comment"> *     int val;</span></span><br><span class="line"><span class="comment"> *     ListNode next;</span></span><br><span class="line"><span class="comment"> *     ListNode() {}</span></span><br><span class="line"><span class="comment"> *     ListNode(int val) { this.val = val; }</span></span><br><span class="line"><span class="comment"> *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> ListNode <span class="title function_">reverseList</span><span class="params">(ListNode head)</span> {</span><br><span class="line">        <span class="keyword">if</span>(head == <span class="literal">null</span> || head.next == <span class="literal">null</span>) <span class="keyword">return</span> head;</span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">newHead</span> <span class="operator">=</span> head;</span><br><span class="line">        head = head.next;</span><br><span class="line">        newHead.next = <span class="literal">null</span>;</span><br><span class="line">        <span class="keyword">while</span>(head != <span class="literal">null</span>) {</span><br><span class="line">            <span class="type">ListNode</span> <span class="variable">temp</span> <span class="operator">=</span> head;</span><br><span class="line">            head = head.next;</span><br><span class="line">            temp.next = newHead;</span><br><span class="line">            newHead = temp;</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> newHead;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="234-回文链表"><a href="#234-回文链表" class="headerlink" title="234. 回文链表"></a><a href="https://leetcode.cn/problems/palindrome-linked-list/">234. 回文链表</a></h4><p>给你一个单链表的头节点 <code>head</code> ，请你判断该链表是否为回文链表。如果是，返回 <code>true</code> ；否则，返回 <code>false</code> 。</p><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode.com/uploads/2021/03/03/pal1linked-list.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2021/03/03/pal1linked-list.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：head = [1,2,2,1]</span><br><span class="line">输出：true</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><p><a href="https://assets.leetcode.com/uploads/2021/03/03/pal2linked-list.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2021/03/03/pal2linked-list.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：head = [1,2]</span><br><span class="line">输出：false</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li>链表中节点数目在范围<code>[1, 105]</code> 内</li><li><code>0 &lt;= Node.val &lt;= 9</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for singly-linked list.</span></span><br><span class="line"><span class="comment"> * public class ListNode {</span></span><br><span class="line"><span class="comment"> *     int val;</span></span><br><span class="line"><span class="comment"> *     ListNode next;</span></span><br><span class="line"><span class="comment"> *     ListNode() {}</span></span><br><span class="line"><span class="comment"> *     ListNode(int val) { this.val = val; }</span></span><br><span class="line"><span class="comment"> *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">boolean</span> <span class="title function_">isPalindrome</span><span class="params">(ListNode head)</span> {</span><br><span class="line">        <span class="comment">// O(1)空间复杂度的话</span></span><br><span class="line">        <span class="comment">// 先利用快慢指针 找到中点</span></span><br><span class="line">        <span class="comment">// 接着 把中点往后的链表翻转</span></span><br><span class="line">        <span class="comment">// 最后和表头比较挨个比较即可</span></span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">slow</span> <span class="operator">=</span> head;</span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">fast</span> <span class="operator">=</span> head;</span><br><span class="line">        <span class="keyword">while</span>(fast != <span class="literal">null</span> &amp;&amp; fast.next != <span class="literal">null</span> &amp;&amp; fast.next.next != <span class="literal">null</span>) {</span><br><span class="line">            slow = slow.next;</span><br><span class="line">            fast = fast.next;</span><br><span class="line">            fast = fast.next;</span><br><span class="line">        }</span><br><span class="line">        <span class="comment">// 这个时候slow就是中点</span></span><br><span class="line">        slow.next = reverse(slow.next);</span><br><span class="line">        slow = slow.next;</span><br><span class="line">        <span class="keyword">while</span>(slow != <span class="literal">null</span>) {</span><br><span class="line">            <span class="keyword">if</span>(slow.val != head.val) {</span><br><span class="line">                <span class="keyword">return</span> <span class="literal">false</span>;</span><br><span class="line">            }</span><br><span class="line">            slow = slow.next;</span><br><span class="line">            head = head.next;</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> <span class="literal">true</span>;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> ListNode <span class="title function_">reverse</span><span class="params">(ListNode head)</span> {</span><br><span class="line"></span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">pre</span> <span class="operator">=</span> <span class="literal">null</span>;</span><br><span class="line">        <span class="keyword">while</span>(head != <span class="literal">null</span>) {</span><br><span class="line">            <span class="type">ListNode</span> <span class="variable">temp</span> <span class="operator">=</span> head;</span><br><span class="line">            head = head.next;</span><br><span class="line">            temp.next = pre;</span><br><span class="line">            pre = temp;</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> pre;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="141-环形链表"><a href="#141-环形链表" class="headerlink" title="141. 环形链表"></a><a href="https://leetcode.cn/problems/linked-list-cycle/">141. 环形链表</a></h4><p>给你一个链表的头节点 <code>head</code> ，判断链表中是否有环。</p><p>如果链表中有某个节点，可以通过连续跟踪 <code>next</code> 指针再次到达，则链表中存在环。 为了表示给定链表中的环，评测系统内部使用整数 <code>pos</code> 来表示链表尾连接到链表中的位置（索引从 0 开始）。<strong>注意：<code>pos</code> 不作为参数进行传递</strong> 。仅仅是为了标识链表的实际情况。</p><p><em>如果链表中存在环</em> ，则返回 <code>true</code> 。 否则，返回 <code>false</code> 。</p><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2018/12/07/circularlinkedlist.png" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2018/12/07/circularlinkedlist.png" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：head = [3,2,0,-4], pos = 1</span><br><span class="line">输出：true</span><br><span class="line">解释：链表中有一个环，其尾部连接到第二个节点。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><p><a href="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2018/12/07/circularlinkedlist_test2.png" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2018/12/07/circularlinkedlist_test2.png" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：head = [1,2], pos = 0</span><br><span class="line">输出：true</span><br><span class="line">解释：链表中有一个环，其尾部连接到第一个节点。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><p><a href="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2018/12/07/circularlinkedlist_test3.png" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2018/12/07/circularlinkedlist_test3.png" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：head = [1], pos = -1</span><br><span class="line">输出：false</span><br><span class="line">解释：链表中没有环。</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li>链表中节点的数目范围是 <code>[0, 104]</code></li><li><code>-105 &lt;= Node.val &lt;= 105</code></li><li><code>pos</code> 为 <code>-1</code> 或者链表中的一个 <strong>有效索引</strong> 。</li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for singly-linked list.</span></span><br><span class="line"><span class="comment"> * class ListNode {</span></span><br><span class="line"><span class="comment"> *     int val;</span></span><br><span class="line"><span class="comment"> *     ListNode next;</span></span><br><span class="line"><span class="comment"> *     ListNode(int x) {</span></span><br><span class="line"><span class="comment"> *         val = x;</span></span><br><span class="line"><span class="comment"> *         next = null;</span></span><br><span class="line"><span class="comment"> *     }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">boolean</span> <span class="title function_">hasCycle</span><span class="params">(ListNode head)</span> {</span><br><span class="line">        <span class="comment">// 保证一定至少有两个节点</span></span><br><span class="line">        <span class="keyword">if</span>(head == <span class="literal">null</span> || head.next == <span class="literal">null</span>) <span class="keyword">return</span>  <span class="literal">false</span>;</span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">newHead</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">ListNode</span>(<span class="number">0</span>, head);</span><br><span class="line">        <span class="comment">// 慢指针先走一步</span></span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">slow</span> <span class="operator">=</span> newHead.next;</span><br><span class="line">        <span class="comment">// 快指针先走两步</span></span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">fast</span> <span class="operator">=</span> newHead.next.next;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">while</span>(fast != slow) {</span><br><span class="line">            slow = slow.next;</span><br><span class="line">            fast = fast.next;</span><br><span class="line">            <span class="keyword">if</span>(fast == <span class="literal">null</span>) <span class="keyword">return</span> <span class="literal">false</span>;</span><br><span class="line">            fast = fast.next;</span><br><span class="line">            <span class="keyword">if</span>(fast == <span class="literal">null</span>) <span class="keyword">return</span> <span class="literal">false</span>;</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> <span class="literal">true</span>;</span><br><span class="line">        </span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="142-环形链表-II"><a href="#142-环形链表-II" class="headerlink" title="142. 环形链表 II"></a><a href="https://leetcode.cn/problems/linked-list-cycle-ii/">142. 环形链表 II</a></h4><p>给定一个链表的头节点  <code>head</code> ，返回链表开始入环的第一个节点。 <em>如果链表无环，则返回 <code>null</code>。</em></p><p>如果链表中有某个节点，可以通过连续跟踪 <code>next</code> 指针再次到达，则链表中存在环。 为了表示给定链表中的环，评测系统内部使用整数 <code>pos</code> 来表示链表尾连接到链表中的位置（<strong>索引从 0 开始</strong>）。如果 <code>pos</code> 是 <code>-1</code>，则在该链表中没有环。<strong>注意：<code>pos</code> 不作为参数进行传递</strong>，仅仅是为了标识链表的实际情况。</p><p><strong>不允许修改</strong> 链表。</p><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode.com/uploads/2018/12/07/circularlinkedlist.png" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2018/12/07/circularlinkedlist.png" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：head = [3,2,0,-4], pos = 1</span><br><span class="line">输出：返回索引为 1 的链表节点</span><br><span class="line">解释：链表中有一个环，其尾部连接到第二个节点。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><p><a href="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2018/12/07/circularlinkedlist_test2.png" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2018/12/07/circularlinkedlist_test2.png" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：head = [1,2], pos = 0</span><br><span class="line">输出：返回索引为 0 的链表节点</span><br><span class="line">解释：链表中有一个环，其尾部连接到第一个节点。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><p><a href="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2018/12/07/circularlinkedlist_test3.png" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2018/12/07/circularlinkedlist_test3.png" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：head = [1], pos = -1</span><br><span class="line">输出：返回 null</span><br><span class="line">解释：链表中没有环。</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li>链表中节点的数目范围在范围 <code>[0, 104]</code> 内</li><li><code>-105 &lt;= Node.val &lt;= 105</code></li><li><code>pos</code> 的值为 <code>-1</code> 或者链表中的一个有效索引</li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for singly-linked list.</span></span><br><span class="line"><span class="comment"> * class ListNode {</span></span><br><span class="line"><span class="comment"> *     int val;</span></span><br><span class="line"><span class="comment"> *     ListNode next;</span></span><br><span class="line"><span class="comment"> *     ListNode(int x) {</span></span><br><span class="line"><span class="comment"> *         val = x;</span></span><br><span class="line"><span class="comment"> *         next = null;</span></span><br><span class="line"><span class="comment"> *     }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> ListNode <span class="title function_">detectCycle</span><span class="params">(ListNode head)</span> {</span><br><span class="line">        <span class="keyword">if</span>(head == <span class="literal">null</span> || head.next == <span class="literal">null</span>) <span class="keyword">return</span> <span class="literal">null</span>;</span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">newHead</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">ListNode</span>(<span class="number">0</span>, head);</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 找环的话，先都行动一次</span></span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">slow</span> <span class="operator">=</span> newHead.next;</span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">fast</span> <span class="operator">=</span> newHead.next.next;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">while</span>(slow != fast) {</span><br><span class="line">            slow = slow.next;</span><br><span class="line">            fast = fast.next;</span><br><span class="line">            <span class="keyword">if</span>(fast == <span class="literal">null</span>) <span class="keyword">return</span> <span class="literal">null</span>;</span><br><span class="line">            fast = fast.next;</span><br><span class="line">            <span class="keyword">if</span>(fast == <span class="literal">null</span>) <span class="keyword">return</span> <span class="literal">null</span>;</span><br><span class="line">        }</span><br><span class="line">        <span class="comment">// 直接放在头结点</span></span><br><span class="line">        fast = newHead;</span><br><span class="line">        <span class="keyword">while</span>(slow != fast) {</span><br><span class="line">            slow = slow.next;</span><br><span class="line">            fast = fast.next;</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> fast;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="21-合并两个有序链表"><a href="#21-合并两个有序链表" class="headerlink" title="21. 合并两个有序链表"></a><a href="https://leetcode.cn/problems/merge-two-sorted-lists/">21. 合并两个有序链表</a></h4><p>将两个升序链表合并为一个新的 <strong>升序</strong> 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 </p><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode.com/uploads/2020/10/03/merge_ex1.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2020/10/03/merge_ex1.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：l1 = [1,2,4], l2 = [1,3,4]</span><br><span class="line">输出：[1,1,2,3,4,4]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：l1 = [], l2 = []</span><br><span class="line">输出：[]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：l1 = [], l2 = [0]</span><br><span class="line">输出：[0]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li>两个链表的节点数目范围是 <code>[0, 50]</code></li><li><code>-100 &lt;= Node.val &lt;= 100</code></li><li><code>l1</code> 和 <code>l2</code> 均按 <strong>非递减顺序</strong> 排列</li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for singly-linked list.</span></span><br><span class="line"><span class="comment"> * public class ListNode {</span></span><br><span class="line"><span class="comment"> *     int val;</span></span><br><span class="line"><span class="comment"> *     ListNode next;</span></span><br><span class="line"><span class="comment"> *     ListNode() {}</span></span><br><span class="line"><span class="comment"> *     ListNode(int val) { this.val = val; }</span></span><br><span class="line"><span class="comment"> *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> ListNode <span class="title function_">mergeTwoLists</span><span class="params">(ListNode list1, ListNode list2)</span> {</span><br><span class="line">        <span class="keyword">if</span>(list1 == <span class="literal">null</span>) <span class="keyword">return</span> list2;</span><br><span class="line">        <span class="keyword">if</span>(list2 == <span class="literal">null</span>) <span class="keyword">return</span> list1;</span><br><span class="line">        <span class="keyword">if</span>(list1.val &lt; list2.val) {</span><br><span class="line">            list1.next = mergeTwoLists(list1.next, list2);</span><br><span class="line">            <span class="keyword">return</span> list1;</span><br><span class="line">        } <span class="keyword">else</span> {</span><br><span class="line">            list2.next = mergeTwoLists(list1, list2.next);</span><br><span class="line">            <span class="keyword">return</span> list2;</span><br><span class="line">        }</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="2-两数相加"><a href="#2-两数相加" class="headerlink" title="2. 两数相加"></a><a href="https://leetcode.cn/problems/add-two-numbers/">2. 两数相加</a></h4><p>给你两个 <strong>非空</strong> 的链表，表示两个非负的整数。它们每位数字都是按照 <strong>逆序</strong> 的方式存储的，并且每个节点只能存储 <strong>一位</strong> 数字。</p><p>请你将两个数相加，并以相同形式返回一个表示和的链表。</p><p>你可以假设除了数字 0 之外，这两个数都不会以 0 开头。</p><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2021/01/02/addtwonumber1.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2021/01/02/addtwonumber1.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：l1 = [2,4,3], l2 = [5,6,4]</span><br><span class="line">输出：[7,0,8]</span><br><span class="line">解释：342 + 465 = 807.</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：l1 = [0], l2 = [0]</span><br><span class="line">输出：[0]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]</span><br><span class="line">输出：[8,9,9,9,0,0,0,1]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li>每个链表中的节点数在范围 <code>[1, 100]</code> 内</li><li><code>0 &lt;= Node.val &lt;= 9</code></li><li>题目数据保证列表表示的数字不含前导零</li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for singly-linked list.</span></span><br><span class="line"><span class="comment"> * public class ListNode {</span></span><br><span class="line"><span class="comment"> *     int val;</span></span><br><span class="line"><span class="comment"> *     ListNode next;</span></span><br><span class="line"><span class="comment"> *     ListNode() {}</span></span><br><span class="line"><span class="comment"> *     ListNode(int val) { this.val = val; }</span></span><br><span class="line"><span class="comment"> *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> ListNode <span class="title function_">addTwoNumbers</span><span class="params">(ListNode l1, ListNode l2)</span> {</span><br><span class="line">        <span class="keyword">if</span>(l1 == <span class="literal">null</span>) <span class="keyword">return</span> l2;</span><br><span class="line">        <span class="keyword">if</span>(l2 == <span class="literal">null</span>) {</span><br><span class="line">            <span class="type">ListNode</span> <span class="variable">templ1</span> <span class="operator">=</span> l1;</span><br><span class="line">            <span class="keyword">while</span> (l1.val &gt;= <span class="number">10</span>) {</span><br><span class="line">                <span class="keyword">if</span>(l1.next == <span class="literal">null</span>) {</span><br><span class="line">                    l1.next = <span class="keyword">new</span> <span class="title class_">ListNode</span>(<span class="number">1</span>);</span><br><span class="line">                } <span class="keyword">else</span> {</span><br><span class="line">                    l1.next.val++;</span><br><span class="line">                }</span><br><span class="line">                l1.val -= <span class="number">10</span>;</span><br><span class="line">                l1 = l1.next;</span><br><span class="line">            }</span><br><span class="line">            <span class="keyword">return</span> templ1;</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">        l1.val = l1.val + l2.val;</span><br><span class="line">        <span class="keyword">if</span>(l1.val &gt;= <span class="number">10</span>)  {</span><br><span class="line">            <span class="keyword">if</span>(l1.next == <span class="literal">null</span>) {</span><br><span class="line">                l1.next = <span class="keyword">new</span> <span class="title class_">ListNode</span>(<span class="number">1</span>);</span><br><span class="line">            } <span class="keyword">else</span> {</span><br><span class="line">                l1.next.val++;</span><br><span class="line">            }</span><br><span class="line">            l1.val -= <span class="number">10</span>;</span><br><span class="line">        }</span><br><span class="line">        l1.next = addTwoNumbers(l1.next, l2.next);</span><br><span class="line">        <span class="keyword">return</span> l1;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="19-删除链表的倒数第-N-个结点"><a href="#19-删除链表的倒数第-N-个结点" class="headerlink" title="19. 删除链表的倒数第 N 个结点"></a><a href="https://leetcode.cn/problems/remove-nth-node-from-end-of-list/">19. 删除链表的倒数第 N 个结点</a></h4><p>给你一个链表，删除链表的倒数第 <code>n</code> 个结点，并且返回链表的头结点。</p><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode.com/uploads/2020/10/03/remove_ex1.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2020/10/03/remove_ex1.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：head = [1,2,3,4,5], n = 2</span><br><span class="line">输出：[1,2,3,5]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：head = [1], n = 1</span><br><span class="line">输出：[]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：head = [1,2], n = 1</span><br><span class="line">输出：[1]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li>链表中结点的数目为 <code>sz</code></li><li><code>1 &lt;= sz &lt;= 30</code></li><li><code>0 &lt;= Node.val &lt;= 100</code></li><li><code>1 &lt;= n &lt;= sz</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for singly-linked list.</span></span><br><span class="line"><span class="comment"> * public class ListNode {</span></span><br><span class="line"><span class="comment"> *     int val;</span></span><br><span class="line"><span class="comment"> *     ListNode next;</span></span><br><span class="line"><span class="comment"> *     ListNode() {}</span></span><br><span class="line"><span class="comment"> *     ListNode(int val) { this.val = val; }</span></span><br><span class="line"><span class="comment"> *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> ListNode <span class="title function_">removeNthFromEnd</span><span class="params">(ListNode head, <span class="type">int</span> n)</span> {</span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">newHead</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">ListNode</span>();</span><br><span class="line">        newHead.next = head;</span><br><span class="line"></span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">first</span> <span class="operator">=</span> newHead;</span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">second</span> <span class="operator">=</span> newHead;</span><br><span class="line">        <span class="keyword">while</span>(n-- &gt; <span class="number">0</span>) {</span><br><span class="line">            second = second.next;</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">while</span>(second.next != <span class="literal">null</span>) {</span><br><span class="line">            second = second.next;</span><br><span class="line">            first = first.next;</span><br><span class="line">        }</span><br><span class="line">        first.next = first.next.next;</span><br><span class="line">        <span class="keyword">return</span> newHead.next;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="24-两两交换链表中的节点"><a href="#24-两两交换链表中的节点" class="headerlink" title="24. 两两交换链表中的节点"></a><a href="https://leetcode.cn/problems/swap-nodes-in-pairs/">24. 两两交换链表中的节点</a></h4><p>给你一个链表，两两交换其中相邻的节点，并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题（即，只能进行节点交换）。</p><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode.com/uploads/2020/10/03/swap_ex1.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2020/10/03/swap_ex1.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：head = [1,2,3,4]</span><br><span class="line">输出：[2,1,4,3]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：head = []</span><br><span class="line">输出：[]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：head = [1]</span><br><span class="line">输出：[1]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li>链表中节点的数目在范围 <code>[0, 100]</code> 内</li><li><code>0 &lt;= Node.val &lt;= 100</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for singly-linked list.</span></span><br><span class="line"><span class="comment"> * public class ListNode {</span></span><br><span class="line"><span class="comment"> *     int val;</span></span><br><span class="line"><span class="comment"> *     ListNode next;</span></span><br><span class="line"><span class="comment"> *     ListNode() {}</span></span><br><span class="line"><span class="comment"> *     ListNode(int val) { this.val = val; }</span></span><br><span class="line"><span class="comment"> *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> ListNode <span class="title function_">swapPairs</span><span class="params">(ListNode head)</span> {</span><br><span class="line">        <span class="keyword">if</span>(head == <span class="literal">null</span> || head.next == <span class="literal">null</span>) <span class="keyword">return</span> head;</span><br><span class="line">        </span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">first</span> <span class="operator">=</span> head;</span><br><span class="line">        head = head.next;</span><br><span class="line">        first.next = <span class="literal">null</span>;</span><br><span class="line"></span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">second</span> <span class="operator">=</span> head;</span><br><span class="line">        head = head.next;</span><br><span class="line">        second.next = <span class="literal">null</span>;</span><br><span class="line"></span><br><span class="line">        second.next = first;</span><br><span class="line"></span><br><span class="line">        first.next = swapPairs(head);</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">return</span> second;</span><br><span class="line"></span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="25-K-个一组翻转链表"><a href="#25-K-个一组翻转链表" class="headerlink" title="25. K 个一组翻转链表"></a><a href="https://leetcode.cn/problems/reverse-nodes-in-k-group/">25. K 个一组翻转链表</a></h4><p>给你链表的头节点 <code>head</code> ，每 <code>k</code> 个节点一组进行翻转，请你返回修改后的链表。</p><p><code>k</code> 是一个正整数，它的值小于或等于链表的长度。如果节点总数不是 <code>k</code> 的整数倍，那么请将最后剩余的节点保持原有顺序。</p><p>你不能只是单纯的改变节点内部的值，而是需要实际进行节点交换。</p><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode.com/uploads/2020/10/03/reverse_ex1.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2020/10/03/reverse_ex1.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：head = [1,2,3,4,5], k = 2</span><br><span class="line">输出：[2,1,4,3,5]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><p><a href="https://assets.leetcode.com/uploads/2020/10/03/reverse_ex2.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2020/10/03/reverse_ex2.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：head = [1,2,3,4,5], k = 3</span><br><span class="line">输出：[3,2,1,4,5]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li>链表中的节点数目为 <code>n</code></li><li><code>1 &lt;= k &lt;= n &lt;= 5000</code></li><li><code>0 &lt;= Node.val &lt;= 1000</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for singly-linked list.</span></span><br><span class="line"><span class="comment"> * public class ListNode {</span></span><br><span class="line"><span class="comment"> *     int val;</span></span><br><span class="line"><span class="comment"> *     ListNode next;</span></span><br><span class="line"><span class="comment"> *     ListNode() {}</span></span><br><span class="line"><span class="comment"> *     ListNode(int val) { this.val = val; }</span></span><br><span class="line"><span class="comment"> *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> ListNode <span class="title function_">reverseKGroup</span><span class="params">(ListNode head, <span class="type">int</span> k)</span> {</span><br><span class="line">        <span class="keyword">if</span>(head == <span class="literal">null</span> || k == <span class="number">1</span>) <span class="keyword">return</span> head;</span><br><span class="line">        </span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">newHead</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">ListNode</span>();</span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">tail</span> <span class="operator">=</span> newHead;</span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">left</span> <span class="operator">=</span> head;</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">while</span>(left != <span class="literal">null</span>) {</span><br><span class="line">            <span class="type">ListNode</span> <span class="variable">tempHead</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">ListNode</span>(<span class="number">0</span>, left);</span><br><span class="line">            <span class="type">ListNode</span> <span class="variable">slow</span> <span class="operator">=</span> tempHead;</span><br><span class="line">            <span class="type">ListNode</span> <span class="variable">fast</span> <span class="operator">=</span> tempHead;</span><br><span class="line">            <span class="type">int</span> <span class="variable">count</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">            <span class="keyword">while</span>(count &lt; k) {</span><br><span class="line">                fast = fast.next;</span><br><span class="line">                <span class="keyword">if</span>(fast == <span class="literal">null</span>) <span class="keyword">break</span>;</span><br><span class="line">                count++;</span><br><span class="line">            }</span><br><span class="line">            <span class="keyword">if</span>(count &lt; k) <span class="keyword">break</span>;</span><br><span class="line">            left = fast.next;</span><br><span class="line">            fast.next = <span class="literal">null</span>;</span><br><span class="line">            tail.next = reverse(slow.next);</span><br><span class="line">            tail = slow.next;</span><br><span class="line">            tail.next = <span class="literal">null</span>;</span><br><span class="line">        }</span><br><span class="line">        tail.next = left;</span><br><span class="line">        <span class="keyword">return</span> newHead.next;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> ListNode <span class="title function_">reverse</span><span class="params">(ListNode head)</span> {</span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">newHead</span> <span class="operator">=</span> head;</span><br><span class="line">        head = head.next;</span><br><span class="line">        newHead.next = <span class="literal">null</span>;</span><br><span class="line">        <span class="keyword">while</span>(head != <span class="literal">null</span>) {</span><br><span class="line">            <span class="type">ListNode</span> <span class="variable">tempHead</span> <span class="operator">=</span> head;</span><br><span class="line">            head = head.next;</span><br><span class="line">            tempHead.next = newHead;</span><br><span class="line">            newHead = tempHead;</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> newHead;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="138-随机链表的复制"><a href="#138-随机链表的复制" class="headerlink" title="138. 随机链表的复制"></a><a href="https://leetcode.cn/problems/copy-list-with-random-pointer/">138. 随机链表的复制</a></h4><p>给你一个长度为 <code>n</code> 的链表，每个节点包含一个额外增加的随机指针 <code>random</code> ，该指针可以指向链表中的任何节点或空节点。</p><p>构造这个链表的 <strong><a href="https://baike.baidu.com/item/%E6%B7%B1%E6%8B%B7%E8%B4%9D/22785317?fr=aladdin">深拷贝</a><strong>。 深拷贝应该正好由 <code>n</code> 个 <strong>全新</strong> 节点组成，其中每个新节点的值都设为其对应的原节点的值。新节点的 <code>next</code> 指针和 <code>random</code> 指针也都应指向复制链表中的新节点，并使原链表和复制链表中的这些指针能够表示相同的链表状态。</strong>复制链表中的指针都不应指向原链表中的节点</strong> 。</p><p>例如，如果原链表中有 <code>X</code> 和 <code>Y</code> 两个节点，其中 <code>X.random --&gt; Y</code> 。那么在复制链表中对应的两个节点 <code>x</code> 和 <code>y</code> ，同样有 <code>x.random --&gt; y</code> 。</p><p>返回复制链表的头节点。</p><p>用一个由 <code>n</code> 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 <code>[val, random_index]</code> 表示：</p><ul><li><code>val</code>：一个表示 <code>Node.val</code> 的整数。</li><li><code>random_index</code>：随机指针指向的节点索引（范围从 <code>0</code> 到 <code>n-1</code>）；如果不指向任何节点，则为 <code>null</code> 。</li></ul><p>你的代码 <strong>只</strong> 接受原链表的头节点 <code>head</code> 作为传入参数。</p><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/01/09/e1.png" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/01/09/e1.png" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：head = [[7,null],[13,0],[11,4],[10,2],[1,0]]</span><br><span class="line">输出：[[7,null],[13,0],[11,4],[10,2],[1,0]]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><p><a href="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/01/09/e2.png" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/01/09/e2.png" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：head = [[1,1],[2,1]]</span><br><span class="line">输出：[[1,1],[2,1]]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><p><strong><a href="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/01/09/e3.png" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/01/09/e3.png" alt="img"></a></strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：head = [[3,null],[3,0],[3,null]]</span><br><span class="line">输出：[[3,null],[3,0],[3,null]]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>0 &lt;= n &lt;= 1000</code></li><li><code>-104 &lt;= Node.val &lt;= 104</code></li><li><code>Node.random</code> 为 <code>null</code> 或指向链表中的节点。</li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/*</span></span><br><span class="line"><span class="comment">// Definition for a Node.</span></span><br><span class="line"><span class="comment">class Node {</span></span><br><span class="line"><span class="comment">    int val;</span></span><br><span class="line"><span class="comment">    Node next;</span></span><br><span class="line"><span class="comment">    Node random;</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment">    public Node(int val) {</span></span><br><span class="line"><span class="comment">        this.val = val;</span></span><br><span class="line"><span class="comment">        this.next = null;</span></span><br><span class="line"><span class="comment">        this.random = null;</span></span><br><span class="line"><span class="comment">    }</span></span><br><span class="line"><span class="comment">}</span></span><br><span class="line"><span class="comment">*/</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> Node <span class="title function_">copyRandomList</span><span class="params">(Node head)</span> {</span><br><span class="line">        <span class="keyword">if</span>(head == <span class="literal">null</span>) <span class="keyword">return</span> <span class="literal">null</span>;</span><br><span class="line">        HashMap&lt;Node, Node&gt; hashMap = <span class="keyword">new</span> <span class="title class_">HashMap</span>&lt;&gt;();</span><br><span class="line">        <span class="type">Node</span> <span class="variable">tempHead</span> <span class="operator">=</span> head;</span><br><span class="line">        <span class="keyword">while</span>(tempHead != <span class="literal">null</span>) {</span><br><span class="line">            hashMap.put(tempHead, <span class="keyword">new</span> <span class="title class_">Node</span>(tempHead.val));</span><br><span class="line">            tempHead = tempHead.next;</span><br><span class="line">        }</span><br><span class="line">        tempHead = head;</span><br><span class="line">        <span class="keyword">while</span>(tempHead != <span class="literal">null</span>) {</span><br><span class="line">            hashMap.get(tempHead).next = hashMap.get(tempHead.next);</span><br><span class="line">            hashMap.get(tempHead).random = hashMap.get(tempHead.random);</span><br><span class="line">            tempHead = tempHead.next;</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> hashMap.get(head);</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="148-排序链表"><a href="#148-排序链表" class="headerlink" title="148. 排序链表"></a><a href="https://leetcode.cn/problems/sort-list/">148. 排序链表</a></h4><p>给你链表的头结点 <code>head</code> ，请将其按 <strong>升序</strong> 排列并返回 <strong>排序后的链表</strong> 。</p><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode.com/uploads/2020/09/14/sort_list_1.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2020/09/14/sort_list_1.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：head = [4,2,1,3]</span><br><span class="line">输出：[1,2,3,4]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><p><a href="https://assets.leetcode.com/uploads/2020/09/14/sort_list_2.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2020/09/14/sort_list_2.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：head = [-1,5,3,4,0]</span><br><span class="line">输出：[-1,0,3,4,5]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：head = []</span><br><span class="line">输出：[]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li>链表中节点的数目在范围 <code>[0, 5 * 104]</code> 内</li><li><code>-105 &lt;= Node.val &lt;= 105</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for singly-linked list.</span></span><br><span class="line"><span class="comment"> * public class ListNode {</span></span><br><span class="line"><span class="comment"> *     int val;</span></span><br><span class="line"><span class="comment"> *     ListNode next;</span></span><br><span class="line"><span class="comment"> *     ListNode() {}</span></span><br><span class="line"><span class="comment"> *     ListNode(int val) { this.val = val; }</span></span><br><span class="line"><span class="comment"> *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 记住找中心节点和合并方法，都弄一个头结点就比较稳</span></span><br><span class="line">    <span class="keyword">public</span> ListNode <span class="title function_">sortList</span><span class="params">(ListNode head)</span> {</span><br><span class="line">        <span class="keyword">if</span>(head == <span class="literal">null</span> || head.next == <span class="literal">null</span>) <span class="keyword">return</span> head;</span><br><span class="line">        </span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">left</span> <span class="operator">=</span> head;</span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">middleNode</span> <span class="operator">=</span> getMiddle(left);</span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">right</span> <span class="operator">=</span> middleNode.next;</span><br><span class="line">        middleNode.next = <span class="literal">null</span>;</span><br><span class="line">        </span><br><span class="line">        left = sortList(left);</span><br><span class="line">        right = sortList(right);</span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">result</span> <span class="operator">=</span> merge(left, right);</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> ListNode <span class="title function_">getMiddle</span><span class="params">(ListNode head)</span> {</span><br><span class="line">        <span class="keyword">if</span>(head == <span class="literal">null</span> || head.next == <span class="literal">null</span>) <span class="keyword">return</span> head;</span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">newHead</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">ListNode</span>(-<span class="number">1</span>, head);</span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">slow</span> <span class="operator">=</span> newHead.next;</span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">fast</span> <span class="operator">=</span> newHead.next.next;</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">while</span>(fast.next != <span class="literal">null</span>) {</span><br><span class="line">            slow = slow.next;</span><br><span class="line">            fast = fast.next;</span><br><span class="line">            <span class="keyword">if</span>(fast.next == <span class="literal">null</span>) <span class="keyword">break</span>;</span><br><span class="line">            fast = fast.next;</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> slow;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> ListNode <span class="title function_">merge</span><span class="params">(ListNode l1, ListNode l2)</span> {</span><br><span class="line">        <span class="comment">// 两个方法都要新弄一个头结点</span></span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">tempHead</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">ListNode</span>();</span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">tail</span> <span class="operator">=</span> tempHead;</span><br><span class="line">        <span class="keyword">while</span>(l1 != <span class="literal">null</span> &amp;&amp; l2 != <span class="literal">null</span>) {</span><br><span class="line">            <span class="keyword">if</span>(l1.val &lt; l2.val) {</span><br><span class="line">                tail.next = l1;</span><br><span class="line">                l1 = l1.next;</span><br><span class="line">            } <span class="keyword">else</span> {</span><br><span class="line">                tail.next = l2;</span><br><span class="line">                l2 = l2.next;</span><br><span class="line">            }</span><br><span class="line">            tail = tail.next;</span><br><span class="line">        }</span><br><span class="line">        tail.next = l1 == <span class="literal">null</span> ? l2 : l1;</span><br><span class="line">        <span class="keyword">return</span> tempHead.next;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="23-合并-K-个升序链表"><a href="#23-合并-K-个升序链表" class="headerlink" title="23. 合并 K 个升序链表"></a><a href="https://leetcode.cn/problems/merge-k-sorted-lists/">23. 合并 K 个升序链表</a></h4><p>给你一个链表数组，每个链表都已经按升序排列。</p><p>请你将所有链表合并到一个升序链表中，返回合并后的链表。</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">输入：lists = [[1,4,5],[1,3,4],[2,6]]</span><br><span class="line">输出：[1,1,2,3,4,4,5,6]</span><br><span class="line">解释：链表数组如下：</span><br><span class="line">[</span><br><span class="line">  1-&gt;4-&gt;5,</span><br><span class="line">  1-&gt;3-&gt;4,</span><br><span class="line">  2-&gt;6</span><br><span class="line">]</span><br><span class="line">将它们合并到一个有序链表中得到。</span><br><span class="line">1-&gt;1-&gt;2-&gt;3-&gt;4-&gt;4-&gt;5-&gt;6</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：lists = []</span><br><span class="line">输出：[]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：lists = [[]]</span><br><span class="line">输出：[]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>k == lists.length</code></li><li><code>0 &lt;= k &lt;= 10^4</code></li><li><code>0 &lt;= lists[i].length &lt;= 500</code></li><li><code>-10^4 &lt;= lists[i][j] &lt;= 10^4</code></li><li><code>lists[i]</code> 按 <strong>升序</strong> 排列</li><li><code>lists[i].length</code> 的总和不超过 <code>10^4</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for singly-linked list.</span></span><br><span class="line"><span class="comment"> * public class ListNode {</span></span><br><span class="line"><span class="comment"> *     int val;</span></span><br><span class="line"><span class="comment"> *     ListNode next;</span></span><br><span class="line"><span class="comment"> *     ListNode() {}</span></span><br><span class="line"><span class="comment"> *     ListNode(int val) { this.val = val; }</span></span><br><span class="line"><span class="comment"> *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> ListNode <span class="title function_">mergeKLists</span><span class="params">(ListNode[] lists)</span> {</span><br><span class="line"></span><br><span class="line">        <span class="keyword">if</span>(lists == <span class="literal">null</span> || lists.length &lt; <span class="number">1</span>) <span class="keyword">return</span> <span class="literal">null</span>;</span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">newHead</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">ListNode</span>();</span><br><span class="line">        <span class="type">ListNode</span> <span class="variable">tail</span> <span class="operator">=</span> newHead;</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 引入输入有可能很恶心，比如 [[], [1]], 所以先找到合理的长度</span></span><br><span class="line">        <span class="type">int</span> <span class="variable">count</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        <span class="keyword">for</span>(ListNode list : lists) {</span><br><span class="line">            <span class="keyword">if</span>(list != <span class="literal">null</span>) count++;</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">while</span>(count &gt; <span class="number">0</span>) {</span><br><span class="line">            <span class="type">ListNode</span> <span class="variable">tempNode</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">ListNode</span>(Integer.MAX_VALUE);</span><br><span class="line">            <span class="type">int</span> <span class="variable">tempIndex</span> <span class="operator">=</span> -<span class="number">1</span>;</span><br><span class="line">            <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; lists.length; i++) {</span><br><span class="line">                <span class="type">ListNode</span> <span class="variable">tempList</span> <span class="operator">=</span> lists[i];</span><br><span class="line">                <span class="keyword">if</span>(tempList == <span class="literal">null</span>) <span class="keyword">continue</span>;</span><br><span class="line">                <span class="keyword">if</span>(tempList.val &lt; tempNode.val) {</span><br><span class="line">                    tempNode = tempList;</span><br><span class="line">                    tempIndex = i;</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">            tail.next = tempNode;</span><br><span class="line">            lists[tempIndex] = lists[tempIndex].next;</span><br><span class="line">            <span class="keyword">if</span>(lists[tempIndex] == <span class="literal">null</span>) {</span><br><span class="line">                count--;</span><br><span class="line">            }</span><br><span class="line">            tail = tail.next;</span><br><span class="line">            tail.next = <span class="literal">null</span>;</span><br><span class="line"></span><br><span class="line">        } </span><br><span class="line">        <span class="keyword">return</span> newHead.next;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="146-LRU-缓存"><a href="#146-LRU-缓存" class="headerlink" title="146. LRU 缓存"></a><a href="https://leetcode.cn/problems/lru-cache/">146. LRU 缓存</a></h4><p>请你设计并实现一个满足 <a href="https://baike.baidu.com/item/LRU">LRU (最近最少使用) 缓存</a> 约束的数据结构。</p><p>实现 <code>LRUCache</code> 类：</p><ul><li><code>LRUCache(int capacity)</code> 以 <strong>正整数</strong> 作为容量 <code>capacity</code> 初始化 LRU 缓存</li><li><code>int get(int key)</code> 如果关键字 <code>key</code> 存在于缓存中，则返回关键字的值，否则返回 <code>-1</code> 。</li><li><code>void put(int key, int value)</code> 如果关键字 <code>key</code> 已经存在，则变更其数据值 <code>value</code> ；如果不存在，则向缓存中插入该组 <code>key-value</code> 。如果插入操作导致关键字数量超过 <code>capacity</code> ，则应该 <strong>逐出</strong> 最久未使用的关键字。</li></ul><p>函数 <code>get</code> 和 <code>put</code> 必须以 <code>O(1)</code> 的平均时间复杂度运行。</p><p><strong>示例：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line">输入</span><br><span class="line">["LRUCache", "put", "put", "get", "put", "get", "put", "get", "get", "get"]</span><br><span class="line">[[2], [1, 1], [2, 2], [1], [3, 3], [2], [4, 4], [1], [3], [4]]</span><br><span class="line">输出</span><br><span class="line">[null, null, null, 1, null, -1, null, -1, 3, 4]</span><br><span class="line"></span><br><span class="line">解释</span><br><span class="line">LRUCache lRUCache = new LRUCache(2);</span><br><span class="line">lRUCache.put(1, 1); // 缓存是 {1=1}</span><br><span class="line">lRUCache.put(2, 2); // 缓存是 {1=1, 2=2}</span><br><span class="line">lRUCache.get(1);    // 返回 1</span><br><span class="line">lRUCache.put(3, 3); // 该操作会使得关键字 2 作废，缓存是 {1=1, 3=3}</span><br><span class="line">lRUCache.get(2);    // 返回 -1 (未找到)</span><br><span class="line">lRUCache.put(4, 4); // 该操作会使得关键字 1 作废，缓存是 {4=4, 3=3}</span><br><span class="line">lRUCache.get(1);    // 返回 -1 (未找到)</span><br><span class="line">lRUCache.get(3);    // 返回 3</span><br><span class="line">lRUCache.get(4);    // 返回 4</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= capacity &lt;= 3000</code></li><li><code>0 &lt;= key &lt;= 10000</code></li><li><code>0 &lt;= value &lt;= 105</code></li><li>最多调用 <code>2 * 105</code> 次 <code>get</code> 和 <code>put</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.util.HashMap;</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">LRUCache</span> {</span><br><span class="line">    <span class="comment">// 原理就是利用 hashMap 做缓存，再用 带前后指针的链表</span></span><br><span class="line">    <span class="comment">// 访问过/放入过，就立马把该元素放到头部</span></span><br><span class="line">    <span class="comment">// 超过长度就移除末尾的那个元素</span></span><br><span class="line">    <span class="comment">// 小技巧：使用头结点和尾结点</span></span><br><span class="line">    <span class="keyword">private</span> HashMap&lt;Integer, LinkNode&gt; cache = <span class="keyword">new</span> <span class="title class_">HashMap</span>&lt;&gt;();</span><br><span class="line">    <span class="keyword">private</span> LinkNode head;</span><br><span class="line">    <span class="keyword">private</span> LinkNode tail;</span><br><span class="line">    <span class="comment">// 当前大小</span></span><br><span class="line">    <span class="keyword">private</span> <span class="type">int</span> size;</span><br><span class="line">    <span class="comment">// 总的容量</span></span><br><span class="line">    <span class="keyword">private</span> <span class="type">int</span> capacity;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="title function_">LRUCache</span><span class="params">(<span class="type">int</span> capacity)</span> {</span><br><span class="line">        <span class="built_in">this</span>.size = <span class="number">0</span>;</span><br><span class="line">        <span class="built_in">this</span>.capacity = capacity;</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 伪头结点 尾结点</span></span><br><span class="line">        <span class="built_in">this</span>.head = <span class="keyword">new</span> <span class="title class_">LinkNode</span>();</span><br><span class="line">        <span class="built_in">this</span>.tail = <span class="keyword">new</span> <span class="title class_">LinkNode</span>();</span><br><span class="line">        <span class="built_in">this</span>.head.next = tail;</span><br><span class="line">        <span class="built_in">this</span>.tail.pre = head;</span><br><span class="line">    }</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">get</span><span class="params">(<span class="type">int</span> key)</span> {</span><br><span class="line">        <span class="type">LinkNode</span> <span class="variable">node</span> <span class="operator">=</span> <span class="built_in">this</span>.cache.get(key);</span><br><span class="line">        <span class="keyword">if</span>(node == <span class="literal">null</span>) {</span><br><span class="line">            <span class="keyword">return</span> -<span class="number">1</span>;</span><br><span class="line">        }</span><br><span class="line">        <span class="comment">// 被访问了，就放到头部</span></span><br><span class="line">        moveToHead(node);</span><br><span class="line">        <span class="keyword">return</span> node.value;</span><br><span class="line">    }</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">put</span><span class="params">(<span class="type">int</span> key, <span class="type">int</span> value)</span> {</span><br><span class="line">        <span class="type">LinkNode</span> <span class="variable">node</span> <span class="operator">=</span> <span class="built_in">this</span>.cache.get(key);</span><br><span class="line">        <span class="keyword">if</span>(node == <span class="literal">null</span>) {</span><br><span class="line">            node = <span class="keyword">new</span> <span class="title class_">LinkNode</span>(key, value);</span><br><span class="line">            <span class="built_in">this</span>.cache.put(key, node);</span><br><span class="line">            addToHead(node);</span><br><span class="line">            ++size;</span><br><span class="line">            <span class="keyword">if</span>(size &gt; capacity) {</span><br><span class="line">                <span class="type">LinkNode</span> <span class="variable">temp</span> <span class="operator">=</span> removeTail();</span><br><span class="line">                cache.remove(temp.key);</span><br><span class="line">                --size;</span><br><span class="line">            }</span><br><span class="line">        } <span class="keyword">else</span> {</span><br><span class="line">            node.value = value;</span><br><span class="line">            moveToHead(node);</span><br><span class="line">        }</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> LinkNode <span class="title function_">removeTail</span><span class="params">()</span> {</span><br><span class="line">        <span class="type">LinkNode</span> <span class="variable">node</span> <span class="operator">=</span> <span class="built_in">this</span>.tail.pre;</span><br><span class="line">        removeNode(node);</span><br><span class="line">        <span class="keyword">return</span> node;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">void</span> <span class="title function_">removeNode</span><span class="params">(LinkNode node)</span> {</span><br><span class="line">        node.pre.next = node.next;</span><br><span class="line">        node.next.pre = node.pre;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">void</span> <span class="title function_">addToHead</span><span class="params">(LinkNode node)</span> {</span><br><span class="line">        node.next = <span class="built_in">this</span>.head.next;</span><br><span class="line">        node.pre = <span class="built_in">this</span>.head;</span><br><span class="line">        <span class="built_in">this</span>.head.next.pre = node;</span><br><span class="line">        <span class="built_in">this</span>.head.next = node;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">void</span> <span class="title function_">moveToHead</span><span class="params">(LinkNode node)</span> {</span><br><span class="line">        removeNode(node);</span><br><span class="line">        addToHead(node);</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">class</span> <span class="title class_">LinkNode</span> {</span><br><span class="line">        <span class="type">int</span> key;</span><br><span class="line">        <span class="type">int</span> value;</span><br><span class="line"></span><br><span class="line">        LinkNode pre;</span><br><span class="line">        LinkNode next;</span><br><span class="line">        <span class="keyword">public</span> <span class="title function_">LinkNode</span><span class="params">()</span> {}</span><br><span class="line">        <span class="keyword">public</span> <span class="title function_">LinkNode</span><span class="params">(<span class="type">int</span> key, <span class="type">int</span> value)</span> {</span><br><span class="line">            <span class="built_in">this</span>.key = key;</span><br><span class="line">            <span class="built_in">this</span>.value = value;</span><br><span class="line">        }</span><br><span class="line">    }</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Your LRUCache object will be instantiated and called as such:</span></span><br><span class="line"><span class="comment"> * LRUCache obj = new LRUCache(capacity);</span></span><br><span class="line"><span class="comment"> * int param_1 = obj.get(key);</span></span><br><span class="line"><span class="comment"> * obj.put(key,value);</span></span><br><span class="line"><span class="comment"> */</span></span><br></pre></td></tr></tbody></table></figure><hr><h3 id="技巧"><a href="#技巧" class="headerlink" title="技巧"></a>技巧</h3><h4 id="287-寻找重复数"><a href="#287-寻找重复数" class="headerlink" title="287. 寻找重复数"></a><a href="https://leetcode.cn/problems/find-the-duplicate-number/description/?envType=study-plan-v2&amp;envId=top-100-liked">287. 寻找重复数</a></h4><p>给定一个包含<code>n + 1</code>个整数的数组 nums ，其数字都在<code>[1, n]</code>范围内（包括 1 和 n），可知至少存在一个重复的整数。</p><p>假设<code>nums</code>只有 一个重复的整数 ，返回这个重复的数 。</p><p>你设计的解决方案必须 不修改数组<code>nums</code>且只用常量级<code>O(1)</code>的额外空间。</p><p><strong>示例 1：</strong></p><p><strong>输入：</strong>nums = [1,3,4,2,2]</p><p><strong>输出：</strong>2</p><p><strong>示例 2：</strong></p><p><strong>输入：</strong>nums = [3,1,3,4,2]</p><p><strong>输出：</strong>3</p><p><strong>示例 3 :</strong></p><p><strong>输入：</strong>nums = [3,3,3,3,3]</p><p><strong>输出：</strong>3</p><p><strong>提示：</strong></p><ul><li><code>1 &lt;= n &lt;= 105</code></li><li><code>nums.length == n + 1</code></li><li><code>1 &lt;= nums[i] &lt;= n</code></li><li><code>nums 中只有一个整数出现两次或多次，其余整数均只出现一次</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.util.Arrays;</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">findDuplicate</span><span class="params">(<span class="type">int</span>[] nums)</span> {</span><br><span class="line">        <span class="comment">// 往循环链表想</span></span><br><span class="line">        <span class="type">int</span> <span class="variable">slow</span> <span class="operator">=</span> nums[<span class="number">0</span>];</span><br><span class="line">        <span class="type">int</span> <span class="variable">fast</span> <span class="operator">=</span> nums[slow];</span><br><span class="line"></span><br><span class="line">        <span class="keyword">while</span>(slow != fast) {</span><br><span class="line">            slow = nums[slow];</span><br><span class="line">            fast = nums[fast];</span><br><span class="line">            fast = nums[fast];</span><br><span class="line">        }</span><br><span class="line">        <span class="comment">// 确认有环后，是把快指针放在开头，然后两个都一步一步走</span></span><br><span class="line">        fast = <span class="number">0</span>;</span><br><span class="line">        <span class="keyword">while</span>(slow != fast) {</span><br><span class="line">            slow = nums[slow];</span><br><span class="line">            fast = nums[fast];</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> fast;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><ol><li>往循环链表联想</li><li>根据访问熟悉顺序可以发现，这个访问顺序是一条循环链表，且这条循环链表循环的部分第一个节点，即是我们要找的重复的数</li><li><font color="red">慢指针一开始就放在第一个真正节点，算作走了一步，快指针一开始就放在第二个真正节点，算作走了两步，然后快慢指针按照自己的节奏走</font></li><li>那么找到循环链表的循环部分的第一个节点的步骤：<ol><li>快慢指针确认有环（这道题必定有环）</li><li>将<font color="red">快指针放到头结点（不要放在第一个真正节点了，这样做代表多走了一步）</font>，慢指针不动放在上一步确认有环的停留位置</li><li>快慢指针皆一步一步走，相同即为所求点</li></ol></li></ol><h4 id="75-颜色分类"><a href="#75-颜色分类" class="headerlink" title="75.颜色分类"></a><a href="https://leetcode.cn/problems/sort-colors/?envType=study-plan-v2&amp;envId=top-100-liked">75.颜色分类</a></h4><p>给定一个包含红色、白色和蓝色、共<code>n</code>个元素的数组<code>nums</code>，原地对它们进行排序，使得相同颜色的元素相邻，并按照红色、白色、蓝色顺序排列。</p><p>我们使用整数<code>0</code>、<code>1</code>和<code>2</code>分别表示红色、白色和蓝色。</p><p>必须在不使用库内置的 sort 函数的情况下解决这个问题。</p><p><strong>示例 1：</strong></p><p><strong>输入：</strong>nums = [2,0,2,1,1,0]</p><p><strong>输出：</strong>[0,0,1,1,2,2]</p><p><strong>示例 2：</strong></p><p><strong>输入：</strong>nums = [2,0,1]</p><p><strong>输出：</strong>[0,1,2]</p><p><strong>提示：</strong></p><ul><li><code>n == nums.length</code></li><li><code>1 &lt;= n &lt;= 300</code></li><li><code>nums[i] 为 0、1 或 2</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.util.Arrays;</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">sortColors</span><span class="params">(<span class="type">int</span>[] nums)</span> {</span><br><span class="line">        <span class="type">int</span>[] data = <span class="keyword">new</span> <span class="title class_">int</span>[<span class="number">3</span>];</span><br><span class="line">        Arrays.stream(nums).forEach(num -&gt; {data[num]++;});</span><br><span class="line">        <span class="type">int</span> <span class="variable">index</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; <span class="number">3</span>; i++) {</span><br><span class="line">            <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">j</span> <span class="operator">=</span> <span class="number">0</span>; j &lt; data[i]; j++) {</span><br><span class="line">                nums[index++] = i;</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><blockquote><p>学习下stream流简便写法吧</p></blockquote><h4 id="31-下一个排列"><a href="#31-下一个排列" class="headerlink" title="31.下一个排列"></a><a href="https://leetcode.cn/problems/next-permutation/description/?envType=study-plan-v2&amp;envId=top-100-liked">31.下一个排列</a></h4><p>整数数组的一个<strong>排列</strong>就是将其所有成员以序列或线性顺序排列。</p><ul><li>例如，arr =<code>[1,2,3]</code> ，以下这些都可以视作 arr 的排列：[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。</li></ul><p>整数数组的<strong>下一个排列</strong>是指其整数的下一个字典序更大的排列。更正式地，如果数组的所有排列根据其字典顺序从小到大排列在一个容器中，那么数组的<strong>下一个排列</strong>就是在这个有序容器中排在它后面的那个排列。如果不存在下一个更大的排列，那么这个数组必须重排为字典序最小的排列（即，其元素按升序排列）。</p><ul><li>例如，arr = [1,2,3] 的下一个排列是 [1,3,2] 。</li><li>类似地，arr = [2,3,1] 的下一个排列是 [3,1,2] 。</li><li>而 arr = [3,2,1] 的下一个排列是 [1,2,3] ，因为 [3,2,1] 不存在一个字典序更大的排列。</li></ul><p>给你一个整数数组<code>nums</code>，找出<code>nums</code>的下一个排列。</p><p>必须<a href="https://baike.baidu.com/item/%E5%8E%9F%E5%9C%B0%E7%AE%97%E6%B3%95">原地算法</a>修改，只允许使用额外常数空间。</p><p><strong>示例 1：</strong></p><p><strong>输入：</strong>nums = [1,2,3]</p><p><strong>输出：</strong>[1,3,2]</p><p><strong>示例 2：</strong></p><p><strong>输入：</strong>nums = [3,2,1]</p><p><strong>输出：</strong>[1,2,3]</p><p><strong>示例 3：</strong></p><p><strong>输入：</strong>nums = [1,1,5]</p><p><strong>输出：</strong>[1,5,1]</p><p><strong>提示：</strong></p><ul><li><p><code>1 &lt;= nums.length &lt;= 100</code></p></li><li><p><code>0 &lt;= nums[i] &lt;= 100</code></p></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="comment">// 举例如：12354 需要得到下一个排列是 12435</span></span><br><span class="line">    <span class="comment">// 分以下三步 </span></span><br><span class="line">    <span class="comment">// 1.从尾到头，找到第一个升序相邻对 position 和 position+1 , 即 12354 找到 3 和 5</span></span><br><span class="line">    <span class="comment">// 2.从position位置到尾，找到第一个大于position的数来交换，即 3 和 4 交换，12354 变为  12453</span></span><br><span class="line">    <span class="comment">// 3.从position+1 位置到尾，进行排序，使得剩余的尾部从小到大，达到最小状态，即排序 53 后 12453 变为  12435</span></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">nextPermutation</span><span class="params">(<span class="type">int</span>[] nums)</span> {</span><br><span class="line">        <span class="keyword">if</span>(nums == <span class="literal">null</span> || nums.length == <span class="number">1</span>) <span class="keyword">return</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">position</span> <span class="operator">=</span> -<span class="number">1</span>;</span><br><span class="line">        <span class="comment">// 第一步找到position</span></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> nums.length - <span class="number">2</span>; i &gt;= <span class="number">0</span>; i--) {</span><br><span class="line">            <span class="keyword">if</span>(nums[i] &lt; nums[i+<span class="number">1</span>]) {</span><br><span class="line">                position = i;</span><br><span class="line">                <span class="keyword">break</span>;</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">if</span>(position == -<span class="number">1</span>) {</span><br><span class="line">            <span class="comment">// 说明一直是降序</span></span><br><span class="line">            Arrays.sort(nums);</span><br><span class="line">            <span class="keyword">return</span>;</span><br><span class="line">        }</span><br><span class="line">        <span class="comment">// 第二步找到尾部第一个大于nums[position]的数交换</span></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> nums.length - <span class="number">1</span>; i &gt; position; i--) {</span><br><span class="line">            <span class="keyword">if</span>(nums[i] &gt; nums[position]) {</span><br><span class="line">                <span class="type">int</span> <span class="variable">temp</span> <span class="operator">=</span> nums[i];</span><br><span class="line">                nums[i] = nums[position];</span><br><span class="line">                nums[position] = temp;</span><br><span class="line">                <span class="keyword">break</span>;</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="comment">// 第三步，排序 postion + 1 到尾部</span></span><br><span class="line">      <span class="comment">// 这里编码的时候出过错，得排序 position + 1 的位置，写快了，容易忘了是position下一个位置</span></span><br><span class="line">        Arrays.sort(nums, position + <span class="number">1</span>, nums.length);</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><blockquote><p>核心的思路就是：下一个排列，意味着尽量在尾部找更好，找到该变换的位置，接着找到这个位置代表的数往后面第一个大的数交换，随后排序这个位置往后的部分即可以达到题目所求。</p></blockquote><ol><li>第一步从尾部往前找到<font color="blue">第一个</font><font color="green">升序</font><font color="red">相邻对</font><ol><li>有这样的<font color="green">升序</font>相邻对，意味着，这样才能通过变化，找到更大的数，如果找不到，就说明就是个降序数，下一个排列就是从小到大</li><li><font color="blue">第一个</font>：因为我们找的是下一个排列，所以越靠近尾部越好</li><li><font color="red">相邻对</font>：因为判断相邻就能表示尾部可以变化来达到题意，至于到底交换哪个更大的数，到第二步去完成。</li></ol></li><li>第二步找到尾部第一个大于nums[position]的数，从尾部往前循环第一个大的数就是，这是因为在第一步找的就是<font color="blue">第一个</font>升序相邻对，这个标准意味着，从尾部往前循环的话，不会出现这个第一个大的数在中间的情况。</li><li>第三步 只需要排序 剩余的尾部，达到下一个排序的要求</li></ol><h4 id="136-只出现一次的数字"><a href="#136-只出现一次的数字" class="headerlink" title="136.只出现一次的数字"></a><a href="https://leetcode.cn/problems/single-number/description/?envType=study-plan-v2&amp;envId=top-100-liked">136.只出现一次的数字</a></h4><p>给你一个<strong>非空</strong>整数数组<code>nums</code>，除了某个元素只出现一次以外，其余每个元素均出现两次。找出那个只出现了一次的元素。</p><p>你必须设计并实现线性时间复杂度的算法来解决此问题，且该算法只使用常量额外空间。</p><p><strong>示例 1 ：</strong></p><p><strong>输入：</strong>nums = [2,2,1]</p><p><strong>输出：</strong>1</p><p><strong>示例 2 ：</strong></p><p><strong>输入：</strong>nums = [4,1,2,1,2]</p><p><strong>输出：</strong>4</p><p><strong>示例 3 ：</strong></p><p><strong>输入：</strong>nums = [1]</p><p><strong>输出：</strong>1</p><p><strong>提示：</strong></p><ul><li><code>1 &lt;= nums.length &lt;= 3 * 104</code></li><li><code>-3 * 104 &lt;= nums[i] &lt;= 3 * 104</code></li><li><code>除了某个元素只出现一次以外，其余每个元素均出现两次。</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">singleNumber</span><span class="params">(<span class="type">int</span>[] nums)</span> {</span><br><span class="line">        <span class="type">int</span> <span class="variable">result</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> num : nums) result ^= num;</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="169-多数元素"><a href="#169-多数元素" class="headerlink" title="169. 多数元素"></a><a href="https://leetcode.cn/problems/majority-element/?envType=study-plan-v2&amp;envId=top-100-liked">169. 多数元素</a></h4><p>给定一个大小为<code>n</code>的数组<code>nums</code>，返回其中的多数元素。多数元素是指在数组中出现次数<strong>大于</strong><code>⌊n/2⌋</code>的元素。</p><p>你可以假设数组是非空的，并且给定的数组总是存在多数元素。</p><p><strong>示例 1：</strong></p><p><strong>输入：</strong>nums = [3,2,3]</p><p><strong>输出：</strong>3<strong>示例 2：</strong></p><p><strong>输入：</strong>nums = [2,2,1,1,1,2,2]</p><p><strong>输出：</strong>2</p><p><strong>提示：</strong></p><ul><li><code>n == nums.length</code></li><li><code>1 &lt;= n &lt;= 5 * 104</code></li><li><code>109 &lt;= nums[i] &lt;= 109</code></li></ul><h5 id="hashMap解法"><a href="#hashMap解法" class="headerlink" title="hashMap解法"></a>hashMap解法</h5><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.util.HashMap;</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">majorityElement</span><span class="params">(<span class="type">int</span>[] nums)</span> {</span><br><span class="line">        HashMap&lt;Integer, Integer&gt; hashMap = <span class="keyword">new</span> <span class="title class_">HashMap</span>&lt;&gt;();</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; nums.length; i++) {</span><br><span class="line">            <span class="keyword">if</span>(hashMap.containsKey(nums[i])) {</span><br><span class="line">                hashMap.put(nums[i], hashMap.get(nums[i]) + <span class="number">1</span>);</span><br><span class="line">                <span class="keyword">if</span>(hashMap.get(nums[i]) &gt; nums.length / <span class="number">2</span>) {</span><br><span class="line">                    <span class="keyword">return</span> nums[i];</span><br><span class="line">                }</span><br><span class="line">            } <span class="keyword">else</span> {</span><br><span class="line">                hashMap.put(nums[i], <span class="number">1</span>);</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> nums[<span class="number">0</span>];</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h5 id="进阶：摩尔投票解法"><a href="#进阶：摩尔投票解法" class="headerlink" title="进阶：摩尔投票解法"></a>进阶：摩尔投票解法</h5><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="comment">// 通常可以用hashMap，学习下空间复杂度O(1)的摩尔投票</span></span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">majorityElement</span><span class="params">(<span class="type">int</span>[] nums)</span> {</span><br><span class="line">        <span class="type">int</span> <span class="variable">mayNum</span> <span class="operator">=</span> <span class="number">0</span>, votes = <span class="number">0</span>;</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> num : nums) {</span><br><span class="line">            <span class="comment">// 每一轮循环都会去判断votes是否等于0</span></span><br><span class="line">            <span class="comment">// 等于0意味着可以这是新选择一个mayNum</span></span><br><span class="line">            <span class="keyword">if</span>(votes == <span class="number">0</span>) mayNum = num;</span><br><span class="line">            <span class="comment">// 找众数，只有mayNum才去+1，否则都-1</span></span><br><span class="line">            votes += (num == mayNum ? <span class="number">1</span> : -<span class="number">1</span>);</span><br><span class="line">            <span class="comment">// 不断地重新判断mayNum</span></span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> mayNum;</span><br><span class="line">    }</span><br><span class="line">}</span><br><span class="line"></span><br></pre></td></tr></tbody></table></figure><hr><h3 id="多维动态规划"><a href="#多维动态规划" class="headerlink" title="多维动态规划"></a>多维动态规划</h3><h4 id="62-不同路径"><a href="#62-不同路径" class="headerlink" title="62.不同路径"></a><a href="https://leetcode.cn/problems/unique-paths/description/?envType=study-plan-v2&amp;envId=top-100-liked">62.不同路径</a></h4><p>一个机器人位于一个<code>m x n</code>网格的左上角 （起始点在下图中标记为 “Start” ）。</p><p>机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角（在下图中标记为 “Finish” ）。</p><p>问总共有多少条不同的路径？</p><p><strong>示例 1：</strong></p><p><strong>输入：</strong>m = 3, n = 7</p><p><strong>输出：</strong>28</p><p><strong>示例 2：</strong></p><p><strong>输入：</strong>m = 3, n = 2</p><p><strong>输出：</strong>3</p><p><strong>解释：</strong></p><p>从左上角开始，总共有 3 条路径可以到达右下角。</p><ol><li>向右 -&gt; 向下 -&gt; 向下</li><li>向下 -&gt; 向下 -&gt; 向右</li><li>向下 -&gt; 向右 -&gt; 向下</li></ol><p><strong>示例 3：</strong></p><p><strong>输入：</strong>m = 7, n = 3</p><p><strong>输出：</strong>28</p><p><strong>示例 4：</strong></p><p><strong>输入：</strong>m = 3, n = 3</p><p><strong>输出：</strong>6 </p><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">uniquePaths</span><span class="params">(<span class="type">int</span> m, <span class="type">int</span> n)</span> {</span><br><span class="line">        <span class="type">int</span> <span class="variable">rows</span> <span class="operator">=</span> m;</span><br><span class="line">        <span class="type">int</span> <span class="variable">cols</span> <span class="operator">=</span> n;</span><br><span class="line">        <span class="type">int</span>[][] dp = <span class="keyword">new</span> <span class="title class_">int</span>[rows][cols];</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">row</span> <span class="operator">=</span> <span class="number">0</span>; row &lt; rows; row++) {</span><br><span class="line">            <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">col</span> <span class="operator">=</span> <span class="number">0</span>; col &lt; cols; col++) {</span><br><span class="line">                <span class="keyword">if</span>(row == <span class="number">0</span> || col == <span class="number">0</span>) {</span><br><span class="line">                    dp[row][col] = <span class="number">1</span>;</span><br><span class="line">                } <span class="keyword">else</span> {</span><br><span class="line">                    dp[row][col] = dp[row-<span class="number">1</span>][col] + dp[row][col-<span class="number">1</span>];</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> dp[m-<span class="number">1</span>][n-<span class="number">1</span>];</span><br><span class="line">    }</span><br><span class="line">}</span><br><span class="line"></span><br></pre></td></tr></tbody></table></figure><h4 id="64-最小路径和"><a href="#64-最小路径和" class="headerlink" title="64. 最小路径和"></a><a href="https://leetcode.cn/problems/minimum-path-sum/?envType=study-plan-v2&amp;envId=top-100-liked">64. 最小路径和</a></h4><p>给定一个包含非负整数的 <code>mxn</code> 网格<code>grid</code>，请找出一条从左上角到右下角的路径，使得路径上的数字总和为最小。</p><p><strong>说明：</strong>每次只能向下或者向右移动一步。</p><p><strong>示例 1：</strong></p><p><strong>输入：</strong>grid = [[1,3,1],[1,5,1],[4,2,1]]</p><p><strong>输出：</strong>7</p><p><strong>解释：</strong>因为路径 1→3→1→1→1 的总和最小。</p><p><strong>示例 2：</strong></p><p><strong>输入：</strong>grid = [[1,2,3],[4,5,6]]</p><p><strong>输出：</strong>12</p><p><strong>提示：</strong></p><ul><li><code>m == grid.length</code></li><li><code>n == grid[i].length</code></li><li><code>1 &lt;= m, n &lt;= 200</code></li><li><code>0 &lt;= grid[i][j] &lt;= 200</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">minPathSum</span><span class="params">(<span class="type">int</span>[][] grid)</span> {</span><br><span class="line"></span><br><span class="line">        <span class="type">int</span> <span class="variable">rows</span> <span class="operator">=</span> grid.length;</span><br><span class="line">        <span class="type">int</span> <span class="variable">cols</span> <span class="operator">=</span> grid[<span class="number">0</span>].length;</span><br><span class="line">        <span class="type">int</span>[][] dp = <span class="keyword">new</span> <span class="title class_">int</span>[rows][cols];</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">row</span> <span class="operator">=</span> <span class="number">0</span>; row &lt; rows; row++) {</span><br><span class="line">            <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">col</span> <span class="operator">=</span> <span class="number">0</span>; col &lt; cols; col++) {</span><br><span class="line">                <span class="keyword">if</span>(row == <span class="number">0</span> &amp;&amp; col == <span class="number">0</span>) {</span><br><span class="line">                    dp[row][col] = grid[row][col];</span><br><span class="line">                } <span class="keyword">else</span> <span class="keyword">if</span>(row == <span class="number">0</span> || col == <span class="number">0</span>) {</span><br><span class="line">                    <span class="keyword">if</span>(row == <span class="number">0</span>) {</span><br><span class="line">                        dp[row][col] = dp[row][col-<span class="number">1</span>] + grid[row][col];</span><br><span class="line">                    } <span class="keyword">else</span> {</span><br><span class="line">                        dp[row][col] = dp[row-<span class="number">1</span>][col] + grid[row][col];</span><br><span class="line">                    }</span><br><span class="line">                } <span class="keyword">else</span> {</span><br><span class="line">                    dp[row][col] = Math.min(dp[row-<span class="number">1</span>][col], dp[row][col-<span class="number">1</span>]);</span><br><span class="line">                    dp[row][col] += grid[row][col];</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> dp[rows-<span class="number">1</span>][cols-<span class="number">1</span>];</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="5-最长回文子串"><a href="#5-最长回文子串" class="headerlink" title="5.最长回文子串"></a><a href="https://leetcode.cn/problems/longest-palindromic-substring/description/?envType=study-plan-v2&amp;envId=top-100-liked">5.最长回文子串</a></h4><p>给你一个字符串 s，找到 s 中最长的 回文子串。</p><p><strong>示例 1：</strong></p><p><strong>输入：</strong>s = “babad”</p><p><strong>输出：</strong>“bab”</p><p><strong>解释：</strong>“aba” 同样是符合题意的答案。</p><p><strong>示例 2：</strong></p><p><strong>输入：</strong>s = “cbbd”</p><p><strong>输出：</strong>“bb”</p><p><strong>提示：</strong></p><ul><li>1 &lt;= s.length &lt;= 1000</li><li>s 仅由数字和英文字母组成</li></ul><h5 id="中心扩散解法"><a href="#中心扩散解法" class="headerlink" title="中心扩散解法"></a>中心扩散解法</h5><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> String <span class="title function_">longestPalindrome</span><span class="params">(String s)</span> {</span><br><span class="line"></span><br><span class="line">        <span class="type">String</span> <span class="variable">result</span> <span class="operator">=</span> <span class="string">""</span>;</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; s.length(); i++) {</span><br><span class="line">            <span class="comment">// 以单个为中心的回文串，计算长度</span></span><br><span class="line">            <span class="type">String</span> <span class="variable">tempResult</span> <span class="operator">=</span> get(s, i, i);</span><br><span class="line">            <span class="keyword">if</span>(i &lt; s.length() - <span class="number">1</span> &amp;&amp; s.charAt(i) == s.charAt(i+<span class="number">1</span>)) {</span><br><span class="line">                <span class="comment">// 如果是成对为中心的回文串，去计算长度</span></span><br><span class="line">                <span class="type">String</span> <span class="variable">tempResult1</span> <span class="operator">=</span> get(s, i, i + <span class="number">1</span>);</span><br><span class="line">                tempResult = tempResult.length() &gt; tempResult1.length() ? tempResult : tempResult1;</span><br><span class="line">            }</span><br><span class="line"></span><br><span class="line">            <span class="keyword">if</span>(tempResult.length() &gt; result.length()) {</span><br><span class="line">                result = tempResult;</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> String <span class="title function_">get</span><span class="params">(String s, <span class="type">int</span> left, <span class="type">int</span> right)</span> {</span><br><span class="line">   </span><br><span class="line">        <span class="keyword">while</span>(left - <span class="number">1</span> &gt;= <span class="number">0</span> &amp;&amp; right + <span class="number">1</span> &lt; s.length()) {</span><br><span class="line">            <span class="keyword">if</span>(s.charAt(left - <span class="number">1</span>) != s.charAt(right + <span class="number">1</span>)) {</span><br><span class="line">                <span class="keyword">break</span>;</span><br><span class="line">            }</span><br><span class="line">            left--;</span><br><span class="line">            right++;</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> s.substring(left, right + <span class="number">1</span>);</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h5 id="dp解法"><a href="#dp解法" class="headerlink" title="dp解法"></a>dp解法</h5><p>学习下动态规划解决方法</p><p>boolean dp[l][r] 表示字符串从 i 到 j 这段是否为回文。试想如果 dp[l][r]=true，我们要判断 dp[l-1][r+1] 是否为回文。只需要判断字符串在(l-1)和（r+1)两个位置是否为相同的字符</p><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">public</span> String <span class="title function_">longestPalindrome</span><span class="params">(String s)</span> {</span><br><span class="line">        <span class="keyword">if</span> (s == <span class="literal">null</span> || s.length() &lt; <span class="number">2</span>) {</span><br><span class="line">            <span class="keyword">return</span> s;</span><br><span class="line">        }</span><br><span class="line">        <span class="type">int</span> <span class="variable">strLen</span> <span class="operator">=</span> s.length();</span><br><span class="line">        <span class="type">int</span> <span class="variable">maxStart</span> <span class="operator">=</span> <span class="number">0</span>;  <span class="comment">//最长回文串的起点</span></span><br><span class="line">        <span class="type">int</span> <span class="variable">maxEnd</span> <span class="operator">=</span> <span class="number">0</span>;    <span class="comment">//最长回文串的终点</span></span><br><span class="line">        <span class="type">int</span> <span class="variable">maxLen</span> <span class="operator">=</span> <span class="number">1</span>;  <span class="comment">//最长回文串的长度</span></span><br><span class="line"></span><br><span class="line">        <span class="type">boolean</span>[][] dp = <span class="keyword">new</span> <span class="title class_">boolean</span>[strLen][strLen];</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span> (<span class="type">int</span> <span class="variable">r</span> <span class="operator">=</span> <span class="number">1</span>; r &lt; strLen; r++) {</span><br><span class="line">            <span class="keyword">for</span> (<span class="type">int</span> <span class="variable">l</span> <span class="operator">=</span> <span class="number">0</span>; l &lt; r; l++) {</span><br><span class="line">                <span class="keyword">if</span> (s.charAt(l) == s.charAt(r) &amp;&amp; (r - l &lt;= <span class="number">2</span> || dp[l + <span class="number">1</span>][r - <span class="number">1</span>])) {</span><br><span class="line">                    dp[l][r] = <span class="literal">true</span>;</span><br><span class="line">                    <span class="keyword">if</span> (r - l + <span class="number">1</span> &gt; maxLen) {</span><br><span class="line">                        maxLen = r - l + <span class="number">1</span>;</span><br><span class="line">                        maxStart = l;</span><br><span class="line">                        maxEnd = r;</span><br><span class="line"></span><br><span class="line">                    }</span><br><span class="line">                }</span><br><span class="line"></span><br><span class="line">            }</span><br><span class="line"></span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> s.substring(maxStart, maxEnd + <span class="number">1</span>);</span><br><span class="line"></span><br><span class="line">    }</span><br><span class="line"></span><br></pre></td></tr></tbody></table></figure><h4 id="1143-最长公共子序列"><a href="#1143-最长公共子序列" class="headerlink" title="1143. 最长公共子序列"></a><a href="https://leetcode.cn/problems/longest-common-subsequence/description/?envType=study-plan-v2&amp;envId=top-100-liked">1143. 最长公共子序列</a></h4><p>给定两个字符串<code>text1</code>和<code>text2</code>，返回这两个字符串的最长<code>公共子序列</code>的长度。如果不存在<code>公共子序列</code>，返回 0 。</p><p>一个字符串的<code>子序列</code>是指这样一个新的字符串：它是由原字符串在不改变字符的相对顺序的情况下删除某些字符（也可以不删除任何字符）后组成的新字符串。</p><ul><li>例如，”ace” 是”abcde”的子序列，但 “aec” 不是”abcde” 的子序列。</li></ul><p>两个字符串的<code>公共子序列</code>是这两个字符串所共同拥有的子序列。</p><p><strong>示例 1：</strong></p><p><strong>输入：</strong>text1 = “abcde”, text2 = “ace” </p><p><strong>输出：</strong>3  </p><p><strong>解释：</strong>最长公共子序列是 “ace” ，它的长度为 3 。</p><p><strong>示例 2：</strong></p><p><strong>输入：</strong>text1 = “abc”, text2 = “abc”</p><p><strong>输出：</strong>3</p><p><strong>解释：</strong>最长公共子序列是 “abc” ，它的长度为 3 。</p><p><strong>示例 3：</strong></p><p><strong>输入：</strong>text1 = “abc”, text2 = “def”</p><p><strong>输出：</strong>0</p><p><strong>解释：</strong>两个字符串没有公共子序列，返回 0 。</p><p><strong>提示：</strong></p><ul><li><code>1 &lt;= text1.length, text2.length &lt;= 1000</code></li><li><code>text1 和 text2 仅由小写英文字符组成。</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">longestCommonSubsequence</span><span class="params">(String text1, String text2)</span> {</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 使用二维数组来表示，dp[i][j] 表示 到第一个字符串 的第i个位置 到第二个字符串 的 第j个位置的 匹配情况</span></span><br><span class="line">        <span class="type">int</span>[][] dp = <span class="keyword">new</span> <span class="title class_">int</span>[text1.length() + <span class="number">1</span>][text2.length() + <span class="number">1</span>];</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">1</span>; i &lt;= text1.length(); i++) {</span><br><span class="line">            <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">j</span> <span class="operator">=</span> <span class="number">1</span>; j &lt;= text2.length(); j++) {</span><br><span class="line">                <span class="keyword">if</span>(text1.charAt(i-<span class="number">1</span>) == text2.charAt(j-<span class="number">1</span>)) {</span><br><span class="line">                    dp[i][j] = dp[i-<span class="number">1</span>][j-<span class="number">1</span>] + <span class="number">1</span>;</span><br><span class="line">                } <span class="keyword">else</span> {</span><br><span class="line">                    dp[i][j] = Math.max(dp[i-<span class="number">1</span>][j], dp[i][j-<span class="number">1</span>]);</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> dp[text1.length()][text2.length()];</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="72-编辑距离"><a href="#72-编辑距离" class="headerlink" title="72.编辑距离"></a><a href="https://leetcode.cn/problems/edit-distance/description/?envType=study-plan-v2&amp;envId=top-100-liked">72.编辑距离</a></h4><p>给你两个单词<code>word1</code>和 <code>word2</code>， <em>请返回将</em> <code>word1</code><em>转换成<code>word2</code>所使用的最少操作数</em>  。</p><p>你可以对一个单词进行如下三种操作：</p><ul><li>插入一个字符</li><li>删除一个字符</li><li>替换一个字符</li></ul><p><strong>示例 1：</strong></p><p><strong>输入：</strong>word1 = “horse”, word2 = “ros”</p><p><strong>输出：</strong>3</p><p><strong>解释：</strong></p><p>horse -&gt; rorse (将 ‘h’ 替换为 ‘r’)</p><p>rorse -&gt; rose (删除 ‘r’)</p><p>rose -&gt; ros (删除 ‘e’)</p><p><strong>示例 2：</strong></p><p><strong>输入：</strong>word1 = “intention”, word2 = “execution”</p><p><strong>输出：</strong>5</p><p><strong>解释：</strong></p><p>intention -&gt; inention (删除 ‘t’)</p><p>inention -&gt; enention (将 ‘i’ 替换为 ‘e’)</p><p>enention -&gt; exention (将 ‘n’ 替换为 ‘x’)</p><p>exention -&gt; exection (将 ‘n’ 替换为 ‘c’)</p><p>exection -&gt; execution (插入 ‘u’)</p><p><strong>提示：</strong></p><ul><li><code>0 &lt;= word1.length, word2.length &lt;= 500</code></li><li><code>word1 和 word2 由小写英文字母组成</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">minDistance</span><span class="params">(String word1, String word2)</span> {</span><br><span class="line">        <span class="type">int</span> <span class="variable">m</span> <span class="operator">=</span> word1.length();</span><br><span class="line">        <span class="type">int</span> <span class="variable">n</span> <span class="operator">=</span> word2.length();</span><br><span class="line"></span><br><span class="line">        <span class="comment">// dp[2][3] 的含义 就是 word1 的 前2位 到 word2 的 前3位，要两者相同的 最小变化数目</span></span><br><span class="line">        <span class="type">int</span>[][] dp = <span class="keyword">new</span> <span class="title class_">int</span>[m + <span class="number">1</span>][n + <span class="number">1</span>];</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt;= m; i++) {</span><br><span class="line">            <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">j</span> <span class="operator">=</span> <span class="number">0</span>; j &lt;= n; j++) {</span><br><span class="line">                <span class="comment">// 一方为 0 的情况，也就是长度为0，那么自然另一方就需要 添加操作，添加到这个长度</span></span><br><span class="line">                <span class="keyword">if</span>(i == <span class="number">0</span>) {</span><br><span class="line">                    dp[i][j] = j;</span><br><span class="line">                } <span class="keyword">else</span> <span class="keyword">if</span>(j == <span class="number">0</span>) {</span><br><span class="line">                    dp[i][j] = i;</span><br><span class="line">                } <span class="keyword">else</span> {</span><br><span class="line">                    <span class="comment">// 如果不相同那么需要 进行一步 操作来相同</span></span><br><span class="line">                    <span class="type">int</span> <span class="variable">changeFlag</span> <span class="operator">=</span> word1.charAt(i-<span class="number">1</span>) == word2.charAt(j-<span class="number">1</span>) ? <span class="number">0</span> : <span class="number">1</span>;</span><br><span class="line">                    </span><br><span class="line">                    <span class="comment">// 当changeFlag = 0  dp[i-1][j-1] + changeFlag = dp[i-1][j-1] 代表相同，不需要操作</span></span><br><span class="line">                    <span class="comment">// 当changeFlag = 1  dp[i-1][j-1] + changeFlag = dp[i-1][j-1] 代表编辑操作</span></span><br><span class="line">                    <span class="comment">// dp[i-1][j] + 1 代表 插入操作</span></span><br><span class="line">                    <span class="comment">// dp[i][j-1] + 1 代表 删除操作，dp[i][j]依然保存的是dp[i][j-1]的值 再加上做一次删除操作的 1 步</span></span><br><span class="line">                    <span class="comment">// 以上的所有判断，都会保存下来状态，下一轮都会用来判断</span></span><br><span class="line">                    dp[i][j] = Math.min(dp[i-<span class="number">1</span>][j-<span class="number">1</span>] + changeFlag,</span><br><span class="line">                                            Math.min(dp[i-<span class="number">1</span>][j] + <span class="number">1</span>, dp[i][j-<span class="number">1</span>] + <span class="number">1</span>));</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> dp[m][n];</span><br><span class="line">    }</span><br><span class="line">}</span><br><span class="line"></span><br></pre></td></tr></tbody></table></figure><hr><h3 id="动态规划"><a href="#动态规划" class="headerlink" title="动态规划"></a>动态规划</h3><h4 id="70-爬楼梯"><a href="#70-爬楼梯" class="headerlink" title="70. 爬楼梯"></a><a href="https://leetcode.cn/problems/climbing-stairs/">70. 爬楼梯</a></h4><p>假设你正在爬楼梯。需要 <code>n</code> 阶你才能到达楼顶。</p><p>每次你可以爬 <code>1</code> 或 <code>2</code> 个台阶。你有多少种不同的方法可以爬到楼顶呢？</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">输入：n = 2</span><br><span class="line">输出：2</span><br><span class="line">解释：有两种方法可以爬到楼顶。</span><br><span class="line">1. 1 阶 + 1 阶</span><br><span class="line">2. 2 阶</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">输入：n = 3</span><br><span class="line">输出：3</span><br><span class="line">解释：有三种方法可以爬到楼顶。</span><br><span class="line">1. 1 阶 + 1 阶 + 1 阶</span><br><span class="line">2. 1 阶 + 2 阶</span><br><span class="line">3. 2 阶 + 1 阶</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= n &lt;= 45</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">climbStairs</span><span class="params">(<span class="type">int</span> n)</span> {</span><br><span class="line">        <span class="keyword">if</span>(n &lt;= <span class="number">2</span>) <span class="keyword">return</span> n;</span><br><span class="line">        <span class="type">int</span>[] dp = <span class="keyword">new</span> <span class="title class_">int</span>[n+<span class="number">1</span>];</span><br><span class="line">        dp[<span class="number">0</span>] = <span class="number">0</span>;</span><br><span class="line">        dp[<span class="number">1</span>] = <span class="number">1</span>;</span><br><span class="line">        dp[<span class="number">2</span>] = <span class="number">2</span>;</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">3</span>; i &lt;= n; i++) {</span><br><span class="line">            dp[i] = dp[i-<span class="number">1</span>] + dp[i-<span class="number">2</span>];</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> dp[n];</span><br><span class="line">    }</span><br><span class="line">}</span><br><span class="line"></span><br></pre></td></tr></tbody></table></figure><h4 id="118-杨辉三角"><a href="#118-杨辉三角" class="headerlink" title="118. 杨辉三角"></a><a href="https://leetcode.cn/problems/pascals-triangle/">118. 杨辉三角</a></h4><p>给定一个非负整数 <em><code>numRows</code>，</em>生成「杨辉三角」的前 <em><code>numRows</code></em> 行。</p><p>在「杨辉三角」中，每个数是它左上方和右上方的数的和。</p><p><strong>示例 1:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入: numRows = 5</span><br><span class="line">输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入: numRows = 1</span><br><span class="line">输出: [[1]]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示:</strong></p><ul><li><code>1 &lt;= numRows &lt;= 30</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> List&lt;List&lt;Integer&gt;&gt; <span class="title function_">generate</span><span class="params">(<span class="type">int</span> numRows)</span> {</span><br><span class="line">        List&lt;List&lt;Integer&gt;&gt; result = <span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;();</span><br><span class="line">        result.add(List.of(<span class="number">1</span>));</span><br><span class="line">        <span class="keyword">if</span>(numRows == <span class="number">1</span>) <span class="keyword">return</span> result;</span><br><span class="line">        result.add(List.of(<span class="number">1</span>, <span class="number">1</span>));</span><br><span class="line">        <span class="keyword">if</span>(numRows == <span class="number">2</span>) <span class="keyword">return</span> result;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">3</span>; i &lt;= numRows; i++) {</span><br><span class="line">            List&lt;Integer&gt; pre = result.get(i - <span class="number">2</span>);</span><br><span class="line">            List&lt;Integer&gt; newList = <span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;();</span><br><span class="line">            <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">j</span> <span class="operator">=</span> <span class="number">0</span>; j &lt; i; j++) {</span><br><span class="line">                <span class="keyword">if</span>(j == <span class="number">0</span> || j == i-<span class="number">1</span>) {</span><br><span class="line">                    newList.add(<span class="number">1</span>);</span><br><span class="line">                } <span class="keyword">else</span> {</span><br><span class="line">                    newList.add(pre.get(j-<span class="number">1</span>) + pre.get(j));</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">            result.add(newList);</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="198-打家劫舍"><a href="#198-打家劫舍" class="headerlink" title="198. 打家劫舍"></a><a href="https://leetcode.cn/problems/house-robber/">198. 打家劫舍</a></h4><p>你是一个专业的小偷，计划偷窃沿街的房屋。每间房内都藏有一定的现金，影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统，<strong>如果两间相邻的房屋在同一晚上被小偷闯入，系统会自动报警</strong>。</p><p>给定一个代表每个房屋存放金额的非负整数数组，计算你<strong>不触动警报装置的情况下</strong> ，一夜之内能够偷窃到的最高金额。</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">输入：[1,2,3,1]</span><br><span class="line">输出：4</span><br><span class="line">解释：偷窃 1 号房屋 (金额 = 1) ，然后偷窃 3 号房屋 (金额 = 3)。</span><br><span class="line">     偷窃到的最高金额 = 1 + 3 = 4 。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">输入：[2,7,9,3,1]</span><br><span class="line">输出：12</span><br><span class="line">解释：偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9)，接着偷窃 5 号房屋 (金额 = 1)。</span><br><span class="line">     偷窃到的最高金额 = 2 + 9 + 1 = 12 。</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= nums.length &lt;= 100</code></li><li><code>0 &lt;= nums[i] &lt;= 400</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">rob</span><span class="params">(<span class="type">int</span>[] nums)</span> {</span><br><span class="line">        </span><br><span class="line">        <span class="type">int</span>[] dp = <span class="keyword">new</span> <span class="title class_">int</span>[nums.length];</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; nums.length; i++) {</span><br><span class="line">            <span class="keyword">if</span>(i == <span class="number">0</span>) {</span><br><span class="line">                dp[i] = nums[i];</span><br><span class="line">            } <span class="keyword">else</span> <span class="keyword">if</span>(i == <span class="number">1</span>) {</span><br><span class="line">                dp[i] = Math.max(nums[<span class="number">0</span>], nums[<span class="number">1</span>]);</span><br><span class="line">            } <span class="keyword">else</span> {</span><br><span class="line">                dp[i] = Math.max(dp[i-<span class="number">1</span>], dp[i-<span class="number">2</span>] + nums[i]);</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> dp[nums.length - <span class="number">1</span>];</span><br><span class="line">    }</span><br><span class="line">}</span><br><span class="line"></span><br></pre></td></tr></tbody></table></figure><h4 id="279-完全平方数"><a href="#279-完全平方数" class="headerlink" title="279. 完全平方数"></a><a href="https://leetcode.cn/problems/perfect-squares/">279. 完全平方数</a></h4><p>给你一个整数 <code>n</code> ，返回 <em>和为 <code>n</code> 的完全平方数的最少数量</em> 。</p><p><strong>完全平方数</strong> 是一个整数，其值等于另一个整数的平方；换句话说，其值等于一个整数自乘的积。例如，<code>1</code>、<code>4</code>、<code>9</code> 和 <code>16</code> 都是完全平方数，而 <code>3</code> 和 <code>11</code> 不是。</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：n = 12</span><br><span class="line">输出：3 </span><br><span class="line">解释：12 = 4 + 4 + 4</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：n = 13</span><br><span class="line">输出：2</span><br><span class="line">解释：13 = 4 + 9</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= n &lt;= 104</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">numSquares</span><span class="params">(<span class="type">int</span> n)</span> {</span><br><span class="line">        <span class="keyword">if</span>(n == <span class="number">0</span>) <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">        <span class="type">int</span>[] dp = <span class="keyword">new</span> <span class="title class_">int</span>[n+<span class="number">1</span>];</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">num</span> <span class="operator">=</span> <span class="number">1</span>; num &lt;= n; num++) {</span><br><span class="line">            dp[num] = num;</span><br><span class="line">            <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">j</span> <span class="operator">=</span> <span class="number">1</span>; j * j &lt;= num; j++) {</span><br><span class="line">                dp[num] = Math.min(dp[num], dp[num - j*j] + <span class="number">1</span>);</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> dp[n];</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="322-零钱兑换"><a href="#322-零钱兑换" class="headerlink" title="322. 零钱兑换"></a><a href="https://leetcode.cn/problems/coin-change/">322. 零钱兑换</a></h4><p>给你一个整数数组 <code>coins</code> ，表示不同面额的硬币；以及一个整数 <code>amount</code> ，表示总金额。</p><p>计算并返回可以凑成总金额所需的<strong>最少的硬币个数</strong> 。如果没有任何一种硬币组合能组成总金额，返回 <code>-1</code> 。</p><p>你可以认为每种硬币的数量是无限的。</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：coins = [1, 2, 5], amount = 11</span><br><span class="line">输出：3 </span><br><span class="line">解释：11 = 5 + 5 + 1</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：coins = [2], amount = 3</span><br><span class="line">输出：-1</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：coins = [1], amount = 0</span><br><span class="line">输出：0</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= coins.length &lt;= 12</code></li><li><code>1 &lt;= coins[i] &lt;= 231 - 1</code></li><li><code>0 &lt;= amount &lt;= 104</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.util.Arrays;</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">coinChange</span><span class="params">(<span class="type">int</span>[] coins, <span class="type">int</span> amount)</span> {</span><br><span class="line">        <span class="comment">// 入参判断</span></span><br><span class="line">        <span class="keyword">if</span>(coins == <span class="literal">null</span> || coins.length &lt; <span class="number">1</span>) {</span><br><span class="line">            <span class="keyword">return</span> -<span class="number">1</span>;</span><br><span class="line">        }</span><br><span class="line">        <span class="comment">// dp[amount]代表的含义是 当前金额amount 最少的硬币数目</span></span><br><span class="line">        <span class="type">int</span>[] dp = <span class="keyword">new</span> <span class="title class_">int</span>[amount + <span class="number">1</span>];</span><br><span class="line">        Arrays.fill(dp, amount + <span class="number">1</span>);</span><br><span class="line">        dp[<span class="number">0</span>] = <span class="number">0</span>;</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">1</span>; i &lt;= amount; i++) {</span><br><span class="line">            <span class="comment">// i 作为 金额来进行遍历</span></span><br><span class="line">            <span class="keyword">for</span>(<span class="type">int</span> coin : coins) {</span><br><span class="line">                <span class="keyword">if</span>(i &gt;= coin) {</span><br><span class="line">                    <span class="comment">// 当 i 这个金额比 硬币的数额更大时，当然可以进行拼凑</span></span><br><span class="line">                    <span class="comment">// 但是因为我们要找的是最小的数额，所以去找小的</span></span><br><span class="line">                    dp[i] = Math.min(dp[i], dp[i-coin] + <span class="number">1</span>);</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 没有发生变化，自然是无法构造</span></span><br><span class="line">        <span class="keyword">return</span> dp[amount] == amount + <span class="number">1</span> ? -<span class="number">1</span> : dp[amount];</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="139-单词拆分"><a href="#139-单词拆分" class="headerlink" title="139. 单词拆分"></a><a href="https://leetcode.cn/problems/word-break/">139. 单词拆分</a></h4><p>给你一个字符串 <code>s</code> 和一个字符串列表 <code>wordDict</code> 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 <code>s</code> 则返回 <code>true</code>。</p><p><strong>注意：</strong>不要求字典中出现的单词全部都使用，并且字典中的单词可以重复使用。</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入: s = "leetcode", wordDict = ["leet", "code"]</span><br><span class="line">输出: true</span><br><span class="line">解释: 返回 true 因为 "leetcode" 可以由 "leet" 和 "code" 拼接成。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">输入: s = "applepenapple", wordDict = ["apple", "pen"]</span><br><span class="line">输出: true</span><br><span class="line">解释: 返回 true 因为 "applepenapple" 可以由 "apple" "pen" "apple" 拼接成。</span><br><span class="line">     注意，你可以重复使用字典中的单词。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入: s = "catsandog", wordDict = ["cats", "dog", "sand", "and", "cat"]</span><br><span class="line">输出: false</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= s.length &lt;= 300</code></li><li><code>1 &lt;= wordDict.length &lt;= 1000</code></li><li><code>1 &lt;= wordDict[i].length &lt;= 20</code></li><li><code>s</code> 和 <code>wordDict[i]</code> 仅由小写英文字母组成</li><li><code>wordDict</code> 中的所有字符串 <strong>互不相同</strong></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">boolean</span> <span class="title function_">wordBreak</span><span class="params">(String s, List&lt;String&gt; wordDict)</span> {</span><br><span class="line">        <span class="type">boolean</span>[] dp = <span class="keyword">new</span> <span class="title class_">boolean</span>[s.length() + <span class="number">1</span>];</span><br><span class="line">        dp[<span class="number">0</span>] = <span class="literal">true</span>;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">1</span>; i &lt;= s.length(); i++) {</span><br><span class="line">            <span class="keyword">for</span>(String word : wordDict) {</span><br><span class="line">                <span class="keyword">if</span>(i &gt;= word.length() &amp;&amp; s.substring(i - word.length(), i).equals(word)) {</span><br><span class="line">                    <span class="keyword">if</span>(dp[i-word.length()]) {</span><br><span class="line">                        <span class="comment">// 之前可以划分，这里自然才能存储可以划分的状态</span></span><br><span class="line">                        dp[i] = <span class="literal">true</span>;</span><br><span class="line">                    }</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> dp[s.length()];</span><br><span class="line">    }</span><br><span class="line">}</span><br><span class="line"></span><br></pre></td></tr></tbody></table></figure><h4 id="300-最长递增子序列"><a href="#300-最长递增子序列" class="headerlink" title="300. 最长递增子序列"></a><a href="https://leetcode.cn/problems/longest-increasing-subsequence/">300. 最长递增子序列</a></h4><p>给你一个整数数组 <code>nums</code> ，找到其中最长严格递增子序列的长度。</p><p><strong>子序列</strong> 是由数组派生而来的序列，删除（或不删除）数组中的元素而不改变其余元素的顺序。例如，<code>[3,6,2,7]</code> 是数组 <code>[0,3,1,6,2,2,7]</code> 的子序列。</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [10,9,2,5,3,7,101,18]</span><br><span class="line">输出：4</span><br><span class="line">解释：最长递增子序列是 [2,3,7,101]，因此长度为 4 。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [0,1,0,3,2,3]</span><br><span class="line">输出：4</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [7,7,7,7,7,7,7]</span><br><span class="line">输出：1</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= nums.length &lt;= 2500</code></li><li><code>-104 &lt;= nums[i] &lt;= 104</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">lengthOfLIS</span><span class="params">(<span class="type">int</span>[] nums)</span> {</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 动态规划</span></span><br><span class="line">        <span class="comment">// 一维数组 的 dp[2] 代表 nums[2]这个数 当前 最长序列数</span></span><br><span class="line">        <span class="comment">// 那么自然 到了 dp[i]，去找到 从 do[0] 到dp[j](j&lt;i) 的最大数 加 1 即是新的最长</span></span><br><span class="line"></span><br><span class="line">        <span class="keyword">if</span>(nums.length == <span class="number">1</span>) {</span><br><span class="line">            <span class="keyword">return</span> <span class="number">1</span>;</span><br><span class="line">        }</span><br><span class="line">        <span class="type">int</span>[] dp = <span class="keyword">new</span> <span class="title class_">int</span>[nums.length];</span><br><span class="line">        <span class="comment">// 先直接赋值为1，因为最短肯定为1</span></span><br><span class="line">        Arrays.fill(dp, <span class="number">1</span>);</span><br><span class="line">      <span class="comment">// 这道题的dp数组并没有直接存储结果，而是每个位置的最长，这个最长有可能在中间</span></span><br><span class="line">        <span class="type">int</span> <span class="variable">max</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt;  nums.length; i++) {</span><br><span class="line">            <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">j</span> <span class="operator">=</span> <span class="number">0</span>; j &lt; i; j++) {</span><br><span class="line">                <span class="keyword">if</span>(nums[j] &lt; nums[i]) {</span><br><span class="line">                    dp[i] =  Math.max(dp[i], dp[j] + <span class="number">1</span>);</span><br><span class="line">                }</span><br><span class="line">                max = Math.max(max, dp[i]);</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> max;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="152-乘积最大子数组"><a href="#152-乘积最大子数组" class="headerlink" title="152. 乘积最大子数组"></a><a href="https://leetcode.cn/problems/maximum-product-subarray/">152. 乘积最大子数组</a></h4><p>给你一个整数数组 <code>nums</code> ，请你找出数组中乘积最大的非空连续子数组（该子数组中至少包含一个数字），并返回该子数组所对应的乘积。</p><p>测试用例的答案是一个 <strong>32-位</strong> 整数。</p><p><strong>示例 1:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入: nums = [2,3,-2,4]</span><br><span class="line">输出: 6</span><br><span class="line">解释: 子数组 [2,3] 有最大乘积 6。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入: nums = [-2,0,-1]</span><br><span class="line">输出: 0</span><br><span class="line">解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。</span><br></pre></td></tr></tbody></table></figure><p><strong>提示:</strong></p><ul><li><code>1 &lt;= nums.length &lt;= 2 * 104</code></li><li><code>-10 &lt;= nums[i] &lt;= 10</code></li><li><code>nums</code> 的任何前缀或后缀的乘积都 <strong>保证</strong> 是一个 <strong>32-位</strong> 整数</li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">maxProduct</span><span class="params">(<span class="type">int</span>[] nums)</span> {</span><br><span class="line"></span><br><span class="line">        <span class="type">int</span> <span class="variable">result</span> <span class="operator">=</span> nums[<span class="number">0</span>];</span><br><span class="line">        <span class="type">int</span> <span class="variable">positiveMax</span> <span class="operator">=</span> nums[<span class="number">0</span>];</span><br><span class="line">        <span class="type">int</span> <span class="variable">negativeMin</span> <span class="operator">=</span> nums[<span class="number">0</span>]; <span class="comment">// 始终存最小的负数</span></span><br><span class="line">        </span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">1</span>; i &lt; nums.length; i++) {</span><br><span class="line">            <span class="keyword">if</span>(nums[i] &lt; <span class="number">0</span>) {</span><br><span class="line">                <span class="comment">// 小于0，则之前存的负数乘起来，将会变大,之前存的正数乘起来，将会变小</span></span><br><span class="line">                <span class="type">int</span> <span class="variable">temp</span> <span class="operator">=</span> positiveMax;</span><br><span class="line">                positiveMax = negativeMin;</span><br><span class="line">                negativeMin = temp;</span><br><span class="line">            }</span><br><span class="line">            <span class="comment">// 这里这样就能保证 从nums[i] 开始，还是 继续连续积 positiveMax*nums[i] | negativeMin*nums[i]</span></span><br><span class="line">            positiveMax = Math.max(nums[i], positiveMax*nums[i]);</span><br><span class="line">            negativeMin = Math.min(nums[i], negativeMin*nums[i]);</span><br><span class="line">            result = Math.max(result, positiveMax);</span><br><span class="line">        }</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line"></span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="416-分割等和子集"><a href="#416-分割等和子集" class="headerlink" title="416. 分割等和子集"></a><a href="https://leetcode.cn/problems/partition-equal-subset-sum/">416. 分割等和子集</a></h4><p>给你一个 <strong>只包含正整数</strong> 的 <strong>非空</strong> 数组 <code>nums</code> 。请你判断是否可以将这个数组分割成两个子集，使得两个子集的元素和相等。</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [1,5,11,5]</span><br><span class="line">输出：true</span><br><span class="line">解释：数组可以分割成 [1, 5, 5] 和 [11] 。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [1,2,3,5]</span><br><span class="line">输出：false</span><br><span class="line">解释：数组不能分割成两个元素和相等的子集。</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= nums.length &lt;= 200</code></li><li><code>1 &lt;= nums[i] &lt;= 100</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.util.Arrays;</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">boolean</span> <span class="title function_">canPartition</span><span class="params">(<span class="type">int</span>[] nums)</span> {</span><br><span class="line">        <span class="comment">// 先根据题意进行处理</span></span><br><span class="line">        <span class="comment">// 拿到总和，并且总和为偶数，才能符合题意</span></span><br><span class="line">        <span class="type">int</span> <span class="variable">sum</span> <span class="operator">=</span> Arrays.stream(nums).sum();</span><br><span class="line">        <span class="keyword">if</span>(sum % <span class="number">2</span> != <span class="number">0</span>) {</span><br><span class="line">            <span class="keyword">return</span> <span class="literal">false</span>;</span><br><span class="line">        }</span><br><span class="line">        <span class="comment">// 要去构造dp，那么只需要找到一半的数</span></span><br><span class="line">        <span class="type">int</span> <span class="variable">target</span> <span class="operator">=</span> sum / <span class="number">2</span>;</span><br><span class="line">        <span class="comment">// dp[2][14]代表的含义是 第2个数，放了过后，还剩多少target</span></span><br><span class="line">        <span class="type">boolean</span>[][] dp = <span class="keyword">new</span> <span class="title class_">boolean</span>[nums.length + <span class="number">1</span>][target + <span class="number">1</span>];</span><br><span class="line">        dp[<span class="number">0</span>][<span class="number">0</span>] = <span class="literal">true</span>;</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">1</span>; i &lt;= nums.length; i++) {</span><br><span class="line">            <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">j</span> <span class="operator">=</span> <span class="number">0</span>; j &lt;= target; j++) {</span><br><span class="line">                <span class="comment">// j 代表的是剩余的target</span></span><br><span class="line">                <span class="keyword">if</span>(j &lt; nums[i-<span class="number">1</span>]) {</span><br><span class="line">                    <span class="comment">// 剩余的target比数小，说明放不下了,放不下就直接拿之前的值</span></span><br><span class="line">                    dp[i][j] = dp[i-<span class="number">1</span>][j];</span><br><span class="line">                } <span class="keyword">else</span> {</span><br><span class="line">                    <span class="comment">// 说明放得下</span></span><br><span class="line">                    dp[i][j] = dp[i-<span class="number">1</span>][j] || dp[i-<span class="number">1</span>][j - nums[i-<span class="number">1</span>]];</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> dp[nums.length][target];</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="32-最长有效括号"><a href="#32-最长有效括号" class="headerlink" title="32. 最长有效括号"></a><a href="https://leetcode.cn/problems/longest-valid-parentheses/">32. 最长有效括号</a></h4><p>给你一个只包含 <code>'('</code> 和 <code>')'</code> 的字符串，找出最长有效（格式正确且连续）括号子串的长度。</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：s = "(()"</span><br><span class="line">输出：2</span><br><span class="line">解释：最长有效括号子串是 "()"</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：s = ")()())"</span><br><span class="line">输出：4</span><br><span class="line">解释：最长有效括号子串是 "()()"</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：s = ""</span><br><span class="line">输出：0</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>0 &lt;= s.length &lt;= 3 * 104</code></li><li><code>s[i]</code> 为 <code>'('</code> 或 <code>')'</code></li></ul><h5 id="栈解决"><a href="#栈解决" class="headerlink" title="栈解决"></a>栈解决</h5><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">longestValidParentheses</span><span class="params">(String s)</span> {</span><br><span class="line">        <span class="type">int</span> <span class="variable">max</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        Stack&lt;Integer&gt; stack = <span class="keyword">new</span> <span class="title class_">Stack</span>&lt;&gt;();</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 先放一个-1，万一一开始就碰到')'</span></span><br><span class="line">        <span class="comment">// 而且放-1 ，后面计算长度也最合适-1， 0， 1 因为要是一开始就碰到 '()'</span></span><br><span class="line">        <span class="comment">// 后面计算 i - stack.peek() 才能直接得到正确的长度</span></span><br><span class="line">        stack.push(-<span class="number">1</span>);</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; s.length(); i++) {</span><br><span class="line">            <span class="keyword">if</span>(s.charAt(i) == <span class="string">'('</span>) {</span><br><span class="line">                <span class="comment">// 左括号压栈</span></span><br><span class="line">                stack.push(i);</span><br><span class="line">            } <span class="keyword">else</span> {</span><br><span class="line">                <span class="comment">// 右括号出栈</span></span><br><span class="line">                stack.pop();</span><br><span class="line">                <span class="keyword">if</span>(stack.empty()) {</span><br><span class="line">                    <span class="comment">// 为空了都要压一个，防止之后连续的')'报错</span></span><br><span class="line">                    stack.push(i);</span><br><span class="line">                } <span class="keyword">else</span> {</span><br><span class="line">                    <span class="comment">// 出了一对，就去判断长度</span></span><br><span class="line">                    <span class="comment">// stack.peek() 存储的就是之前的左边下标</span></span><br><span class="line">                    <span class="comment">// 自然 i - stack.peek() 就能得到长度</span></span><br><span class="line">                    max = Math.max(max, i - stack.peek());</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> max;</span><br><span class="line">    }</span><br><span class="line">}</span><br><span class="line"></span><br></pre></td></tr></tbody></table></figure><h5 id="动态规划-1"><a href="#动态规划-1" class="headerlink" title="动态规划"></a>动态规划</h5><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">longestValidParentheses</span><span class="params">(String s)</span> {</span><br><span class="line">        <span class="type">int</span> <span class="variable">max</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        <span class="comment">// 这里加上一个空格，增加长度，是因为后面有 i-2 的操作，防止越界，比如 s= "()"</span></span><br><span class="line">        s = <span class="string">" "</span> + s;</span><br><span class="line"></span><br><span class="line">        <span class="comment">// dp[3] 代表 字符串前3个字符的最长有效括号</span></span><br><span class="line">        <span class="type">int</span> dp[] = <span class="keyword">new</span> <span class="title class_">int</span>[s.length()];</span><br><span class="line">        </span><br><span class="line">        <span class="comment">// 直接从2开始,就是第二个字符开始判断就行, 第一个字符单独无论如何成为不了有效括号</span></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">2</span>; i &lt; s.length(); i++) {</span><br><span class="line">            <span class="keyword">if</span>(s.charAt(i) == <span class="string">'('</span>) {</span><br><span class="line">                <span class="comment">// 如果是 左括号 必然构不成有效括号</span></span><br><span class="line">                dp[i] = <span class="number">0</span>;</span><br><span class="line">            } <span class="keyword">else</span> {</span><br><span class="line">                <span class="comment">// 如果是右括号</span></span><br><span class="line">                <span class="keyword">if</span>(s.charAt(i-<span class="number">1</span>) == <span class="string">'('</span>) {</span><br><span class="line">                    <span class="comment">// .....() 也就是前一位是左括号，即构成一对,长度为2, 再加上往前找最大有效</span></span><br><span class="line">                    dp[i] = dp[i-<span class="number">2</span>] + <span class="number">2</span>;</span><br><span class="line">                } <span class="keyword">else</span> <span class="keyword">if</span>(s.charAt(i - dp[i-<span class="number">1</span>] - <span class="number">1</span>) == <span class="string">'('</span>) {</span><br><span class="line">                    <span class="comment">// ((....)) 也就是前一位时右括号，那么去判断 最左边是否是左括号</span></span><br><span class="line">                    <span class="comment">// 是的话，再加上往前最大有效</span></span><br><span class="line">                    dp[i] = dp[i-<span class="number">1</span>] + <span class="number">2</span> + dp[i- dp[i-<span class="number">1</span>] - <span class="number">2</span>];</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">            max = Math.max(max, dp[i]);</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> max;</span><br><span class="line"></span><br><span class="line">    }</span><br><span class="line">}</span><br><span class="line"></span><br></pre></td></tr></tbody></table></figure><hr><h3 id="贪心算法"><a href="#贪心算法" class="headerlink" title="贪心算法"></a>贪心算法</h3><h4 id="121-买卖股票的最佳时机"><a href="#121-买卖股票的最佳时机" class="headerlink" title="121. 买卖股票的最佳时机"></a><a href="https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/">121. 买卖股票的最佳时机</a></h4><p>给定一个数组 <code>prices</code> ，它的第 <code>i</code> 个元素 <code>prices[i]</code> 表示一支给定股票第 <code>i</code> 天的价格。</p><p>你只能选择 <strong>某一天</strong> 买入这只股票，并选择在 <strong>未来的某一个不同的日子</strong> 卖出该股票。设计一个算法来计算你所能获取的最大利润。</p><p>返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润，返回 <code>0</code> 。</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">输入：[7,1,5,3,6,4]</span><br><span class="line">输出：5</span><br><span class="line">解释：在第 2 天（股票价格 = 1）的时候买入，在第 5 天（股票价格 = 6）的时候卖出，最大利润 = 6-1 = 5 。</span><br><span class="line">     注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格；同时，你不能在买入前卖出股票。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：prices = [7,6,4,3,1]</span><br><span class="line">输出：0</span><br><span class="line">解释：在这种情况下, 没有交易完成, 所以最大利润为 0。</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= prices.length &lt;= 105</code></li><li><code>0 &lt;= prices[i] &lt;= 104</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    </span><br><span class="line">    <span class="comment">// 本身不难，关键是解法的代码写法思想</span></span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">maxProfit</span><span class="params">(<span class="type">int</span>[] prices)</span> {</span><br><span class="line">        <span class="type">int</span> <span class="variable">buyMin</span> <span class="operator">=</span> Integer.MIN_VALUE;</span><br><span class="line">        <span class="type">int</span> <span class="variable">sellGet</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; prices.length; i++) {</span><br><span class="line">            <span class="comment">// 越小的正数，其负数反而越大，所以我们找最大的那个负数，即是我们要的最小的正数</span></span><br><span class="line">            buyMin = Math.max(buyMin, -prices[i]);</span><br><span class="line">            <span class="comment">// 所以 sellGet要么为 0 要么一定是 之前所保存的最小的数，拿当前的数去卖，保留最大的</span></span><br><span class="line">            <span class="comment">// 自然最后要的就是最大的</span></span><br><span class="line">            sellGet = Math.max(sellGet, prices[i] + buyMin);</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> sellGet;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><blockquote><p>总的来说，即是找到最小的，并且在尾部找到最大的，这样便可以实现低买高卖。</p></blockquote><h4 id="55-跳跃游戏"><a href="#55-跳跃游戏" class="headerlink" title="55. 跳跃游戏"></a><a href="https://leetcode.cn/problems/jump-game/">55. 跳跃游戏</a></h4><p>给你一个非负整数数组 <code>nums</code> ，你最初位于数组的 <strong>第一个下标</strong> 。数组中的每个元素代表你在该位置可以跳跃的最大长度。</p><p>判断你是否能够到达最后一个下标，如果可以，返回 <code>true</code> ；否则，返回 <code>false</code> 。</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [2,3,1,1,4]</span><br><span class="line">输出：true</span><br><span class="line">解释：可以先跳 1 步，从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [3,2,1,0,4]</span><br><span class="line">输出：false</span><br><span class="line">解释：无论怎样，总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 ， 所以永远不可能到达最后一个下标。</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= nums.length &lt;= 104</code></li><li><code>0 &lt;= nums[i] &lt;= 105</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">boolean</span> <span class="title function_">canJump</span><span class="params">(<span class="type">int</span>[] nums)</span> {</span><br><span class="line">        </span><br><span class="line">        <span class="comment">// 题目说了，你最初位于数组的 第一个下标</span></span><br><span class="line">        <span class="type">int</span> <span class="variable">maxRightIndex</span> <span class="operator">=</span> nums[<span class="number">0</span>];</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">1</span>; i &lt; nums.length; i++) {</span><br><span class="line">            <span class="comment">// 这里注意 i &lt;= maxRightIndex ，因为有可能前面一部分，始终停止了 比如 3 2 1 0 4  始终停止在了0位 无法达到4</span></span><br><span class="line">            <span class="keyword">if</span>(i &gt; maxRightIndex) {</span><br><span class="line">                <span class="keyword">break</span>;</span><br><span class="line">            }</span><br><span class="line">            maxRightIndex = Math.max(maxRightIndex, i + nums[i]);</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> maxRightIndex &gt;= nums.length - <span class="number">1</span>;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="45-跳跃游戏-II"><a href="#45-跳跃游戏-II" class="headerlink" title="45. 跳跃游戏 II"></a><a href="https://leetcode.cn/problems/jump-game-ii/">45. 跳跃游戏 II</a></h4><p>给定一个长度为 <code>n</code> 的 <strong>0 索引</strong>整数数组 <code>nums</code>。初始位置为 <code>nums[0]</code>。</p><p>每个元素 <code>nums[i]</code> 表示从索引 <code>i</code> 向前跳转的最大长度。换句话说，如果你在 <code>nums[i]</code> 处，你可以跳转到任意 <code>nums[i + j]</code> 处:</p><ul><li><code>0 &lt;= j &lt;= nums[i]</code> </li><li><code>i + j &lt; n</code></li></ul><p>返回到达 <code>nums[n - 1]</code> 的最小跳跃次数。生成的测试用例可以到达 <code>nums[n - 1]</code>。</p><p><strong>示例 1:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">输入: nums = [2,3,1,1,4]</span><br><span class="line">输出: 2</span><br><span class="line">解释: 跳到最后一个位置的最小跳跃数是 2。</span><br><span class="line">     从下标为 0 跳到下标为 1 的位置，跳 1 步，然后跳 3 步到达数组的最后一个位置。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入: nums = [2,3,0,1,4]</span><br><span class="line">输出: 2</span><br></pre></td></tr></tbody></table></figure><p><strong>提示:</strong></p><ul><li><code>1 &lt;= nums.length &lt;= 104</code></li><li><code>0 &lt;= nums[i] &lt;= 1000</code></li><li>题目保证可以到达 <code>nums[n-1]</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">jump</span><span class="params">(<span class="type">int</span>[] nums)</span> {</span><br><span class="line">        </span><br><span class="line">        <span class="comment">// currentRight 表示当前 这一步 能跳的最远边界</span></span><br><span class="line">        <span class="type">int</span> <span class="variable">currentRightIndex</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">maxPostion</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">steps</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; nums.length; i++) {</span><br><span class="line">            <span class="keyword">if</span>(i &gt; currentRightIndex) {</span><br><span class="line">                <span class="comment">// 超过了当前跳远的最远距离，需要再跳一次</span></span><br><span class="line">                currentRightIndex = maxPostion;</span><br><span class="line">                steps++;</span><br><span class="line">            }</span><br><span class="line">            maxPostion = Math.max(maxPostion, i + nums[i]);</span><br><span class="line">        }</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">return</span> steps;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="763-划分字母区间"><a href="#763-划分字母区间" class="headerlink" title="763. 划分字母区间"></a><a href="https://leetcode.cn/problems/partition-labels/">763. 划分字母区间</a></h4><p>给你一个字符串 <code>s</code> 。我们要把这个字符串划分为尽可能多的片段，同一字母最多出现在一个片段中。</p><p>注意，划分结果需要满足：将所有划分结果按顺序连接，得到的字符串仍然是 <code>s</code> 。</p><p>返回一个表示每个字符串片段的长度的列表。</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">输入：s = "ababcbacadefegdehijhklij"</span><br><span class="line">输出：[9,7,8]</span><br><span class="line">解释：</span><br><span class="line">划分结果为 "ababcbaca"、"defegde"、"hijhklij" 。</span><br><span class="line">每个字母最多出现在一个片段中。</span><br><span class="line">像 "ababcbacadefegde", "hijhklij" 这样的划分是错误的，因为划分的片段数较少。 </span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：s = "eccbbbbdec"</span><br><span class="line">输出：[10]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= s.length &lt;= 500</code></li><li><code>s</code> 仅由小写英文字母组成</li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> List&lt;Integer&gt; <span class="title function_">partitionLabels</span><span class="params">(String s)</span> {</span><br><span class="line"></span><br><span class="line">        List&lt;Integer&gt; result = <span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;();</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 记录字符最右边的位置</span></span><br><span class="line">        HashMap&lt;Character, Integer&gt; rightLocationMap = <span class="keyword">new</span> <span class="title class_">HashMap</span>&lt;&gt;();</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; s.length(); i++) {</span><br><span class="line">            rightLocationMap.put(s.charAt(i), i);</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        <span class="type">int</span> <span class="variable">index</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        <span class="keyword">while</span>(index &lt; s.length()) {</span><br><span class="line">            <span class="comment">// 首先拿到 当前字符 的最右位置</span></span><br><span class="line">            <span class="type">int</span> <span class="variable">right</span> <span class="operator">=</span> rightLocationMap.get(s.charAt(index));</span><br><span class="line"></span><br><span class="line">            <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">left</span> <span class="operator">=</span> index + <span class="number">1</span>; left &lt; right; left++) {</span><br><span class="line">                <span class="comment">// 拿到 当前字符的下一个字符 的最右位置</span></span><br><span class="line">                <span class="comment">// 如果 最右位置更大，则去更新为当前区间的更右</span></span><br><span class="line">                right = Math.max(right, rightLocationMap.get(s.charAt(left)));</span><br><span class="line">            }</span><br><span class="line">            </span><br><span class="line">            result.add(right - index + <span class="number">1</span>);</span><br><span class="line">            index = right + <span class="number">1</span>;</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><hr><h3 id="堆"><a href="#堆" class="headerlink" title="堆"></a>堆</h3><h4 id="215-数组中的第K个最大元素"><a href="#215-数组中的第K个最大元素" class="headerlink" title="215. 数组中的第K个最大元素"></a><a href="https://leetcode.cn/problems/kth-largest-element-in-an-array/">215. 数组中的第K个最大元素</a></h4><p>给定整数数组 <code>nums</code> 和整数 <code>k</code>，请返回数组中第 <code>**k**</code> 个最大的元素。</p><p>请注意，你需要找的是数组排序后的第 <code>k</code> 个最大的元素，而不是第 <code>k</code> 个不同的元素。</p><p>你必须设计并实现时间复杂度为 <code>O(n)</code> 的算法解决此问题。</p><p><strong>示例 1:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入: [3,2,1,5,6,4], k = 2</span><br><span class="line">输出: 5</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入: [3,2,3,1,2,4,5,5,6], k = 4</span><br><span class="line">输出: 4</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= k &lt;= nums.length &lt;= 105</code></li><li><code>-104 &lt;= nums[i] &lt;= 104</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">findKthLargest</span><span class="params">(<span class="type">int</span>[] nums, <span class="type">int</span> k)</span> {</span><br><span class="line">        <span class="type">int</span> <span class="variable">start</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">end</span> <span class="operator">=</span> nums.length - <span class="number">1</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">targetIndex</span> <span class="operator">=</span> nums.length - k;</span><br><span class="line">        <span class="keyword">while</span>(start &lt; end) {</span><br><span class="line">            <span class="type">int</span> <span class="variable">chooseIndex</span> <span class="operator">=</span> getPartionIndex(nums, start, end);</span><br><span class="line">            <span class="keyword">if</span>(chooseIndex == targetIndex) {</span><br><span class="line">                <span class="keyword">return</span> nums[chooseIndex];</span><br><span class="line">            } <span class="keyword">else</span> <span class="keyword">if</span>(chooseIndex &lt; targetIndex) {</span><br><span class="line">                start = chooseIndex + <span class="number">1</span>;</span><br><span class="line">            } <span class="keyword">else</span> {</span><br><span class="line">                end = chooseIndex - <span class="number">1</span>;</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> nums[start];</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="type">int</span> <span class="title function_">getPartionIndex</span><span class="params">(<span class="type">int</span>[] nums, <span class="type">int</span> left, <span class="type">int</span> right)</span> {</span><br><span class="line">        <span class="type">int</span> <span class="variable">key</span> <span class="operator">=</span> nums[left];</span><br><span class="line">        <span class="keyword">while</span>(left &lt; right) {</span><br><span class="line">            <span class="keyword">while</span>(left &lt; right &amp;&amp; nums[right] &gt;= key) {</span><br><span class="line">                right--;</span><br><span class="line">            }</span><br><span class="line">            nums[left] = nums[right];</span><br><span class="line">            <span class="keyword">while</span>(left &lt; right &amp;&amp; nums[left] &lt; key) {</span><br><span class="line">                left++;</span><br><span class="line">            }</span><br><span class="line">            nums[right] = nums[left];</span><br><span class="line">        }</span><br><span class="line">        nums[left] = key;</span><br><span class="line">        <span class="keyword">return</span> left;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="347-前-K-个高频元素"><a href="#347-前-K-个高频元素" class="headerlink" title="347. 前 K 个高频元素"></a><a href="https://leetcode.cn/problems/top-k-frequent-elements/">347. 前 K 个高频元素</a></h4><p>给你一个整数数组 <code>nums</code> 和一个整数 <code>k</code> ，请你返回其中出现频率前 <code>k</code> 高的元素。你可以按 <strong>任意顺序</strong> 返回答案。</p><p><strong>示例 1:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入: nums = [1,1,1,2,2,3], k = 2</span><br><span class="line">输出: [1,2]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入: nums = [1], k = 1</span><br><span class="line">输出: [1]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= nums.length &lt;= 105</code></li><li><code>k</code> 的取值范围是 <code>[1, 数组中不相同的元素的个数]</code></li><li>题目数据保证答案唯一，换句话说，数组中前 <code>k</code> 个高频元素的集合是唯一的</li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.util.*;</span><br><span class="line"><span class="keyword">import</span> java.util.stream.Collectors;</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span>[] topKFrequent(<span class="type">int</span>[] nums, <span class="type">int</span> k) {</span><br><span class="line">        <span class="type">int</span>[] result = <span class="keyword">new</span> <span class="title class_">int</span>[k];</span><br><span class="line">        HashMap&lt;Integer, Node&gt; map = <span class="keyword">new</span> <span class="title class_">HashMap</span>&lt;&gt;();</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; nums.length; i++) {</span><br><span class="line">            <span class="keyword">if</span>(!map.containsKey(nums[i])) {</span><br><span class="line">                map.put(nums[i], <span class="keyword">new</span> <span class="title class_">Node</span>(nums[i], <span class="number">1</span>));</span><br><span class="line">            } <span class="keyword">else</span> {</span><br><span class="line">                <span class="type">Node</span> <span class="variable">temp</span> <span class="operator">=</span> map.get(nums[i]);</span><br><span class="line">                temp.count++;</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        List&lt;Node&gt; nodeList = map.values().stream().collect(Collectors.toList());</span><br><span class="line">        Collections.sort(nodeList, (a, b) -&gt; {<span class="keyword">return</span> b.count - a.count;});</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; k; i++) {</span><br><span class="line">            result[i] = nodeList.get(i).num;</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line"></span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">class</span> <span class="title class_">Node</span> {</span><br><span class="line">        <span class="keyword">public</span> <span class="type">int</span> num;</span><br><span class="line">        <span class="keyword">public</span> <span class="type">int</span> count;</span><br><span class="line">        <span class="keyword">public</span> <span class="title function_">Node</span><span class="params">(<span class="type">int</span> num, <span class="type">int</span> count)</span> {</span><br><span class="line">            <span class="built_in">this</span>.num = num;</span><br><span class="line">            <span class="built_in">this</span>.count = count;</span><br><span class="line">        }</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="295-数据流的中位数"><a href="#295-数据流的中位数" class="headerlink" title="295. 数据流的中位数"></a><a href="https://leetcode.cn/problems/find-median-from-data-stream/">295. 数据流的中位数</a></h4><p><strong>中位数</strong>是有序整数列表中的中间值。如果列表的大小是偶数，则没有中间值，中位数是两个中间值的平均值。</p><ul><li>例如 <code>arr = [2,3,4]</code> 的中位数是 <code>3</code> 。</li><li>例如 <code>arr = [2,3]</code> 的中位数是 <code>(2 + 3) / 2 = 2.5</code> 。</li></ul><p>实现 MedianFinder 类:</p><ul><li><code>MedianFinder() </code>初始化 <code>MedianFinder</code> 对象。</li><li><code>void addNum(int num)</code> 将数据流中的整数 <code>num</code> 添加到数据结构中。</li><li><code>double findMedian()</code> 返回到目前为止所有元素的中位数。与实际答案相差 <code>10-5</code> 以内的答案将被接受。</li></ul><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">输入</span><br><span class="line">["MedianFinder", "addNum", "addNum", "findMedian", "addNum", "findMedian"]</span><br><span class="line">[[], [1], [2], [], [3], []]</span><br><span class="line">输出</span><br><span class="line">[null, null, null, 1.5, null, 2.0]</span><br><span class="line"></span><br><span class="line">解释</span><br><span class="line">MedianFinder medianFinder = new MedianFinder();</span><br><span class="line">medianFinder.addNum(1);    // arr = [1]</span><br><span class="line">medianFinder.addNum(2);    // arr = [1, 2]</span><br><span class="line">medianFinder.findMedian(); // 返回 1.5 ((1 + 2) / 2)</span><br><span class="line">medianFinder.addNum(3);    // arr[1, 2, 3]</span><br><span class="line">medianFinder.findMedian(); // return 2.0</span><br></pre></td></tr></tbody></table></figure><p><strong>提示:</strong></p><ul><li><code>-105 &lt;= num &lt;= 105</code></li><li>在调用 <code>findMedian</code> 之前，数据结构中至少有一个元素</li><li>最多 <code>5 * 104</code> 次调用 <code>addNum</code> 和 <code>findMedian</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">MedianFinder</span> {</span><br><span class="line">    </span><br><span class="line">    Queue&lt;Integer&gt; A, B;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="title function_">MedianFinder</span><span class="params">()</span> {</span><br><span class="line">        A = <span class="keyword">new</span> <span class="title class_">PriorityQueue</span>&lt;&gt;((x, y) -&gt; (y - x)); <span class="comment">// 大顶堆，保存较小的一半</span></span><br><span class="line">        B = <span class="keyword">new</span> <span class="title class_">PriorityQueue</span>&lt;&gt;(); <span class="comment">// 小顶堆，保存较大的一半</span></span><br><span class="line">    }</span><br><span class="line">    </span><br><span class="line">    <span class="comment">// 要么 A 和 B 个数一样，要么 B 小顶堆 多一个元素</span></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">addNum</span><span class="params">(<span class="type">int</span> num)</span> {</span><br><span class="line">        <span class="keyword">if</span>(A.size() != B.size()) {</span><br><span class="line">            <span class="comment">// 奇数总个数, 先放小顶堆，再从小顶堆出元素到大顶堆</span></span><br><span class="line">            B.add(num);</span><br><span class="line">            A.add(B.poll());</span><br><span class="line">        } <span class="keyword">else</span> {</span><br><span class="line">            <span class="comment">// 偶数总个数，先放大顶堆，再从大顶堆出元素到小顶堆</span></span><br><span class="line">            A.add(num);</span><br><span class="line">            B.add(A.poll());</span><br><span class="line">        }</span><br><span class="line">    }</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">public</span> <span class="type">double</span> <span class="title function_">findMedian</span><span class="params">()</span> {</span><br><span class="line">        <span class="keyword">return</span> A.size() != B.size() ? B.peek() : ((A.peek() + B.peek()) / <span class="number">2.0</span>);</span><br><span class="line">    }</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Your MedianFinder object will be instantiated and called as such:</span></span><br><span class="line"><span class="comment"> * MedianFinder obj = new MedianFinder();</span></span><br><span class="line"><span class="comment"> * obj.addNum(num);</span></span><br><span class="line"><span class="comment"> * double param_2 = obj.findMedian();</span></span><br><span class="line"><span class="comment"> */</span></span><br></pre></td></tr></tbody></table></figure><hr><h3 id="栈"><a href="#栈" class="headerlink" title="栈"></a>栈</h3><h4 id="20-有效的括号"><a href="#20-有效的括号" class="headerlink" title="20. 有效的括号"></a><a href="https://leetcode.cn/problems/valid-parentheses/">20. 有效的括号</a></h4><p>给定一个只包括 <code>'('</code>，<code>')'</code>，<code>'{'</code>，<code>'}'</code>，<code>'['</code>，<code>']'</code> 的字符串 <code>s</code> ，判断字符串是否有效。</p><p>有效字符串需满足：</p><ol><li>左括号必须用相同类型的右括号闭合。</li><li>左括号必须以正确的顺序闭合。</li><li>每个右括号都有一个对应的相同类型的左括号。</li></ol><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：s = "()"</span><br><span class="line">输出：true</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：s = "()[]{}"</span><br><span class="line">输出：true</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：s = "(]"</span><br><span class="line">输出：false</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= s.length &lt;= 104</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.util.LinkedList;</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">boolean</span> <span class="title function_">isValid</span><span class="params">(String s)</span> {</span><br><span class="line">        LinkedList&lt;Character&gt; stack = <span class="keyword">new</span> <span class="title class_">LinkedList</span>&lt;&gt;();</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; s.length(); i++) {</span><br><span class="line">            <span class="type">char</span> <span class="variable">c</span> <span class="operator">=</span> s.charAt(i);</span><br><span class="line">            <span class="keyword">if</span>(c == <span class="string">'['</span> || c == <span class="string">'{'</span> || c == <span class="string">'('</span>) {</span><br><span class="line">                stack.push(c);</span><br><span class="line">            } <span class="keyword">else</span> {</span><br><span class="line">                <span class="keyword">if</span>(stack.isEmpty()) <span class="keyword">return</span> <span class="literal">false</span>;</span><br><span class="line">                <span class="type">char</span> <span class="variable">top</span> <span class="operator">=</span> stack.peek();</span><br><span class="line">                <span class="keyword">if</span>((c == <span class="string">']'</span> &amp;&amp; top == <span class="string">'['</span>) || (c == <span class="string">')'</span> &amp;&amp; top == <span class="string">'('</span>) || (c == <span class="string">'}'</span> &amp;&amp; top == <span class="string">'{'</span>) ) {</span><br><span class="line">                    stack.pop();</span><br><span class="line">                } <span class="keyword">else</span> {</span><br><span class="line">                    <span class="keyword">return</span> <span class="literal">false</span>;</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> stack.isEmpty();</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="155-最小栈"><a href="#155-最小栈" class="headerlink" title="155. 最小栈"></a><a href="https://leetcode.cn/problems/min-stack/">155. 最小栈</a></h4><p>设计一个支持 <code>push</code> ，<code>pop</code> ，<code>top</code> 操作，并能在常数时间内检索到最小元素的栈。</p><p>实现 <code>MinStack</code> 类:</p><ul><li><code>MinStack()</code> 初始化堆栈对象。</li><li><code>void push(int val)</code> 将元素val推入堆栈。</li><li><code>void pop()</code> 删除堆栈顶部的元素。</li><li><code>int top()</code> 获取堆栈顶部的元素。</li><li><code>int getMin()</code> 获取堆栈中的最小元素。</li></ul><p><strong>示例 1:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line">输入：</span><br><span class="line">["MinStack","push","push","push","getMin","pop","top","getMin"]</span><br><span class="line">[[],[-2],[0],[-3],[],[],[],[]]</span><br><span class="line"></span><br><span class="line">输出：</span><br><span class="line">[null,null,null,null,-3,null,0,-2]</span><br><span class="line"></span><br><span class="line">解释：</span><br><span class="line">MinStack minStack = new MinStack();</span><br><span class="line">minStack.push(-2);</span><br><span class="line">minStack.push(0);</span><br><span class="line">minStack.push(-3);</span><br><span class="line">minStack.getMin();   --&gt; 返回 -3.</span><br><span class="line">minStack.pop();</span><br><span class="line">minStack.top();      --&gt; 返回 0.</span><br><span class="line">minStack.getMin();   --&gt; 返回 -2.</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>-231 &lt;= val &lt;= 231 - 1</code></li><li><code>pop</code>、<code>top</code> 和 <code>getMin</code> 操作总是在 <strong>非空栈</strong> 上调用</li><li><code>push</code>, <code>pop</code>, <code>top</code>, and <code>getMin</code>最多被调用 <code>3 * 104</code> 次</li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.util.LinkedList;</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">MinStack</span> {</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> LinkedList&lt;Integer&gt; stack;</span><br><span class="line">    <span class="keyword">private</span> LinkedList&lt;Integer&gt; minStack;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="title function_">MinStack</span><span class="params">()</span> {</span><br><span class="line">        stack = <span class="keyword">new</span> <span class="title class_">LinkedList</span>&lt;&gt;();</span><br><span class="line">        minStack = <span class="keyword">new</span> <span class="title class_">LinkedList</span>&lt;&gt;();</span><br><span class="line">    }</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">push</span><span class="params">(<span class="type">int</span> val)</span> {</span><br><span class="line">        stack.push(val);</span><br><span class="line">        <span class="keyword">if</span>(minStack.isEmpty() || minStack.peek() &gt;= val) {</span><br><span class="line">            minStack.push(val);</span><br><span class="line">        } <span class="keyword">else</span> {</span><br><span class="line">            minStack.push(minStack.peek());</span><br><span class="line">        }</span><br><span class="line">    }</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">pop</span><span class="params">()</span> {</span><br><span class="line">        stack.pop();</span><br><span class="line">        minStack.pop();</span><br><span class="line">    }</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">top</span><span class="params">()</span> {</span><br><span class="line">        <span class="keyword">return</span> stack.peek();</span><br><span class="line">    }</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">getMin</span><span class="params">()</span> {</span><br><span class="line">        <span class="keyword">return</span> minStack.peek();</span><br><span class="line">    }</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Your MinStack object will be instantiated and called as such:</span></span><br><span class="line"><span class="comment"> * MinStack obj = new MinStack();</span></span><br><span class="line"><span class="comment"> * obj.push(val);</span></span><br><span class="line"><span class="comment"> * obj.pop();</span></span><br><span class="line"><span class="comment"> * int param_3 = obj.top();</span></span><br><span class="line"><span class="comment"> * int param_4 = obj.getMin();</span></span><br><span class="line"><span class="comment"> */</span></span><br></pre></td></tr></tbody></table></figure><h4 id="394-字符串解码"><a href="#394-字符串解码" class="headerlink" title="394. 字符串解码"></a><a href="https://leetcode.cn/problems/decode-string/">394. 字符串解码</a></h4><p>给定一个经过编码的字符串，返回它解码后的字符串。</p><p>编码规则为: <code>k[encoded_string]</code>，表示其中方括号内部的 <code>encoded_string</code> 正好重复 <code>k</code> 次。注意 <code>k</code> 保证为正整数。</p><p>你可以认为输入字符串总是有效的；输入字符串中没有额外的空格，且输入的方括号总是符合格式要求的。</p><p>此外，你可以认为原始数据不包含数字，所有的数字只表示重复的次数 <code>k</code> ，例如不会出现像 <code>3a</code> 或 <code>2[4]</code> 的输入。</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：s = "3[a]2[bc]"</span><br><span class="line">输出："aaabcbc"</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：s = "3[a2[c]]"</span><br><span class="line">输出："accaccacc"</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：s = "2[abc]3[cd]ef"</span><br><span class="line">输出："abcabccdcdcdef"</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 4：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：s = "abc3[cd]xyz"</span><br><span class="line">输出："abccdcdcdxyz"</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= s.length &lt;= 30</code></li><li><code>s</code> 由小写英文字母、数字和方括号 <code>'[]'</code> 组成</li><li><code>s</code> 保证是一个 <strong>有效</strong> 的输入。</li><li><code>s</code> 中所有整数的取值范围为 <code>[1, 300]</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 3[a2[c3[q]]]2[z]a</span></span><br><span class="line">    <span class="keyword">public</span> String <span class="title function_">decodeString</span><span class="params">(String s)</span> {</span><br><span class="line">        <span class="type">int</span> <span class="variable">tempNum</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        <span class="type">StringBuilder</span> <span class="variable">result</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">StringBuilder</span>();</span><br><span class="line">        Stack&lt;Integer&gt; numStack = <span class="keyword">new</span> <span class="title class_">Stack</span>&lt;&gt;();</span><br><span class="line">        Stack&lt;StringBuilder&gt; resultStack = <span class="keyword">new</span> <span class="title class_">Stack</span>&lt;&gt;();</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">char</span> c : s.toCharArray()){</span><br><span class="line">            <span class="keyword">if</span>(c == <span class="string">'['</span>){</span><br><span class="line">                <span class="comment">// 碰到左括号，说明数字已经收集完毕，记录tempNum 和 当前result，归零。</span></span><br><span class="line">                numStack.push(tempNum);</span><br><span class="line">                resultStack.push(result);</span><br><span class="line">                tempNum = <span class="number">0</span>;</span><br><span class="line">                result = <span class="keyword">new</span> <span class="title class_">StringBuilder</span>();</span><br><span class="line">            }<span class="keyword">else</span> <span class="keyword">if</span>(c ==<span class="string">']'</span>){</span><br><span class="line">                <span class="comment">// 出最近的一个左括号入的tempNum, 当前res进行计算不入栈</span></span><br><span class="line">                <span class="type">int</span> <span class="variable">curNum</span> <span class="operator">=</span> numStack.pop();</span><br><span class="line">                <span class="type">StringBuilder</span> <span class="variable">temp</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">StringBuilder</span>();</span><br><span class="line">                <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; curNum; i++){</span><br><span class="line">                    temp.append(result);</span><br><span class="line">                }</span><br><span class="line">                <span class="comment">// 与括号外合并</span></span><br><span class="line">                result = resultStack.pop().append(temp);</span><br><span class="line"></span><br><span class="line">            }<span class="keyword">else</span> <span class="keyword">if</span>(c &gt;= <span class="string">'0'</span> &amp;&amp; c &lt;= <span class="string">'9'</span>){</span><br><span class="line">                <span class="comment">// 如果k是多位数需要x10</span></span><br><span class="line">                tempNum = c - <span class="string">'0'</span> + tempNum * <span class="number">10</span>;</span><br><span class="line">            }<span class="keyword">else</span>{</span><br><span class="line">                <span class="comment">// 如果是字母则缓慢添加</span></span><br><span class="line">                result.append(c);</span><br><span class="line">                </span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> result.toString();</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="739-每日温度"><a href="#739-每日温度" class="headerlink" title="739. 每日温度"></a><a href="https://leetcode.cn/problems/daily-temperatures/">739. 每日温度</a></h4><p>给定一个整数数组 <code>temperatures</code> ，表示每天的温度，返回一个数组 <code>answer</code> ，其中 <code>answer[i]</code> 是指对于第 <code>i</code> 天，下一个更高温度出现在几天后。如果气温在这之后都不会升高，请在该位置用 <code>0</code> 来代替。</p><p><strong>示例 1:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入: temperatures = [73,74,75,71,69,72,76,73]</span><br><span class="line">输出: [1,1,4,2,1,1,0,0]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入: temperatures = [30,40,50,60]</span><br><span class="line">输出: [1,1,1,0]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入: temperatures = [30,60,90]</span><br><span class="line">输出: [1,1,0]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= temperatures.length &lt;= 105</code></li><li><code>30 &lt;= temperatures[i] &lt;= 100</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span>[] dailyTemperatures(<span class="type">int</span>[] temperatures) {</span><br><span class="line">        <span class="type">int</span>[] result = <span class="keyword">new</span> <span class="title class_">int</span>[temperatures.length];</span><br><span class="line">        </span><br><span class="line">        <span class="comment">// 栈存入还未能得到答案的下标</span></span><br><span class="line">        <span class="comment">// 呈现的效果就是 温度 单调递减的</span></span><br><span class="line">        <span class="comment">// 一遇到 温度 更高的，就出栈填入答案</span></span><br><span class="line">        LinkedList&lt;Integer&gt; stack = <span class="keyword">new</span> <span class="title class_">LinkedList</span>&lt;&gt;();</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; temperatures.length; i++) {</span><br><span class="line">            <span class="keyword">while</span>(!stack.isEmpty() &amp;&amp; temperatures[i] &gt; temperatures[stack.peek()]) {</span><br><span class="line">                <span class="comment">// 当前的温度 更高 了</span></span><br><span class="line">                <span class="comment">// 说明得到一个答案</span></span><br><span class="line">                <span class="comment">// 一直循环往前填入答案</span></span><br><span class="line">                result[stack.peek()] = i - stack.poll();    </span><br><span class="line">            }    </span><br><span class="line">            stack.push(i);</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line"></span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="84-柱状图中最大的矩形"><a href="#84-柱状图中最大的矩形" class="headerlink" title="84. 柱状图中最大的矩形"></a><a href="https://leetcode.cn/problems/largest-rectangle-in-histogram/">84. 柱状图中最大的矩形</a></h4><p>给定 <em>n</em> 个非负整数，用来表示柱状图中各个柱子的高度。每个柱子彼此相邻，且宽度为 1 。</p><p>求在该柱状图中，能够勾勒出来的矩形的最大面积。</p><p><strong>示例 1:</strong></p><p><a href="https://assets.leetcode.com/uploads/2021/01/04/histogram.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2021/01/04/histogram.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：heights = [2,1,5,6,2,3]</span><br><span class="line">输出：10</span><br><span class="line">解释：最大的矩形为图中红色区域，面积为 10</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><p><a href="https://assets.leetcode.com/uploads/2021/01/04/histogram-1.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2021/01/04/histogram-1.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入： heights = [2,4]</span><br><span class="line">输出： 4</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= heights.length &lt;=105</code></li><li><code>0 &lt;= heights[i] &lt;= 104</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">largestRectangleArea</span><span class="params">(<span class="type">int</span>[] heights)</span> {</span><br><span class="line"></span><br><span class="line">        <span class="keyword">if</span>(heights.length == <span class="number">1</span>) <span class="keyword">return</span> heights[<span class="number">0</span>];</span><br><span class="line">        <span class="type">int</span> <span class="variable">result</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        LinkedList&lt;Integer&gt; stack = <span class="keyword">new</span> <span class="title class_">LinkedList</span>&lt;&gt;();</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 基本原理就是，stack 存储 下标， 每次都遇到新的高度，都往前判断是否更矮了</span></span><br><span class="line">        <span class="comment">// 更矮了意味着，前面的部分有可以确定面积了</span></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; heights.length; i++) {</span><br><span class="line">            </span><br><span class="line">            <span class="keyword">while</span>(!stack.isEmpty() &amp;&amp; heights[i] &lt; heights[stack.peek()]) {</span><br><span class="line"></span><br><span class="line">                <span class="comment">// 找到更低的高度了</span></span><br><span class="line">                <span class="type">int</span> <span class="variable">curHeight</span> <span class="operator">=</span> heights[stack.poll()];</span><br><span class="line"></span><br><span class="line">                <span class="keyword">while</span>(!stack.isEmpty() &amp;&amp; curHeight == heights[stack.peek()]) {</span><br><span class="line">                    <span class="comment">// 相同的高度往前继续找</span></span><br><span class="line">                    stack.poll();</span><br><span class="line">                }</span><br><span class="line"></span><br><span class="line">                <span class="comment">// 得到宽度 计算面积</span></span><br><span class="line">                <span class="comment">// 注意这里的 i - stack.peek() - 1 ，因为之前一直在出栈，出完毕了相同高度的</span></span><br><span class="line">                <span class="comment">// 这时的stack.peek() 已经不是这个高度的，而是次高度的，所以直接 i- stack.peek() 的话就会多算一个</span></span><br><span class="line">                <span class="type">int</span> <span class="variable">curWidth</span> <span class="operator">=</span> stack.isEmpty() ? i : i - stack.peek() - <span class="number">1</span>;</span><br><span class="line">                result = Math.max(result, curHeight * curWidth);</span><br><span class="line">            }</span><br><span class="line">            stack.push(i);</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 最后可能还有剩余的元素，用同样的方法往前计算</span></span><br><span class="line">        <span class="keyword">while</span>(!stack.isEmpty()) {</span><br><span class="line">            <span class="comment">// 既然是剩余的，当前高度直接拿到</span></span><br><span class="line">            <span class="type">int</span> <span class="variable">curHeight</span> <span class="operator">=</span> heights[stack.poll()];</span><br><span class="line">            <span class="keyword">while</span>(!stack.isEmpty() &amp;&amp; curHeight == heights[stack.peek()]) {</span><br><span class="line">                <span class="comment">// 相同的高度往前继续找</span></span><br><span class="line">                stack.poll();</span><br><span class="line">            }</span><br><span class="line">            <span class="comment">// 得到宽度，剩余的元素，宽度一定为 数组长度，因为第一遍循环走到尾部了</span></span><br><span class="line">            <span class="type">int</span> <span class="variable">curWidth</span> <span class="operator">=</span> stack.isEmpty() ? heights.length : heights.length - stack.peek() - <span class="number">1</span>;</span><br><span class="line">            result = Math.max(result, curHeight * curWidth);</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line"></span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><hr><h3 id="二分查找"><a href="#二分查找" class="headerlink" title="二分查找"></a>二分查找</h3><h4 id="35-搜索插入位置"><a href="#35-搜索插入位置" class="headerlink" title="35. 搜索插入位置"></a><a href="https://leetcode.cn/problems/search-insert-position/">35. 搜索插入位置</a></h4><p>给定一个排序数组和一个目标值，在数组中找到目标值，并返回其索引。如果目标值不存在于数组中，返回它将会被按顺序插入的位置。</p><p>请必须使用时间复杂度为 <code>O(log n)</code> 的算法。</p><p><strong>示例 1:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入: nums = [1,3,5,6], target = 5</span><br><span class="line">输出: 2</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入: nums = [1,3,5,6], target = 2</span><br><span class="line">输出: 1</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入: nums = [1,3,5,6], target = 7</span><br><span class="line">输出: 4</span><br></pre></td></tr></tbody></table></figure><p><strong>提示:</strong></p><ul><li><code>1 &lt;= nums.length &lt;= 104</code></li><li><code>-104 &lt;= nums[i] &lt;= 104</code></li><li><code>nums</code> 为 <strong>无重复元素</strong> 的 <strong>升序</strong> 排列数组</li><li><code>-104 &lt;= target &lt;= 104</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">searchInsert</span><span class="params">(<span class="type">int</span>[] nums, <span class="type">int</span> target)</span> {</span><br><span class="line">        <span class="type">int</span> <span class="variable">left</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">right</span> <span class="operator">=</span> nums.length - <span class="number">1</span>;</span><br><span class="line">        <span class="keyword">while</span>(left &lt;= right) {</span><br><span class="line">            <span class="type">int</span> <span class="variable">mid</span> <span class="operator">=</span> left + (right - left) / <span class="number">2</span>;</span><br><span class="line">            <span class="keyword">if</span>(nums[mid] == target) {</span><br><span class="line">                <span class="keyword">return</span> mid;</span><br><span class="line">            } <span class="keyword">else</span> <span class="keyword">if</span>(nums[mid] &lt; target) {</span><br><span class="line">                left = mid + <span class="number">1</span>;</span><br><span class="line">            } <span class="keyword">else</span> {</span><br><span class="line">                right = mid - <span class="number">1</span>;</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> left;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="74-搜索二维矩阵"><a href="#74-搜索二维矩阵" class="headerlink" title="74. 搜索二维矩阵"></a><a href="https://leetcode.cn/problems/search-a-2d-matrix/">74. 搜索二维矩阵</a></h4><p>给你一个满足下述两条属性的 <code>m x n</code> 整数矩阵：</p><ul><li>每行中的整数从左到右按非严格递增顺序排列。</li><li>每行的第一个整数大于前一行的最后一个整数。</li></ul><p>给你一个整数 <code>target</code> ，如果 <code>target</code> 在矩阵中，返回 <code>true</code> ；否则，返回 <code>false</code> 。</p><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode.com/uploads/2020/10/05/mat.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2020/10/05/mat.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3</span><br><span class="line">输出：true</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><p><a href="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/11/25/mat2.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/11/25/mat2.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13</span><br><span class="line">输出：false</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>m == matrix.length</code></li><li><code>n == matrix[i].length</code></li><li><code>1 &lt;= m, n &lt;= 100</code></li><li><code>-104 &lt;= matrix[i][j], target &lt;= 104</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">boolean</span> <span class="title function_">searchMatrix</span><span class="params">(<span class="type">int</span>[][] matrix, <span class="type">int</span> target)</span> {</span><br><span class="line">        <span class="type">int</span> <span class="variable">rows</span> <span class="operator">=</span> matrix.length;</span><br><span class="line">        <span class="type">int</span> <span class="variable">cols</span> <span class="operator">=</span> matrix[<span class="number">0</span>].length;</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">row</span> <span class="operator">=</span> <span class="number">0</span>; row &lt; rows; row++) {</span><br><span class="line">            <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">col</span> <span class="operator">=</span> cols - <span class="number">1</span>; col &gt;= <span class="number">0</span>; col--) {</span><br><span class="line">                <span class="keyword">if</span>(matrix[row][col] == target) {</span><br><span class="line">                    <span class="keyword">return</span> <span class="literal">true</span>;</span><br><span class="line">                } <span class="keyword">else</span> <span class="keyword">if</span>(matrix[row][col] &lt; target) {</span><br><span class="line">                    <span class="keyword">break</span>;</span><br><span class="line">                } <span class="keyword">else</span> {</span><br><span class="line">                    <span class="keyword">continue</span>;</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> <span class="literal">false</span>;</span><br><span class="line"></span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="34-在排序数组中查找元素的第一个和最后一个位置"><a href="#34-在排序数组中查找元素的第一个和最后一个位置" class="headerlink" title="34. 在排序数组中查找元素的第一个和最后一个位置"></a><a href="https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/">34. 在排序数组中查找元素的第一个和最后一个位置</a></h4><p>给你一个按照非递减顺序排列的整数数组 <code>nums</code>，和一个目标值 <code>target</code>。请你找出给定目标值在数组中的开始位置和结束位置。</p><p>如果数组中不存在目标值 <code>target</code>，返回 <code>[-1, -1]</code>。</p><p>你必须设计并实现时间复杂度为 <code>O(log n)</code> 的算法解决此问题。</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [5,7,7,8,8,10], target = 8</span><br><span class="line">输出：[3,4]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [5,7,7,8,8,10], target = 6</span><br><span class="line">输出：[-1,-1]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [], target = 0</span><br><span class="line">输出：[-1,-1]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>0 &lt;= nums.length &lt;= 105</code></li><li><code>-109 &lt;= nums[i] &lt;= 109</code></li><li><code>nums</code> 是一个非递减数组</li><li><code>-109 &lt;= target &lt;= 109</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span>[] searchRange(<span class="type">int</span>[] nums, <span class="type">int</span> target) {</span><br><span class="line">        </span><br><span class="line">        <span class="type">int</span>[] result = {-<span class="number">1</span>, -<span class="number">1</span>};</span><br><span class="line">        <span class="type">int</span> <span class="variable">resultLeftIndex</span> <span class="operator">=</span> -<span class="number">1</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">resultRightIndex</span> <span class="operator">=</span> -<span class="number">1</span>;</span><br><span class="line"></span><br><span class="line">        <span class="type">int</span> <span class="variable">left</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">right</span> <span class="operator">=</span> nums.length - <span class="number">1</span>;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">while</span>(left &lt;= right) {</span><br><span class="line">            <span class="type">int</span> <span class="variable">mid</span> <span class="operator">=</span> left + (right - left) / <span class="number">2</span>;</span><br><span class="line">            <span class="keyword">if</span>(nums[mid] == target) {</span><br><span class="line">                resultLeftIndex = mid;</span><br><span class="line">                resultRightIndex = mid;</span><br><span class="line">                <span class="keyword">break</span>;</span><br><span class="line">            } <span class="keyword">else</span> <span class="keyword">if</span>(nums[mid] &lt; target) {</span><br><span class="line">                left = mid + <span class="number">1</span>;</span><br><span class="line">            } <span class="keyword">else</span> {</span><br><span class="line">                right = mid - <span class="number">1</span>;</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        <span class="keyword">if</span>(resultLeftIndex == -<span class="number">1</span>) <span class="keyword">return</span> result;</span><br><span class="line">        </span><br><span class="line">        <span class="type">int</span> <span class="variable">tempLeft</span> <span class="operator">=</span> getFromDirection(nums, <span class="number">0</span>, resultLeftIndex - <span class="number">1</span>, target, <span class="number">1</span>);</span><br><span class="line">        <span class="type">int</span> <span class="variable">tempRight</span> <span class="operator">=</span> getFromDirection(nums, resultRightIndex + <span class="number">1</span>, nums.length - <span class="number">1</span>, target, <span class="number">2</span>);</span><br><span class="line">        <span class="keyword">if</span>(tempLeft != -<span class="number">1</span>) resultLeftIndex = tempLeft;</span><br><span class="line">        <span class="keyword">if</span>(tempRight != - <span class="number">1</span>) resultRightIndex = tempRight;</span><br><span class="line">        result[<span class="number">0</span>] = resultLeftIndex;</span><br><span class="line">        result[<span class="number">1</span>] = resultRightIndex;</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="type">int</span> <span class="title function_">getFromDirection</span><span class="params">(<span class="type">int</span>[] nums, <span class="type">int</span> start, <span class="type">int</span> end, <span class="type">int</span> target, <span class="type">int</span> direction)</span> {</span><br><span class="line">        <span class="type">int</span> <span class="variable">left</span> <span class="operator">=</span> start;</span><br><span class="line">        <span class="type">int</span> <span class="variable">right</span> <span class="operator">=</span> end;</span><br><span class="line">        <span class="type">int</span> <span class="variable">tempResult</span> <span class="operator">=</span> -<span class="number">1</span>;</span><br><span class="line">        <span class="keyword">while</span>(left &lt;= right) {</span><br><span class="line">            <span class="type">int</span> <span class="variable">mid</span> <span class="operator">=</span> left + (right - left) / <span class="number">2</span>;</span><br><span class="line">            <span class="keyword">if</span>(nums[mid] == target) {</span><br><span class="line">                tempResult = mid;</span><br><span class="line">                <span class="keyword">if</span>(direction == <span class="number">1</span>) right = mid - <span class="number">1</span>;</span><br><span class="line">                <span class="keyword">else</span> left = mid + <span class="number">1</span>;</span><br><span class="line">            } <span class="keyword">else</span> <span class="keyword">if</span>(nums[mid] &lt; target) {</span><br><span class="line">                left = mid + <span class="number">1</span>;</span><br><span class="line">            } <span class="keyword">else</span> {</span><br><span class="line">                right = mid - <span class="number">1</span>;</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> tempResult;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="33-搜索旋转排序数组"><a href="#33-搜索旋转排序数组" class="headerlink" title="33. 搜索旋转排序数组"></a><a href="https://leetcode.cn/problems/search-in-rotated-sorted-array/">33. 搜索旋转排序数组</a></h4><p>整数数组 <code>nums</code> 按升序排列，数组中的值 <strong>互不相同</strong> 。</p><p>在传递给函数之前，<code>nums</code> 在预先未知的某个下标 <code>k</code>（<code>0 &lt;= k &lt; nums.length</code>）上进行了 <strong>旋转</strong>，使数组变为 <code>[nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]]</code>（下标 <strong>从 0 开始</strong> 计数）。例如， <code>[0,1,2,4,5,6,7]</code> 在下标 <code>3</code> 处经旋转后可能变为 <code>[4,5,6,7,0,1,2]</code> 。</p><p>给你 <strong>旋转后</strong> 的数组 <code>nums</code> 和一个整数 <code>target</code> ，如果 <code>nums</code> 中存在这个目标值 <code>target</code> ，则返回它的下标，否则返回 <code>-1</code> 。</p><p>你必须设计一个时间复杂度为 <code>O(log n)</code> 的算法解决此问题。</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [4,5,6,7,0,1,2], target = 0</span><br><span class="line">输出：4</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [4,5,6,7,0,1,2], target = 3</span><br><span class="line">输出：-1</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [1], target = 0</span><br><span class="line">输出：-1</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= nums.length &lt;= 5000</code></li><li><code>-104 &lt;= nums[i] &lt;= 104</code></li><li><code>nums</code> 中的每个值都 <strong>独一无二</strong></li><li>题目数据保证 <code>nums</code> 在预先未知的某个下标上进行了旋转</li><li><code>-104 &lt;= target &lt;= 104</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">search</span><span class="params">(<span class="type">int</span>[] nums, <span class="type">int</span> target)</span> {</span><br><span class="line">        <span class="keyword">return</span> search(nums, <span class="number">0</span>, nums.length - <span class="number">1</span>, target);</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="type">int</span> <span class="title function_">search</span><span class="params">(<span class="type">int</span>[] nums, <span class="type">int</span> left, <span class="type">int</span> right, <span class="type">int</span> target)</span> {</span><br><span class="line">        <span class="keyword">if</span>(left &gt; right) <span class="keyword">return</span> -<span class="number">1</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">mid</span> <span class="operator">=</span> left + (right - left) / <span class="number">2</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">result</span> <span class="operator">=</span> -<span class="number">1</span>;</span><br><span class="line">        <span class="keyword">if</span>(nums[mid] == target) <span class="keyword">return</span> mid;</span><br><span class="line">        </span><br><span class="line">        <span class="comment">// 两边都有可能出现</span></span><br><span class="line"></span><br><span class="line">        <span class="comment">// 说明左边是增序</span></span><br><span class="line">        <span class="keyword">if</span>(nums[mid] &gt; nums[left] &amp;&amp; nums[left] &lt;= target &amp;&amp; target &lt; nums[mid]) result = binarySearch(nums, left, mid - <span class="number">1</span>, target);</span><br><span class="line">        <span class="keyword">else</span> result = search(nums, mid + <span class="number">1</span>, right, target); <span class="comment">// 说明右边有可能出现</span></span><br><span class="line">        <span class="keyword">if</span>(result != -<span class="number">1</span>) <span class="keyword">return</span> result;</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 说明右边是增序</span></span><br><span class="line">        <span class="keyword">if</span>(nums[mid] &lt; nums[right] &amp;&amp; nums[mid] &lt; target &amp;&amp; target &lt;= nums[right]) result = binarySearch(nums, mid +<span class="number">1</span>, right , target);</span><br><span class="line">        <span class="keyword">else</span> result = search(nums, left, mid - <span class="number">1</span>, target);  <span class="comment">// 说明左边有可能出现</span></span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="type">int</span> <span class="title function_">binarySearch</span><span class="params">(<span class="type">int</span>[] nums, <span class="type">int</span> left, <span class="type">int</span> right, <span class="type">int</span> target)</span> {</span><br><span class="line">        <span class="keyword">if</span>(left &gt; right) <span class="keyword">return</span> -<span class="number">1</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">result</span> <span class="operator">=</span> -<span class="number">1</span>;</span><br><span class="line">        <span class="keyword">while</span>(left &lt;= right) {</span><br><span class="line">            <span class="type">int</span> <span class="variable">mid</span> <span class="operator">=</span> left + (right - left) / <span class="number">2</span>;</span><br><span class="line">            <span class="keyword">if</span>(nums[mid] == target) {</span><br><span class="line">                result = mid;</span><br><span class="line">                <span class="keyword">break</span>;</span><br><span class="line">            } <span class="keyword">else</span> <span class="keyword">if</span>(nums[mid] &lt; target) {</span><br><span class="line">                left = mid + <span class="number">1</span>;</span><br><span class="line">            } <span class="keyword">else</span> {</span><br><span class="line">                right = mid - <span class="number">1</span>;</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> -<span class="number">1</span>;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="153-寻找旋转排序数组中的最小值"><a href="#153-寻找旋转排序数组中的最小值" class="headerlink" title="153. 寻找旋转排序数组中的最小值"></a><a href="https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/">153. 寻找旋转排序数组中的最小值</a></h4><p>已知一个长度为 <code>n</code> 的数组，预先按照升序排列，经由 <code>1</code> 到 <code>n</code> 次 <strong>旋转</strong> 后，得到输入数组。例如，原数组 <code>nums = [0,1,2,4,5,6,7]</code> 在变化后可能得到：</p><ul><li>若旋转 <code>4</code> 次，则可以得到 <code>[4,5,6,7,0,1,2]</code></li><li>若旋转 <code>7</code> 次，则可以得到 <code>[0,1,2,4,5,6,7]</code></li></ul><p>注意，数组 <code>[a[0], a[1], a[2], ..., a[n-1]]</code> <strong>旋转一次</strong> 的结果为数组 <code>[a[n-1], a[0], a[1], a[2], ..., a[n-2]]</code> 。</p><p>给你一个元素值 <strong>互不相同</strong> 的数组 <code>nums</code> ，它原来是一个升序排列的数组，并按上述情形进行了多次旋转。请你找出并返回数组中的 <strong>最小元素</strong> 。</p><p>你必须设计一个时间复杂度为 <code>O(log n)</code> 的算法解决此问题。</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [3,4,5,1,2]</span><br><span class="line">输出：1</span><br><span class="line">解释：原数组为 [1,2,3,4,5] ，旋转 3 次得到输入数组。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [4,5,6,7,0,1,2]</span><br><span class="line">输出：0</span><br><span class="line">解释：原数组为 [0,1,2,4,5,6,7] ，旋转 3 次得到输入数组。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [11,13,15,17]</span><br><span class="line">输出：11</span><br><span class="line">解释：原数组为 [11,13,15,17] ，旋转 4 次得到输入数组。</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>n == nums.length</code></li><li><code>1 &lt;= n &lt;= 5000</code></li><li><code>-5000 &lt;= nums[i] &lt;= 5000</code></li><li><code>nums</code> 中的所有整数 <strong>互不相同</strong></li><li><code>nums</code> 原来是一个升序排序的数组，并进行了 <code>1</code> 至 <code>n</code> 次旋转</li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">private</span> <span class="type">int</span> <span class="variable">min</span> <span class="operator">=</span> Integer.MAX_VALUE;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">findMin</span><span class="params">(<span class="type">int</span>[] nums)</span> {</span><br><span class="line">        <span class="type">int</span> <span class="variable">left</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">right</span> <span class="operator">=</span> nums.length - <span class="number">1</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">mid</span> <span class="operator">=</span> left + (right - left) / <span class="number">2</span>;</span><br><span class="line">        min = nums[mid];</span><br><span class="line">        </span><br><span class="line">        findMin(nums, left, mid - <span class="number">1</span>);</span><br><span class="line">        findMin(nums, mid + <span class="number">1</span>, right);</span><br><span class="line">        <span class="keyword">return</span> min;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">void</span> <span class="title function_">findMin</span><span class="params">(<span class="type">int</span>[] nums, <span class="type">int</span> left, <span class="type">int</span> right)</span> {</span><br><span class="line">        <span class="keyword">if</span>(left &gt; right) {</span><br><span class="line">            <span class="keyword">return</span> ;</span><br><span class="line">        }</span><br><span class="line">        <span class="type">int</span> <span class="variable">mid</span> <span class="operator">=</span> left + (right - left) / <span class="number">2</span>;</span><br><span class="line">        <span class="keyword">if</span>(nums[mid] &gt;= nums[left]) {</span><br><span class="line">            <span class="comment">// 说明左边是增序</span></span><br><span class="line">            min = Math.min(min, nums[left]);</span><br><span class="line">        }</span><br><span class="line">        findMin(nums, left, mid - <span class="number">1</span>);</span><br><span class="line">        <span class="keyword">if</span>(nums[mid] &lt;= nums[right]) {</span><br><span class="line">            <span class="comment">// 说明右边是增序</span></span><br><span class="line">            min = Math.min(min, nums[mid]);</span><br><span class="line">        }</span><br><span class="line">        findMin(nums, mid + <span class="number">1</span>, right);</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="4-寻找两个正序数组的中位数"><a href="#4-寻找两个正序数组的中位数" class="headerlink" title="4. 寻找两个正序数组的中位数"></a><a href="https://leetcode.cn/problems/median-of-two-sorted-arrays/">4. 寻找两个正序数组的中位数</a></h4><p>给定两个大小分别为 <code>m</code> 和 <code>n</code> 的正序（从小到大）数组 <code>nums1</code> 和 <code>nums2</code>。请你找出并返回这两个正序数组的 <strong>中位数</strong> 。</p><p>算法的时间复杂度应该为 <code>O(log (m+n))</code> 。</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：nums1 = [1,3], nums2 = [2]</span><br><span class="line">输出：2.00000</span><br><span class="line">解释：合并数组 = [1,2,3] ，中位数 2</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：nums1 = [1,2], nums2 = [3,4]</span><br><span class="line">输出：2.50000</span><br><span class="line">解释：合并数组 = [1,2,3,4] ，中位数 (2 + 3) / 2 = 2.5</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>nums1.length == m</code></li><li><code>nums2.length == n</code></li><li><code>0 &lt;= m &lt;= 1000</code></li><li><code>0 &lt;= n &lt;= 1000</code></li><li><code>1 &lt;= m + n &lt;= 2000</code></li><li><code>-106 &lt;= nums1[i], nums2[i] &lt;= 106</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">double</span> <span class="title function_">findMedianSortedArrays</span><span class="params">(<span class="type">int</span>[] nums1, <span class="type">int</span>[] nums2)</span> {</span><br><span class="line">        <span class="comment">// 求中位数，因为知道两个数组的长度，实际上就等于求 第 k 大的数</span></span><br><span class="line">        <span class="comment">// 我们要达到一个log(m + n)的时间复杂度，就是每次去过滤 k/2 的量</span></span><br><span class="line">        <span class="comment">// 直到我们求 k == 1 的时候</span></span><br><span class="line">        <span class="type">int</span> <span class="variable">indexFirstK</span> <span class="operator">=</span> (nums1.length + nums2.length + <span class="number">1</span>) / <span class="number">2</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">indexSecondK</span> <span class="operator">=</span> (nums1.length + nums2.length + <span class="number">2</span>) / <span class="number">2</span>;</span><br><span class="line">        <span class="keyword">return</span> (getKth(nums1, <span class="number">0</span>, nums1.length - <span class="number">1</span>, nums2, <span class="number">0</span>, nums2.length - <span class="number">1</span>, indexFirstK) +</span><br><span class="line">                getKth(nums1, <span class="number">0</span>, nums1.length - <span class="number">1</span>, nums2, <span class="number">0</span>, nums2.length - <span class="number">1</span>, indexSecondK)) * <span class="number">0.5</span>;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="comment">/**</span></span><br><span class="line"><span class="comment">     * 妙在什么地方</span></span><br><span class="line"><span class="comment">     * 第一个是 将中位数 转换为了 第k大</span></span><br><span class="line"><span class="comment">     * 随后 长度总和为奇数自然是 第k大</span></span><br><span class="line"><span class="comment">     * 还要考虑 长度总和为 偶数 自然还要知道 第 k + 1大</span></span><br><span class="line"><span class="comment">     *</span></span><br><span class="line"><span class="comment">     * 进入当前方法，要留意第一个数组为短的数组，可以使得之后的代码复用性高</span></span><br><span class="line"><span class="comment">     * 考虑 第一个数组过滤完的情况</span></span><br><span class="line"><span class="comment">     * 考虑 末端 只需要求 k 为 1 也就是 第 1 大的数的情况，那么自然只需要比较 两个数组的第一个数</span></span><br><span class="line"><span class="comment">     */</span></span><br><span class="line">    <span class="keyword">private</span> <span class="type">int</span> <span class="title function_">getKth</span><span class="params">(<span class="type">int</span>[] nums1, <span class="type">int</span> start1, <span class="type">int</span> end1,</span></span><br><span class="line"><span class="params">                       <span class="type">int</span>[] nums2, <span class="type">int</span> start2, <span class="type">int</span> end2,</span></span><br><span class="line"><span class="params">                       <span class="type">int</span> k)</span> {</span><br><span class="line">        <span class="type">int</span> <span class="variable">len1</span> <span class="operator">=</span> end1 - start1 + <span class="number">1</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">len2</span> <span class="operator">=</span> end2 - start2 + <span class="number">1</span>;</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 进入当前方法，要留意第一个数组为短的数组，可以使得之后的代码复用性高</span></span><br><span class="line">        <span class="keyword">if</span>(len1 &gt; len2) {</span><br><span class="line">            <span class="keyword">return</span> getKth(nums2, start2, end2, nums1, start1, end1, k);</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 考虑 第一个数组过滤完的情况</span></span><br><span class="line">        <span class="keyword">if</span>(len1 == <span class="number">0</span>) {</span><br><span class="line">            <span class="keyword">return</span> nums2[start2 + k - <span class="number">1</span>];</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 考虑 末端 只需要求 k 为 1 也就是 第 1 大的数的情况，那么自然只需要比较 两个数组的第一个数</span></span><br><span class="line">        <span class="keyword">if</span>(k == <span class="number">1</span>) {</span><br><span class="line">            <span class="keyword">return</span> Math.min(nums1[start1], nums2[start2]);</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 过滤 k / 2 的数，但要注意不要过滤过头了</span></span><br><span class="line">        <span class="type">int</span> <span class="variable">temp1</span> <span class="operator">=</span> start1 + Math.min(len1, k / <span class="number">2</span>) - <span class="number">1</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">temp2</span> <span class="operator">=</span> start2 + Math.min(len2, k / <span class="number">2</span>) - <span class="number">1</span>;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">if</span>(nums1[temp1] &gt; nums2[temp2]) {</span><br><span class="line">            <span class="comment">// 如果nums1的前K/2部分更大，意味着nums2的前K/2部分被过滤了</span></span><br><span class="line">            <span class="comment">// 但要注意，这里最后一个参数，要去 计算 具体被过滤的 个数，而不一定就是K/2个</span></span><br><span class="line">            <span class="comment">// 因为有可能长度不够，所以，temp参数计算过程中会有Math.min(len, k/2)</span></span><br><span class="line">            <span class="keyword">return</span> getKth(nums1, start1, end1, nums2, temp2 + <span class="number">1</span>, end2, k - (temp2 -start2 + <span class="number">1</span>));</span><br><span class="line">        } <span class="keyword">else</span> {</span><br><span class="line">            <span class="keyword">return</span> getKth(nums1, temp1 + <span class="number">1</span>, end1, nums2, start2, end2, k - (temp1- start1 + <span class="number">1</span>));</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="comment">//runtime:1 ms</span></span><br><span class="line"><span class="comment">//memory:44.7 MB</span></span><br></pre></td></tr></tbody></table></figure><hr><h3 id="回溯"><a href="#回溯" class="headerlink" title="回溯"></a>回溯</h3><h4 id="46-全排列"><a href="#46-全排列" class="headerlink" title="46. 全排列"></a><a href="https://leetcode.cn/problems/permutations/">46. 全排列</a></h4><p>给定一个不含重复数字的数组 <code>nums</code> ，返回其 <em>所有可能的全排列</em> 。你可以 <strong>按任意顺序</strong> 返回答案。</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [1,2,3]</span><br><span class="line">输出：[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [0,1]</span><br><span class="line">输出：[[0,1],[1,0]]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [1]</span><br><span class="line">输出：[[1]]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= nums.length &lt;= 6</code></li><li><code>-10 &lt;= nums[i] &lt;= 10</code></li><li><code>nums</code> 中的所有整数 <strong>互不相同</strong></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.util.ArrayList;</span><br><span class="line"><span class="keyword">import</span> java.util.Arrays;</span><br><span class="line"><span class="keyword">import</span> java.util.stream.Collectors;</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> <span class="keyword">static</span> java.util.stream.Collectors.toList;</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line"></span><br><span class="line">    List&lt;List&lt;Integer&gt;&gt; result = <span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;();</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> List&lt;List&lt;Integer&gt;&gt; <span class="title function_">permute</span><span class="params">(<span class="type">int</span>[] nums)</span> {</span><br><span class="line">        backTracking(nums, <span class="number">0</span>);</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">void</span> <span class="title function_">backTracking</span><span class="params">(<span class="type">int</span>[] nums, <span class="type">int</span> startIndex)</span> {</span><br><span class="line">        <span class="keyword">if</span>(startIndex == nums.length - <span class="number">1</span>) {</span><br><span class="line">            List&lt;Integer&gt; temp = Arrays.stream(nums).boxed().collect(toList());</span><br><span class="line">            result.add(temp);</span><br><span class="line">            <span class="keyword">return</span>;</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> startIndex; i &lt; nums.length; i++) {</span><br><span class="line">            swap(nums, i, startIndex);</span><br><span class="line">            backTracking(nums, startIndex + <span class="number">1</span>);</span><br><span class="line">            swap(nums, i, startIndex);</span><br><span class="line">        }</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">void</span> <span class="title function_">swap</span><span class="params">(<span class="type">int</span>[] nums, <span class="type">int</span> a, <span class="type">int</span> b)</span> {</span><br><span class="line">        <span class="type">int</span> <span class="variable">temp</span> <span class="operator">=</span> nums[a];</span><br><span class="line">        nums[a] = nums[b];</span><br><span class="line">        nums[b] = temp;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="78-子集"><a href="#78-子集" class="headerlink" title="78. 子集"></a><a href="https://leetcode.cn/problems/subsets/">78. 子集</a></h4><p>给你一个整数数组 <code>nums</code> ，数组中的元素 <strong>互不相同</strong> 。返回该数组所有可能的子集（幂集）。</p><p>解集 <strong>不能</strong> 包含重复的子集。你可以按 <strong>任意顺序</strong> 返回解集。</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [1,2,3]</span><br><span class="line">输出：[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [0]</span><br><span class="line">输出：[[],[0]]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= nums.length &lt;= 10</code></li><li><code>-10 &lt;= nums[i] &lt;= 10</code></li><li><code>nums</code> 中的所有元素 <strong>互不相同</strong></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> List&lt;List&lt;Integer&gt;&gt; result = <span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;();</span><br><span class="line">    <span class="keyword">public</span> List&lt;List&lt;Integer&gt;&gt; <span class="title function_">subsets</span><span class="params">(<span class="type">int</span>[] nums)</span> {</span><br><span class="line">        List&lt;Integer&gt; tempList = <span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;();</span><br><span class="line">        backTracking(nums, <span class="number">0</span>, tempList);</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">void</span> <span class="title function_">backTracking</span><span class="params">(<span class="type">int</span>[] nums, <span class="type">int</span> startIndex, List&lt;Integer&gt; tempList)</span> {</span><br><span class="line">        <span class="comment">// 这里就包含了空的列表</span></span><br><span class="line">        result.add(<span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;(tempList));</span><br><span class="line">        <span class="keyword">if</span>(startIndex == nums.length) <span class="keyword">return</span>;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> startIndex; i &lt; nums.length; i++) {</span><br><span class="line">            tempList.add(nums[i]);</span><br><span class="line">            backTracking(nums, i + <span class="number">1</span>, tempList);</span><br><span class="line">            tempList.remove(tempList.size() - <span class="number">1</span>);</span><br><span class="line">        }</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="17-电话号码的字母组合"><a href="#17-电话号码的字母组合" class="headerlink" title="17. 电话号码的字母组合"></a><a href="https://leetcode.cn/problems/letter-combinations-of-a-phone-number/">17. 电话号码的字母组合</a></h4><p>给定一个仅包含数字 <code>2-9</code> 的字符串，返回所有它能表示的字母组合。答案可以按 <strong>任意顺序</strong> 返回。</p><p>给出数字到字母的映射如下（与电话按键相同）。注意 1 不对应任何字母。</p><p><a href="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2021/11/09/200px-telephone-keypad2svg.png" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2021/11/09/200px-telephone-keypad2svg.png" alt="img"></a></p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：digits = "23"</span><br><span class="line">输出：["ad","ae","af","bd","be","bf","cd","ce","cf"]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：digits = ""</span><br><span class="line">输出：[]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：digits = "2"</span><br><span class="line">输出：["a","b","c"]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>0 &lt;= digits.length &lt;= 4</code></li><li><code>digits[i]</code> 是范围 <code>['2', '9']</code> 的一个数字。</li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.util.ArrayList;</span><br><span class="line"><span class="keyword">import</span> java.util.HashMap;</span><br><span class="line"><span class="keyword">import</span> java.util.List;</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line"></span><br><span class="line">    List&lt;String&gt; result = <span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;();</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> List&lt;String&gt; <span class="title function_">letterCombinations</span><span class="params">(String digits)</span> {</span><br><span class="line"></span><br><span class="line">        <span class="keyword">if</span>(digits == <span class="literal">null</span> || digits.length() &lt; <span class="number">1</span>) <span class="keyword">return</span> result;</span><br><span class="line"></span><br><span class="line">        HashMap&lt;Character, <span class="type">char</span>[]&gt; hashMap = <span class="keyword">new</span> <span class="title class_">HashMap</span>&lt;&gt;();</span><br><span class="line">        <span class="type">char</span> <span class="variable">currentChar</span> <span class="operator">=</span> <span class="string">'a'</span>;</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">num</span> <span class="operator">=</span> <span class="number">2</span>; num &lt;= <span class="number">9</span>; num++) {</span><br><span class="line">            <span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">3</span>;</span><br><span class="line">            <span class="keyword">if</span>(num == <span class="number">7</span> || num == <span class="number">9</span>) {</span><br><span class="line">                i = <span class="number">4</span>;</span><br><span class="line">            }</span><br><span class="line">            <span class="type">char</span>[] tempArray = <span class="keyword">new</span> <span class="title class_">char</span>[i];</span><br><span class="line">            <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">j</span> <span class="operator">=</span> <span class="number">0</span>; j &lt; i; j++) {</span><br><span class="line">                tempArray[j] = currentChar++;</span><br><span class="line">            }</span><br><span class="line">            hashMap.put((<span class="type">char</span>)(num + <span class="string">'0'</span>), tempArray);</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        List&lt;<span class="type">char</span>[]&gt; arrayList = <span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;();</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; digits.length(); i++) {</span><br><span class="line">            arrayList.add(hashMap.get(digits.charAt(i)));</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        <span class="type">StringBuilder</span> <span class="variable">sb</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">StringBuilder</span>();</span><br><span class="line">        backTracking(arrayList, <span class="number">0</span>, sb);</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">void</span> <span class="title function_">backTracking</span><span class="params">(List&lt;<span class="type">char</span>[]&gt; list, <span class="type">int</span> listIndex, StringBuilder sb)</span> {</span><br><span class="line">        <span class="keyword">if</span>(listIndex &gt; list.size()) <span class="keyword">return</span>;</span><br><span class="line">        <span class="keyword">if</span>(listIndex == list.size()) {</span><br><span class="line">            result.add(sb.toString());</span><br><span class="line">            <span class="keyword">return</span>;</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        <span class="type">char</span>[] currentCharArray = list.get(listIndex);</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; currentCharArray.length; i++) {</span><br><span class="line">            sb.append(currentCharArray[i]);</span><br><span class="line">            backTracking(list, listIndex + <span class="number">1</span>, sb);</span><br><span class="line">            sb.setLength(sb.length() - <span class="number">1</span>);</span><br><span class="line">        }</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="39-组合总和"><a href="#39-组合总和" class="headerlink" title="39. 组合总和"></a><a href="https://leetcode.cn/problems/combination-sum/">39. 组合总和</a></h4><p>给你一个 <strong>无重复元素</strong> 的整数数组 <code>candidates</code> 和一个目标整数 <code>target</code> ，找出 <code>candidates</code> 中可以使数字和为目标数 <code>target</code> 的 所有 <strong>不同组合</strong> ，并以列表形式返回。你可以按 <strong>任意顺序</strong> 返回这些组合。</p><p><code>candidates</code> 中的 <strong>同一个</strong> 数字可以 <strong>无限制重复被选取</strong> 。如果至少一个数字的被选数量不同，则两种组合是不同的。 </p><p>对于给定的输入，保证和为 <code>target</code> 的不同组合数少于 <code>150</code> 个。</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">输入：candidates = [2,3,6,7], target = 7</span><br><span class="line">输出：[[2,2,3],[7]]</span><br><span class="line">解释：</span><br><span class="line">2 和 3 可以形成一组候选，2 + 2 + 3 = 7 。注意 2 可以使用多次。</span><br><span class="line">7 也是一个候选， 7 = 7 。</span><br><span class="line">仅有这两种组合。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入: candidates = [2,3,5], target = 8</span><br><span class="line">输出: [[2,2,2,2],[2,3,3],[3,5]]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入: candidates = [2], target = 1</span><br><span class="line">输出: []</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= candidates.length &lt;= 30</code></li><li><code>2 &lt;= candidates[i] &lt;= 40</code></li><li><code>candidates</code> 的所有元素 <strong>互不相同</strong></li><li><code>1 &lt;= target &lt;= 40</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line"></span><br><span class="line">    List&lt;List&lt;Integer&gt;&gt; result = <span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;();</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> List&lt;List&lt;Integer&gt;&gt; <span class="title function_">combinationSum</span><span class="params">(<span class="type">int</span>[] candidates, <span class="type">int</span> target)</span> {</span><br><span class="line"></span><br><span class="line">        List&lt;Integer&gt; tempList = <span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;(); </span><br><span class="line">        <span class="comment">// 对 candidates 进行排序 方便剪枝</span></span><br><span class="line">        Arrays.sort(candidates); </span><br><span class="line">        <span class="type">int</span> <span class="variable">startIndex</span> <span class="operator">=</span> <span class="number">0</span>; </span><br><span class="line">        backtrack(candidates, startIndex, tempList, <span class="number">0</span>, target);</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">void</span> <span class="title function_">backtrack</span><span class="params">(<span class="type">int</span>[] candidates, <span class="type">int</span> startIndex, List&lt;Integer&gt; tempList, <span class="type">int</span> tempSum, <span class="type">int</span> target)</span> {</span><br><span class="line">        <span class="comment">// 子集和等于 target 时，记录解</span></span><br><span class="line">        <span class="keyword">if</span> (tempSum == target) {</span><br><span class="line">            result.add(<span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;(tempList));</span><br><span class="line">            <span class="keyword">return</span>;</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">for</span> (<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> startIndex; i &lt; candidates.length; i++) {</span><br><span class="line">            </span><br><span class="line">            <span class="keyword">if</span> (tempSum + candidates[i] &gt; target) {</span><br><span class="line">                <span class="keyword">break</span>;</span><br><span class="line">            }</span><br><span class="line">            </span><br><span class="line">            tempList.add(candidates[i]);</span><br><span class="line">            backtrack(candidates, i, tempList, tempSum + candidates[i], target);</span><br><span class="line">            tempList.remove(tempList.size() - <span class="number">1</span>);</span><br><span class="line">        }</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="22-括号生成"><a href="#22-括号生成" class="headerlink" title="22. 括号生成"></a><a href="https://leetcode.cn/problems/generate-parentheses/">22. 括号生成</a></h4><p>数字 <code>n</code> 代表生成括号的对数，请你设计一个函数，用于能够生成所有可能的并且 <strong>有效的</strong> 括号组合。</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：n = 3</span><br><span class="line">输出：["((()))","(()())","(())()","()(())","()()()"]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：n = 1</span><br><span class="line">输出：["()"]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= n &lt;= 8</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    List&lt;String&gt; result = <span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;();</span><br><span class="line">    <span class="keyword">public</span> List&lt;String&gt; <span class="title function_">generateParenthesis</span><span class="params">(<span class="type">int</span> n)</span> {</span><br><span class="line">        dfs(<span class="string">""</span>, n, n);</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">void</span> <span class="title function_">dfs</span><span class="params">(String s, <span class="type">int</span> leftNum, <span class="type">int</span> rightNum)</span> {</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">if</span>(leftNum &gt; rightNum) {</span><br><span class="line">            <span class="comment">// 左括号数量超过右括号数量，当然不行</span></span><br><span class="line">            <span class="keyword">return</span>;</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">if</span>(leftNum == <span class="number">0</span> &amp;&amp; rightNum == <span class="number">0</span>) {</span><br><span class="line">            result.add(s);</span><br><span class="line">            <span class="keyword">return</span>;</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">if</span>(leftNum &gt; <span class="number">0</span>) {</span><br><span class="line">            dfs(s + <span class="string">"("</span>, leftNum - <span class="number">1</span>, rightNum);</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">if</span>(rightNum &gt; <span class="number">0</span>) {</span><br><span class="line">            dfs(s + <span class="string">")"</span>, leftNum, rightNum - <span class="number">1</span>);</span><br><span class="line">        }</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="79-单词搜索"><a href="#79-单词搜索" class="headerlink" title="79. 单词搜索"></a><a href="https://leetcode.cn/problems/word-search/">79. 单词搜索</a></h4><p>给定一个 <code>m x n</code> 二维字符网格 <code>board</code> 和一个字符串单词 <code>word</code> 。如果 <code>word</code> 存在于网格中，返回 <code>true</code> ；否则，返回 <code>false</code> 。</p><p>单词必须按照字母顺序，通过相邻的单元格内的字母构成，其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。</p><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode.com/uploads/2020/11/04/word2.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2020/11/04/word2.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCED"</span><br><span class="line">输出：true</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><p><a href="https://assets.leetcode.com/uploads/2020/11/04/word-1.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2020/11/04/word-1.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "SEE"</span><br><span class="line">输出：true</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><p><a href="https://assets.leetcode.com/uploads/2020/10/15/word3.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2020/10/15/word3.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCB"</span><br><span class="line">输出：false</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>m == board.length</code></li><li><code>n = board[i].length</code></li><li><code>1 &lt;= m, n &lt;= 6</code></li><li><code>1 &lt;= word.length &lt;= 15</code></li><li><code>board</code> 和 <code>word</code> 仅由大小写英文字母组成</li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="type">int</span>[] position = <span class="keyword">new</span> <span class="title class_">int</span>[] {-<span class="number">1</span>, <span class="number">0</span>, <span class="number">1</span>, <span class="number">0</span>, -<span class="number">1</span>};</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="type">boolean</span> <span class="title function_">exist</span><span class="params">(<span class="type">char</span>[][] board, String word)</span> {</span><br><span class="line">        <span class="type">int</span> <span class="variable">rows</span> <span class="operator">=</span> board.length;</span><br><span class="line">        <span class="type">int</span> <span class="variable">cols</span> <span class="operator">=</span> board[<span class="number">0</span>].length;</span><br><span class="line"></span><br><span class="line">        <span class="type">boolean</span>[][] visited = <span class="keyword">new</span> <span class="title class_">boolean</span>[rows][cols];</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">row</span> <span class="operator">=</span> <span class="number">0</span>; row &lt; rows; row++) {</span><br><span class="line">            <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">col</span> <span class="operator">=</span> <span class="number">0</span>; col &lt; cols; col++) {</span><br><span class="line">                <span class="keyword">if</span>(board[row][col] == word.charAt(<span class="number">0</span>)) {</span><br><span class="line">                    <span class="keyword">if</span>(dfs(board, row, col, visited, <span class="number">0</span>, word)) {</span><br><span class="line">                        <span class="keyword">return</span> <span class="literal">true</span>;</span><br><span class="line">                    }</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> <span class="literal">false</span>;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="type">boolean</span> <span class="title function_">dfs</span><span class="params">(<span class="type">char</span>[][] board, <span class="type">int</span> row, <span class="type">int</span> col, <span class="type">boolean</span>[][] visited, <span class="type">int</span> index, String word)</span> {</span><br><span class="line">        <span class="keyword">if</span>(index == word.length() - <span class="number">1</span>) {</span><br><span class="line">            <span class="keyword">return</span> <span class="literal">true</span>;</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        visited[row][col] = <span class="literal">true</span>;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">k</span> <span class="operator">=</span> <span class="number">0</span>; k &lt; <span class="number">4</span>; k++) {</span><br><span class="line">            <span class="type">int</span> <span class="variable">m</span> <span class="operator">=</span> row + position[k];</span><br><span class="line">            <span class="type">int</span> <span class="variable">n</span> <span class="operator">=</span> col + position[k+<span class="number">1</span>];</span><br><span class="line">            <span class="keyword">if</span>(m &gt;= <span class="number">0</span> &amp;&amp; m &lt; board.length &amp;&amp; n &gt;= <span class="number">0</span> &amp;&amp; n &lt; board[<span class="number">0</span>].length</span><br><span class="line">                &amp;&amp; !visited[m][n] &amp;&amp; board[m][n] == word.charAt(index+<span class="number">1</span>)) {</span><br><span class="line">                <span class="keyword">if</span>(dfs(board, m, n, visited, index + <span class="number">1</span>, word)) {</span><br><span class="line">                    <span class="keyword">return</span> <span class="literal">true</span>;</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        visited[row][col] = <span class="literal">false</span>;</span><br><span class="line">        <span class="keyword">return</span> <span class="literal">false</span>;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="131-分割回文串"><a href="#131-分割回文串" class="headerlink" title="131. 分割回文串"></a><a href="https://leetcode.cn/problems/palindrome-partitioning/">131. 分割回文串</a></h4><p>给你一个字符串 <code>s</code>，请你将 <code>s</code> 分割成一些子串，使每个子串都是 <strong>回文串</strong>。返回 <code>s</code> 所有可能的分割方案。</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：s = "aab"</span><br><span class="line">输出：[["a","a","b"],["aa","b"]]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：s = "a"</span><br><span class="line">输出：[["a"]]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= s.length &lt;= 16</code></li><li><code>s</code> 仅由小写英文字母组成</li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line"></span><br><span class="line">    List&lt;List&lt;String&gt;&gt; result = <span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;();</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">public</span> List&lt;List&lt;String&gt;&gt; <span class="title function_">partition</span><span class="params">(String s)</span> {</span><br><span class="line">        List&lt;String&gt; tempList = <span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;();</span><br><span class="line">        backTracking(s, <span class="number">0</span>, tempList);</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">void</span> <span class="title function_">backTracking</span><span class="params">(String s, <span class="type">int</span> startIndex, List&lt;String&gt; tempList)</span> {</span><br><span class="line">        <span class="keyword">if</span> (startIndex == s.length()) {</span><br><span class="line">            result.add(<span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;(tempList)); </span><br><span class="line">            <span class="keyword">return</span>;</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">for</span> (<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> startIndex; i &lt; s.length(); i++) {</span><br><span class="line">            <span class="keyword">if</span> (isPalindrome(s, startIndex, i)) {</span><br><span class="line">                <span class="comment">// 直接先判断是否是回文串</span></span><br><span class="line">                tempList.add(s.substring(startIndex, i + <span class="number">1</span>));</span><br><span class="line">                backTracking(s, i + <span class="number">1</span>, tempList);</span><br><span class="line">                tempList.remove(tempList.size() - <span class="number">1</span>); </span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">    }</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">private</span> <span class="type">boolean</span> <span class="title function_">isPalindrome</span><span class="params">(String s, <span class="type">int</span> left, <span class="type">int</span> right)</span> {</span><br><span class="line">        <span class="keyword">while</span> (left &lt;= right) {</span><br><span class="line">            <span class="keyword">if</span> (s.charAt(left++) != s.charAt(right--)) {</span><br><span class="line">                <span class="keyword">return</span> <span class="literal">false</span>;</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> <span class="literal">true</span>;</span><br><span class="line">    }</span><br><span class="line">}</span><br><span class="line"></span><br></pre></td></tr></tbody></table></figure><h4 id="51-N-皇后"><a href="#51-N-皇后" class="headerlink" title="51. N 皇后"></a><a href="https://leetcode.cn/problems/n-queens/">51. N 皇后</a></h4><p>按照国际象棋的规则，皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。</p><p><strong>n 皇后问题</strong> 研究的是如何将 <code>n</code> 个皇后放置在 <code>n×n</code> 的棋盘上，并且使皇后彼此之间不能相互攻击。</p><p>给你一个整数 <code>n</code> ，返回所有不同的 <strong>n 皇后问题</strong> 的解决方案。</p><p>每一种解法包含一个不同的 <strong>n 皇后问题</strong> 的棋子放置方案，该方案中 <code>'Q'</code> 和 <code>'.'</code> 分别代表了皇后和空位。</p><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode.com/uploads/2020/11/13/queens.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2020/11/13/queens.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：n = 4</span><br><span class="line">输出：[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]]</span><br><span class="line">解释：如上图所示，4 皇后问题存在两个不同的解法。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：n = 1</span><br><span class="line">输出：[["Q"]]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= n &lt;= 9</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">private</span> List&lt;List&lt;String&gt;&gt; result = <span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;();</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">public</span> List&lt;List&lt;String&gt;&gt; <span class="title function_">solveNQueens</span><span class="params">(<span class="type">int</span> n)</span> {</span><br><span class="line">        <span class="comment">// 题目暗含了一个信息，每行最终只会有一个皇后</span></span><br><span class="line">        <span class="comment">// 所以我们就由每行来进行遍历</span></span><br><span class="line">        <span class="type">char</span>[][] board = <span class="keyword">new</span> <span class="title class_">char</span>[n][n];</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; n; i++) {</span><br><span class="line">            <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">j</span> <span class="operator">=</span> <span class="number">0</span>; j &lt; n; j++) {</span><br><span class="line">                board[i][j] = <span class="string">'.'</span>;</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        backTracking(board, <span class="number">0</span>, n);</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">void</span> <span class="title function_">backTracking</span><span class="params">(<span class="type">char</span>[][] board, <span class="type">int</span> row, <span class="type">int</span> n)</span> {</span><br><span class="line">        <span class="keyword">if</span>(row == n) {</span><br><span class="line">            List&lt;String&gt; tempResult = <span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;();</span><br><span class="line">            Arrays.stream(board).forEach(a -&gt; {</span><br><span class="line">               tempResult.add(<span class="keyword">new</span> <span class="title class_">String</span>(a));</span><br><span class="line">            });</span><br><span class="line">            result.add(tempResult);</span><br><span class="line">            <span class="keyword">return</span>;</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">col</span> <span class="operator">=</span> <span class="number">0</span>; col &lt; n; col++) {</span><br><span class="line">            <span class="keyword">if</span>(isValid(board, row, col, n)) {</span><br><span class="line">                board[row][col] = <span class="string">'Q'</span>;</span><br><span class="line">                backTracking(board, row + <span class="number">1</span>, n);</span><br><span class="line">                board[row][col] = <span class="string">'.'</span>;</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="type">boolean</span> <span class="title function_">isValid</span><span class="params">(<span class="type">char</span>[][] board, <span class="type">int</span> row, <span class="type">int</span> col, <span class="type">int</span> n)</span> {</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 判断该列有没有皇后</span></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; n; i++) {</span><br><span class="line">            <span class="keyword">if</span>(board[i][col] == <span class="string">'Q'</span>) {</span><br><span class="line">                <span class="keyword">return</span> <span class="literal">false</span>;</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="comment">// 判断左上角有没有皇后</span></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> row-<span class="number">1</span>, j = col-<span class="number">1</span>; i &gt;= <span class="number">0</span> &amp;&amp; j &gt;= <span class="number">0</span>; i--,j--) {</span><br><span class="line">            <span class="keyword">if</span>(board[i][j] == <span class="string">'Q'</span>) {</span><br><span class="line">                <span class="keyword">return</span> <span class="literal">false</span>;</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="comment">// 判断右上角有没有皇后</span></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> row-<span class="number">1</span>, j = col + <span class="number">1</span>; i&gt;=<span class="number">0</span>&amp;&amp;j&lt;n; i--,j++) {</span><br><span class="line">            <span class="keyword">if</span>(board[i][j] == <span class="string">'Q'</span>) {</span><br><span class="line">                <span class="keyword">return</span> <span class="literal">false</span>;</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> <span class="literal">true</span>;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><hr><h3 id="图论"><a href="#图论" class="headerlink" title="图论"></a>图论</h3><h4 id="200-岛屿数量"><a href="#200-岛屿数量" class="headerlink" title="200. 岛屿数量"></a><a href="https://leetcode.cn/problems/number-of-islands/">200. 岛屿数量</a></h4><p>给你一个由 <code>'1'</code>（陆地）和 <code>'0'</code>（水）组成的的二维网格，请你计算网格中岛屿的数量。</p><p>岛屿总是被水包围，并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。</p><p>此外，你可以假设该网格的四条边均被水包围。</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">输入：grid = [</span><br><span class="line">  ["1","1","1","1","0"],</span><br><span class="line">  ["1","1","0","1","0"],</span><br><span class="line">  ["1","1","0","0","0"],</span><br><span class="line">  ["0","0","0","0","0"]</span><br><span class="line">]</span><br><span class="line">输出：1</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">输入：grid = [</span><br><span class="line">  ["1","1","0","0","0"],</span><br><span class="line">  ["1","1","0","0","0"],</span><br><span class="line">  ["0","0","1","0","0"],</span><br><span class="line">  ["0","0","0","1","1"]</span><br><span class="line">]</span><br><span class="line">输出：3</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>m == grid.length</code></li><li><code>n == grid[i].length</code></li><li><code>1 &lt;= m, n &lt;= 300</code></li><li><code>grid[i][j]</code> 的值为 <code>'0'</code> 或 <code>'1'</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="type">int</span>[] position = {-<span class="number">1</span>, <span class="number">0</span>, <span class="number">1</span>, <span class="number">0</span>, -<span class="number">1</span>};</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">numIslands</span><span class="params">(<span class="type">char</span>[][] grid)</span> {</span><br><span class="line">        <span class="type">int</span> <span class="variable">islandCount</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">rows</span> <span class="operator">=</span> grid.length;</span><br><span class="line">        <span class="type">int</span> <span class="variable">cols</span> <span class="operator">=</span> grid[<span class="number">0</span>].length;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">row</span> <span class="operator">=</span> <span class="number">0</span>; row &lt; rows; row++) {</span><br><span class="line">            <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">col</span> <span class="operator">=</span> <span class="number">0</span>; col &lt; cols; col++) {</span><br><span class="line">                <span class="keyword">if</span>(grid[row][col] == <span class="string">'1'</span>) {</span><br><span class="line">                    islandCount++;</span><br><span class="line">                    dfs(grid, row, col);</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> islandCount;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">void</span> <span class="title function_">dfs</span><span class="params">(<span class="type">char</span>[][] grid, <span class="type">int</span> row, <span class="type">int</span> col)</span> {</span><br><span class="line">        <span class="keyword">if</span>(grid[row][col] == <span class="string">'0'</span>) <span class="keyword">return</span>;</span><br><span class="line">        grid[row][col] = <span class="string">'0'</span>;</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">k</span> <span class="operator">=</span> <span class="number">0</span>; k &lt; <span class="number">4</span>; k++) {</span><br><span class="line">            <span class="type">int</span> <span class="variable">m</span> <span class="operator">=</span> row + position[k];</span><br><span class="line">            <span class="type">int</span> <span class="variable">n</span> <span class="operator">=</span> col + position[k+<span class="number">1</span>];</span><br><span class="line">            <span class="keyword">if</span>(m &gt;= <span class="number">0</span> &amp;&amp; m &lt; grid.length &amp;&amp; n &gt;= <span class="number">0</span> &amp;&amp; n &lt; grid[<span class="number">0</span>].length &amp;&amp; grid[m][n] == <span class="string">'1'</span>) {</span><br><span class="line">                dfs(grid, m, n);</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="994-腐烂的橘子"><a href="#994-腐烂的橘子" class="headerlink" title="994. 腐烂的橘子"></a><a href="https://leetcode.cn/problems/rotting-oranges/">994. 腐烂的橘子</a></h4><p>在给定的 <code>m x n</code> 网格 <code>grid</code> 中，每个单元格可以有以下三个值之一：</p><ul><li>值 <code>0</code> 代表空单元格；</li><li>值 <code>1</code> 代表新鲜橘子；</li><li>值 <code>2</code> 代表腐烂的橘子。</li></ul><p>每分钟，腐烂的橘子 <strong>周围 4 个方向上相邻</strong> 的新鲜橘子都会腐烂。</p><p>返回 <em>直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能，返回 <code>-1</code></em> 。</p><p><strong>示例 1：</strong></p><p><strong><a href="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2019/02/16/oranges.png" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2019/02/16/oranges.png" alt="img"></a></strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：grid = [[2,1,1],[1,1,0],[0,1,1]]</span><br><span class="line">输出：4</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：grid = [[2,1,1],[0,1,1],[1,0,1]]</span><br><span class="line">输出：-1</span><br><span class="line">解释：左下角的橘子（第 2 行， 第 0 列）永远不会腐烂，因为腐烂只会发生在 4 个方向上。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：grid = [[0,2]]</span><br><span class="line">输出：0</span><br><span class="line">解释：因为 0 分钟时已经没有新鲜橘子了，所以答案就是 0 。</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>m == grid.length</code></li><li><code>n == grid[i].length</code></li><li><code>1 &lt;= m, n &lt;= 10</code></li><li><code>grid[i][j]</code> 仅为 <code>0</code>、<code>1</code> 或 <code>2</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="type">int</span>[] position = {-<span class="number">1</span>, <span class="number">0</span>, <span class="number">1</span>, <span class="number">0</span>, -<span class="number">1</span>};</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">orangesRotting</span><span class="params">(<span class="type">int</span>[][] grid)</span> {</span><br><span class="line">        <span class="type">int</span> <span class="variable">rows</span> <span class="operator">=</span> grid.length;</span><br><span class="line">        <span class="type">int</span> <span class="variable">cols</span> <span class="operator">=</span> grid[<span class="number">0</span>].length;</span><br><span class="line">        </span><br><span class="line">        LinkedList&lt;List&lt;Integer&gt;&gt; queue = <span class="keyword">new</span> <span class="title class_">LinkedList</span>&lt;&gt;();</span><br><span class="line">        <span class="type">int</span> <span class="variable">count</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">row</span> <span class="operator">=</span> <span class="number">0</span>; row &lt; rows; row++) {</span><br><span class="line">            <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">col</span> <span class="operator">=</span> <span class="number">0</span>; col &lt; cols; col++) {</span><br><span class="line">                <span class="keyword">if</span>(grid[row][col] == <span class="number">2</span>) {</span><br><span class="line">                    <span class="comment">// 找新鲜的</span></span><br><span class="line">                    dfs(grid, row, col, queue);</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">        <span class="keyword">while</span>(!queue.isEmpty()) {</span><br><span class="line">            <span class="comment">// 分钟数</span></span><br><span class="line">            count++;</span><br><span class="line">            <span class="type">int</span> <span class="variable">currentSize</span> <span class="operator">=</span> queue.size();</span><br><span class="line">            List&lt;List&lt;Integer&gt;&gt; tempList = <span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;();</span><br><span class="line">            <span class="comment">// 这里要先去全部感染这一层</span></span><br><span class="line">            <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; currentSize; i++) {</span><br><span class="line">                List&lt;Integer&gt; tempLocation = queue.pollFirst();</span><br><span class="line">                grid[tempLocation.get(<span class="number">0</span>)][tempLocation.get(<span class="number">1</span>)] = <span class="number">2</span>;</span><br><span class="line">                tempList.add(tempLocation);</span><br><span class="line">            }</span><br><span class="line">            <span class="comment">// 再找新鲜一层的坐标</span></span><br><span class="line">            <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; currentSize; i++) {</span><br><span class="line">                dfs(grid, tempList.get(i).get(<span class="number">0</span>), tempList.get(i).get(<span class="number">1</span>), queue);</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">row</span> <span class="operator">=</span> <span class="number">0</span>; row &lt; rows; row++) {</span><br><span class="line">            <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">col</span> <span class="operator">=</span> <span class="number">0</span>; col &lt; cols; col++) {</span><br><span class="line">                <span class="keyword">if</span>(grid[row][col] == <span class="number">1</span>) {</span><br><span class="line">                    <span class="keyword">return</span> -<span class="number">1</span>;</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> count;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">void</span> <span class="title function_">dfs</span><span class="params">(<span class="type">int</span>[][] grid, <span class="type">int</span> row, <span class="type">int</span> col, LinkedList&lt;List&lt;Integer&gt;&gt; queue)</span> {</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">k</span> <span class="operator">=</span> <span class="number">0</span>; k &lt; <span class="number">4</span>; k++) {</span><br><span class="line">            <span class="type">int</span> <span class="variable">nextI</span> <span class="operator">=</span> row + position[k];</span><br><span class="line">            <span class="type">int</span> <span class="variable">nextJ</span> <span class="operator">=</span> col + position[k+<span class="number">1</span>];</span><br><span class="line">            <span class="keyword">if</span>(nextI &gt;=<span class="number">0</span> &amp;&amp; nextI &lt; grid.length &amp;&amp; nextJ &gt;= <span class="number">0</span> &amp;&amp; nextJ &lt; grid[<span class="number">0</span>].length) {</span><br><span class="line">                <span class="keyword">if</span>(grid[nextI][nextJ] == <span class="number">1</span>) {</span><br><span class="line">                    <span class="comment">// 只保留新鲜的一层坐标</span></span><br><span class="line">                    queue.addLast(List.of(nextI, nextJ));</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="207-课程表"><a href="#207-课程表" class="headerlink" title="207. 课程表"></a><a href="https://leetcode.cn/problems/course-schedule/">207. 课程表</a></h4><p>你这个学期必须选修 <code>numCourses</code> 门课程，记为 <code>0</code> 到 <code>numCourses - 1</code> 。</p><p>在选修某些课程之前需要一些先修课程。 先修课程按数组 <code>prerequisites</code> 给出，其中 <code>prerequisites[i] = [ai, bi]</code> ，表示如果要学习课程 <code>ai</code> 则 <strong>必须</strong> 先学习课程 <code>bi</code> 。</p><ul><li>例如，先修课程对 <code>[0, 1]</code> 表示：想要学习课程 <code>0</code> ，你需要先完成课程 <code>1</code> 。</li></ul><p>请你判断是否可能完成所有课程的学习？如果可以，返回 <code>true</code> ；否则，返回 <code>false</code> 。</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：numCourses = 2, prerequisites = [[1,0]]</span><br><span class="line">输出：true</span><br><span class="line">解释：总共有 2 门课程。学习课程 1 之前，你需要完成课程 0 。这是可能的。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：numCourses = 2, prerequisites = [[1,0],[0,1]]</span><br><span class="line">输出：false</span><br><span class="line">解释：总共有 2 门课程。学习课程 1 之前，你需要先完成课程 0 ；并且学习课程 0 之前，你还应先完成课程 1 。这是不可能的。</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= numCourses &lt;= 2000</code></li><li><code>0 &lt;= prerequisites.length &lt;= 5000</code></li><li><code>prerequisites[i].length == 2</code></li><li><code>0 &lt;= ai, bi &lt; numCourses</code></li><li><code>prerequisites[i]</code> 中的所有课程对 <strong>互不相同</strong></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 本质上就是拓扑排序</span></span><br><span class="line">    <span class="keyword">public</span> <span class="type">boolean</span> <span class="title function_">canFinish</span><span class="params">(<span class="type">int</span> numCourses, <span class="type">int</span>[][] prerequisites)</span> {</span><br><span class="line">        </span><br><span class="line">        Map&lt;Integer, List&lt;Integer&gt;&gt; hashMap = <span class="keyword">new</span> <span class="title class_">HashMap</span>&lt;&gt;(); <span class="comment">// key：前提课程 相关的 value:后续课程</span></span><br><span class="line">        <span class="type">int</span>[] degreeArray = <span class="keyword">new</span> <span class="title class_">int</span>[numCourses];  <span class="comment">// 入度表, degreeArray[3] = 0 说明3号课程；不需要其他前提课程, degreeArray[2] = 3 说明2号课程需要3个前提课程；</span></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span>[] array : prerequisites) {</span><br><span class="line">            degreeArray[array[<span class="number">0</span>]]++; <span class="comment">// // [0,1]想要学习0, 必先学习1 所以记录0课程的入度</span></span><br><span class="line">            List&lt;Integer&gt; tempList = hashMap.getOrDefault(array[<span class="number">1</span>], <span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;Integer&gt;());</span><br><span class="line">            tempList.add(array[<span class="number">0</span>]);</span><br><span class="line">            hashMap.put(array[<span class="number">1</span>], tempList);</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        LinkedList&lt;Integer&gt; queue = <span class="keyword">new</span> <span class="title class_">LinkedList</span>&lt;&gt;();</span><br><span class="line">        <span class="comment">// 拓扑排序，把入度为0的入队，说明该课程应该是首先学习的</span></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; degreeArray.length; i++) {</span><br><span class="line">            <span class="keyword">if</span>(degreeArray[i] == <span class="number">0</span>) {</span><br><span class="line">                queue.addLast(i);</span><br><span class="line">                numCourses--;</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">while</span>(!queue.isEmpty()) {</span><br><span class="line">            <span class="type">int</span> <span class="variable">preCourse</span> <span class="operator">=</span> queue.pollFirst();</span><br><span class="line">            List&lt;Integer&gt; tempList = hashMap.get(preCourse);</span><br><span class="line">            <span class="keyword">if</span>(tempList != <span class="literal">null</span> &amp;&amp; tempList.size() &gt; <span class="number">0</span>) {</span><br><span class="line">                 <span class="comment">// 找到和 pre 相邻的节点，都去减少一度，减少后度数为0的话入队</span></span><br><span class="line">                <span class="keyword">for</span>(Integer nextNum : tempList) {</span><br><span class="line">                    degreeArray[nextNum]--;</span><br><span class="line">                    <span class="keyword">if</span>(degreeArray[nextNum] == <span class="number">0</span>) {</span><br><span class="line">                        queue.addLast(nextNum);</span><br><span class="line">                        numCourses--;</span><br><span class="line">                    }</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        <span class="keyword">return</span> numCourses == <span class="number">0</span>;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="208-实现-Trie-前缀树"><a href="#208-实现-Trie-前缀树" class="headerlink" title="208. 实现 Trie (前缀树)"></a><a href="https://leetcode.cn/problems/implement-trie-prefix-tree/">208. 实现 Trie (前缀树)</a></h4><p>**<a href="https://baike.baidu.com/item/%E5%AD%97%E5%85%B8%E6%A0%91/9825209?fr=aladdin">Trie</a>**（发音类似 “try”）或者说 <strong>前缀树</strong> 是一种树形数据结构，用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景，例如自动补完和拼写检查。</p><p>请你实现 Trie 类：</p><ul><li><code>Trie()</code> 初始化前缀树对象。</li><li><code>void insert(String word)</code> 向前缀树中插入字符串 <code>word</code> 。</li><li><code>boolean search(String word)</code> 如果字符串 <code>word</code> 在前缀树中，返回 <code>true</code>（即，在检索之前已经插入）；否则，返回 <code>false</code> 。</li><li><code>boolean startsWith(String prefix)</code> 如果之前已经插入的字符串 <code>word</code> 的前缀之一为 <code>prefix</code> ，返回 <code>true</code> ；否则，返回 <code>false</code> 。</li></ul><p><strong>示例：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">输入</span><br><span class="line">["Trie", "insert", "search", "search", "startsWith", "insert", "search"]</span><br><span class="line">[[], ["apple"], ["apple"], ["app"], ["app"], ["app"], ["app"]]</span><br><span class="line">输出</span><br><span class="line">[null, null, true, false, true, null, true]</span><br><span class="line"></span><br><span class="line">解释</span><br><span class="line">Trie trie = new Trie();</span><br><span class="line">trie.insert("apple");</span><br><span class="line">trie.search("apple");   // 返回 True</span><br><span class="line">trie.search("app");     // 返回 False</span><br><span class="line">trie.startsWith("app"); // 返回 True</span><br><span class="line">trie.insert("app");</span><br><span class="line">trie.search("app");     // 返回 True</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= word.length, prefix.length &lt;= 2000</code></li><li><code>word</code> 和 <code>prefix</code> 仅由小写英文字母组成</li><li><code>insert</code>、<code>search</code> 和 <code>startsWith</code> 调用次数 <strong>总计</strong> 不超过 <code>3 * 104</code> 次</li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Trie</span> {</span><br><span class="line">    <span class="comment">// 基本的原理 是 每一层都是26个字母，一层一层的记录</span></span><br><span class="line">    <span class="type">TrieNode</span> <span class="variable">root</span> <span class="operator">=</span> <span class="literal">null</span>;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="title function_">Trie</span><span class="params">()</span> {</span><br><span class="line">        root = <span class="keyword">new</span> <span class="title class_">TrieNode</span>();</span><br><span class="line">    }</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">insert</span><span class="params">(String word)</span> {</span><br><span class="line">        <span class="type">TrieNode</span> <span class="variable">temp</span> <span class="operator">=</span> root;</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; word.length(); i++) {</span><br><span class="line">            <span class="keyword">if</span>(temp.childNode[word.charAt(i) - <span class="string">'a'</span>] == <span class="literal">null</span>) {</span><br><span class="line">                temp.childNode[word.charAt(i) - <span class="string">'a'</span>] = <span class="keyword">new</span> <span class="title class_">TrieNode</span>();</span><br><span class="line">            }</span><br><span class="line">            temp = temp.childNode[word.charAt(i) - <span class="string">'a'</span>];</span><br><span class="line">        }</span><br><span class="line">        <span class="comment">// 记录 该单词 的最后端点 为 true</span></span><br><span class="line">        temp.isVal = <span class="literal">true</span>;</span><br><span class="line">    }</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">public</span> <span class="type">boolean</span> <span class="title function_">search</span><span class="params">(String word)</span> {</span><br><span class="line">        <span class="type">TrieNode</span> <span class="variable">temp</span> <span class="operator">=</span> root;</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; word.length(); i++) {</span><br><span class="line">            <span class="keyword">if</span>(temp == <span class="literal">null</span>) {</span><br><span class="line">                <span class="keyword">break</span>;</span><br><span class="line">            }</span><br><span class="line">            temp = temp.childNode[word.charAt(i) - <span class="string">'a'</span>];</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> temp != <span class="literal">null</span> ? temp.isVal : <span class="literal">false</span>;</span><br><span class="line">    }</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">public</span> <span class="type">boolean</span> <span class="title function_">startsWith</span><span class="params">(String prefix)</span> {</span><br><span class="line">        <span class="type">TrieNode</span> <span class="variable">temp</span> <span class="operator">=</span> root;</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; prefix.length(); i++) {</span><br><span class="line">            <span class="keyword">if</span>(temp == <span class="literal">null</span>) {</span><br><span class="line">                <span class="keyword">break</span>;</span><br><span class="line">            }</span><br><span class="line">            temp = temp.childNode[prefix.charAt(i) - <span class="string">'a'</span>];</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> temp != <span class="literal">null</span>;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">class</span> <span class="title class_">TrieNode</span> {</span><br><span class="line">        <span class="comment">// 26个英文字母</span></span><br><span class="line">        TrieNode[] childNode = <span class="keyword">new</span> <span class="title class_">TrieNode</span>[<span class="number">26</span>];</span><br><span class="line">        <span class="comment">// 单词的最后端点 为 true</span></span><br><span class="line">        <span class="type">boolean</span> isVal;</span><br><span class="line">        TrieNode() {</span><br><span class="line">            isVal = <span class="literal">false</span>;</span><br><span class="line">        }</span><br><span class="line">    }</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Your Trie object will be instantiated and called as such:</span></span><br><span class="line"><span class="comment"> * Trie obj = new Trie();</span></span><br><span class="line"><span class="comment"> * obj.insert(word);</span></span><br><span class="line"><span class="comment"> * boolean param_2 = obj.search(word);</span></span><br><span class="line"><span class="comment"> * boolean param_3 = obj.startsWith(prefix);</span></span><br><span class="line"><span class="comment"> */</span></span><br></pre></td></tr></tbody></table></figure><hr><h3 id="二叉树"><a href="#二叉树" class="headerlink" title="二叉树"></a>二叉树</h3><h4 id="94-二叉树的中序遍历"><a href="#94-二叉树的中序遍历" class="headerlink" title="94. 二叉树的中序遍历"></a><a href="https://leetcode.cn/problems/binary-tree-inorder-traversal/">94. 二叉树的中序遍历</a></h4><p>给定一个二叉树的根节点 <code>root</code> ，返回 <em>它的 <strong>中序</strong> 遍历</em> 。</p><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode.com/uploads/2020/09/15/inorder_1.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2020/09/15/inorder_1.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：root = [1,null,2,3]</span><br><span class="line">输出：[1,3,2]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：root = []</span><br><span class="line">输出：[]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：root = [1]</span><br><span class="line">输出：[1]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li>树中节点数目在范围 <code>[0, 100]</code> 内</li><li><code>-100 &lt;= Node.val &lt;= 100</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.util.ArrayList;</span><br><span class="line"></span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for a binary tree node.</span></span><br><span class="line"><span class="comment"> * public class TreeNode {</span></span><br><span class="line"><span class="comment"> *     int val;</span></span><br><span class="line"><span class="comment"> *     TreeNode left;</span></span><br><span class="line"><span class="comment"> *     TreeNode right;</span></span><br><span class="line"><span class="comment"> *     TreeNode() {}</span></span><br><span class="line"><span class="comment"> *     TreeNode(int val) { this.val = val; }</span></span><br><span class="line"><span class="comment"> *     TreeNode(int val, TreeNode left, TreeNode right) {</span></span><br><span class="line"><span class="comment"> *         this.val = val;</span></span><br><span class="line"><span class="comment"> *         this.left = left;</span></span><br><span class="line"><span class="comment"> *         this.right = right;</span></span><br><span class="line"><span class="comment"> *     }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">private</span> List&lt;Integer&gt; result = <span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;();</span><br><span class="line">    <span class="keyword">public</span> List&lt;Integer&gt; <span class="title function_">inorderTraversal</span><span class="params">(TreeNode root)</span> {</span><br><span class="line">        start(root);</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">void</span> <span class="title function_">start</span><span class="params">(TreeNode root)</span> {</span><br><span class="line">        <span class="keyword">if</span>(root == <span class="literal">null</span>) {</span><br><span class="line">            <span class="keyword">return</span>;</span><br><span class="line">        }</span><br><span class="line">        start(root.left);</span><br><span class="line">        result.add(root.val);</span><br><span class="line">        start(root.right);</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="104-二叉树的最大深度"><a href="#104-二叉树的最大深度" class="headerlink" title="104. 二叉树的最大深度"></a><a href="https://leetcode.cn/problems/maximum-depth-of-binary-tree/">104. 二叉树的最大深度</a></h4><p>给定一个二叉树 <code>root</code> ，返回其最大深度。</p><p>二叉树的 <strong>最大深度</strong> 是指从根节点到最远叶子节点的最长路径上的节点数。</p><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode.com/uploads/2020/11/26/tmp-tree.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2020/11/26/tmp-tree.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：root = [3,9,20,null,null,15,7]</span><br><span class="line">输出：3</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：root = [1,null,2]</span><br><span class="line">输出：2</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li>树中节点的数量在 <code>[0, 104]</code> 区间内。</li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for a binary tree node.</span></span><br><span class="line"><span class="comment"> * public class TreeNode {</span></span><br><span class="line"><span class="comment"> *     int val;</span></span><br><span class="line"><span class="comment"> *     TreeNode left;</span></span><br><span class="line"><span class="comment"> *     TreeNode right;</span></span><br><span class="line"><span class="comment"> *     TreeNode() {}</span></span><br><span class="line"><span class="comment"> *     TreeNode(int val) { this.val = val; }</span></span><br><span class="line"><span class="comment"> *     TreeNode(int val, TreeNode left, TreeNode right) {</span></span><br><span class="line"><span class="comment"> *         this.val = val;</span></span><br><span class="line"><span class="comment"> *         this.left = left;</span></span><br><span class="line"><span class="comment"> *         this.right = right;</span></span><br><span class="line"><span class="comment"> *     }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">maxDepth</span><span class="params">(TreeNode root)</span> {</span><br><span class="line">        <span class="comment">// 学习一下 一行解决</span></span><br><span class="line"><span class="keyword">return</span> root != <span class="literal">null</span> ?  <span class="number">1</span> + Math.max(maxDepth(root.left), maxDepth(root.right)) :  <span class="number">0</span>;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="226-翻转二叉树"><a href="#226-翻转二叉树" class="headerlink" title="226. 翻转二叉树"></a><a href="https://leetcode.cn/problems/invert-binary-tree/">226. 翻转二叉树</a></h4><p>给你一棵二叉树的根节点 <code>root</code> ，翻转这棵二叉树，并返回其根节点。</p><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode.com/uploads/2021/03/14/invert1-tree.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2021/03/14/invert1-tree.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：root = [4,2,7,1,3,6,9]</span><br><span class="line">输出：[4,7,2,9,6,3,1]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><p><a href="https://assets.leetcode.com/uploads/2021/03/14/invert2-tree.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2021/03/14/invert2-tree.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：root = [2,1,3]</span><br><span class="line">输出：[2,3,1]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：root = []</span><br><span class="line">输出：[]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li>树中节点数目范围在 <code>[0, 100]</code> 内</li><li><code>-100 &lt;= Node.val &lt;= 100</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for a binary tree node.</span></span><br><span class="line"><span class="comment"> * public class TreeNode {</span></span><br><span class="line"><span class="comment"> *     int val;</span></span><br><span class="line"><span class="comment"> *     TreeNode left;</span></span><br><span class="line"><span class="comment"> *     TreeNode right;</span></span><br><span class="line"><span class="comment"> *     TreeNode() {}</span></span><br><span class="line"><span class="comment"> *     TreeNode(int val) { this.val = val; }</span></span><br><span class="line"><span class="comment"> *     TreeNode(int val, TreeNode left, TreeNode right) {</span></span><br><span class="line"><span class="comment"> *         this.val = val;</span></span><br><span class="line"><span class="comment"> *         this.left = left;</span></span><br><span class="line"><span class="comment"> *         this.right = right;</span></span><br><span class="line"><span class="comment"> *     }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> TreeNode <span class="title function_">invertTree</span><span class="params">(TreeNode root)</span> {</span><br><span class="line">        <span class="keyword">if</span>(root == <span class="literal">null</span>) <span class="keyword">return</span> <span class="literal">null</span>;</span><br><span class="line">        <span class="type">TreeNode</span> <span class="variable">temp</span> <span class="operator">=</span> root.left;</span><br><span class="line">        root.left = root.right;</span><br><span class="line">        root.right = temp;</span><br><span class="line">        invertTree(root.left);</span><br><span class="line">        invertTree(root.right);</span><br><span class="line">        <span class="keyword">return</span> root;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="101-对称二叉树"><a href="#101-对称二叉树" class="headerlink" title="101. 对称二叉树"></a><a href="https://leetcode.cn/problems/symmetric-tree/">101. 对称二叉树</a></h4><p>给你一个二叉树的根节点 <code>root</code> ， 检查它是否轴对称。</p><p><strong>示例 1：</strong></p><p><a href="https://pic.leetcode.cn/1698026966-JDYPDU-image.png" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://pic.leetcode.cn/1698026966-JDYPDU-image.png" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：root = [1,2,2,3,4,4,3]</span><br><span class="line">输出：true</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><p><a href="https://pic.leetcode.cn/1698027008-nPFLbM-image.png" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://pic.leetcode.cn/1698027008-nPFLbM-image.png" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：root = [1,2,2,null,3,null,3]</span><br><span class="line">输出：false</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li>树中节点数目在范围 <code>[1, 1000]</code> 内</li><li><code>-100 &lt;= Node.val &lt;= 100</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for a binary tree node.</span></span><br><span class="line"><span class="comment"> * public class TreeNode {</span></span><br><span class="line"><span class="comment"> *     int val;</span></span><br><span class="line"><span class="comment"> *     TreeNode left;</span></span><br><span class="line"><span class="comment"> *     TreeNode right;</span></span><br><span class="line"><span class="comment"> *     TreeNode() {}</span></span><br><span class="line"><span class="comment"> *     TreeNode(int val) { this.val = val; }</span></span><br><span class="line"><span class="comment"> *     TreeNode(int val, TreeNode left, TreeNode right) {</span></span><br><span class="line"><span class="comment"> *         this.val = val;</span></span><br><span class="line"><span class="comment"> *         this.left = left;</span></span><br><span class="line"><span class="comment"> *         this.right = right;</span></span><br><span class="line"><span class="comment"> *     }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">boolean</span> <span class="title function_">isSymmetric</span><span class="params">(TreeNode root)</span> {</span><br><span class="line"><span class="keyword">return</span> root == <span class="literal">null</span> ? <span class="literal">true</span> : isSymmetric(root.left, root.right);</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="type">boolean</span> <span class="title function_">isSymmetric</span><span class="params">(TreeNode left, TreeNode right)</span> {</span><br><span class="line">        <span class="comment">// 都为空 则递归结束，对称</span></span><br><span class="line">        <span class="keyword">if</span>(left == <span class="literal">null</span> &amp;&amp; right == <span class="literal">null</span>) {</span><br><span class="line">            <span class="keyword">return</span> <span class="literal">true</span>;</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">if</span>(left == <span class="literal">null</span> || right == <span class="literal">null</span>) {</span><br><span class="line">            <span class="comment">// 其一为空，另一不为空，非对称</span></span><br><span class="line">            <span class="keyword">return</span> <span class="literal">false</span>;</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">if</span>(left.val != right.val) {</span><br><span class="line">            <span class="comment">// 值不相同 非对称</span></span><br><span class="line">            <span class="keyword">return</span> <span class="literal">false</span>;</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 根据对称原则 去 递归</span></span><br><span class="line">        <span class="keyword">return</span> isSymmetric(left.left, right.right) &amp;&amp; isSymmetric(left.right, right.left);</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="543-二叉树的直径"><a href="#543-二叉树的直径" class="headerlink" title="543. 二叉树的直径"></a><a href="https://leetcode.cn/problems/diameter-of-binary-tree/">543. 二叉树的直径</a></h4><p>给你一棵二叉树的根节点，返回该树的 <strong>直径</strong> 。</p><p>二叉树的 <strong>直径</strong> 是指树中任意两个节点之间最长路径的 <strong>长度</strong> 。这条路径可能经过也可能不经过根节点 <code>root</code> 。</p><p>两节点之间路径的 <strong>长度</strong> 由它们之间边数表示。</p><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode.com/uploads/2021/03/06/diamtree.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2021/03/06/diamtree.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：root = [1,2,3,4,5]</span><br><span class="line">输出：3</span><br><span class="line">解释：3 ，取路径 [4,2,1,3] 或 [5,2,1,3] 的长度。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：root = [1,2]</span><br><span class="line">输出：1</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li>树中节点数目在范围 <code>[1, 104]</code> 内</li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for a binary tree node.</span></span><br><span class="line"><span class="comment"> * public class TreeNode {</span></span><br><span class="line"><span class="comment"> *     int val;</span></span><br><span class="line"><span class="comment"> *     TreeNode left;</span></span><br><span class="line"><span class="comment"> *     TreeNode right;</span></span><br><span class="line"><span class="comment"> *     TreeNode() {}</span></span><br><span class="line"><span class="comment"> *     TreeNode(int val) { this.val = val; }</span></span><br><span class="line"><span class="comment"> *     TreeNode(int val, TreeNode left, TreeNode right) {</span></span><br><span class="line"><span class="comment"> *         this.val = val;</span></span><br><span class="line"><span class="comment"> *         this.left = left;</span></span><br><span class="line"><span class="comment"> *         this.right = right;</span></span><br><span class="line"><span class="comment"> *     }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="type">int</span> <span class="variable">diameter</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">diameterOfBinaryTree</span><span class="params">(TreeNode root)</span> {</span><br><span class="line">        <span class="comment">//  利用的还是求树的最大深度！！！</span></span><br><span class="line">        helper(root);</span><br><span class="line">        <span class="keyword">return</span> diameter;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="type">int</span> <span class="title function_">helper</span><span class="params">(TreeNode  root)</span> {</span><br><span class="line">        <span class="keyword">if</span>(root == <span class="literal">null</span>) {</span><br><span class="line">            <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">        }</span><br><span class="line">        <span class="type">int</span> <span class="variable">left</span> <span class="operator">=</span> helper(root.left);</span><br><span class="line">        <span class="type">int</span> <span class="variable">right</span> <span class="operator">=</span> helper(root.right);</span><br><span class="line">        diameter = Math.max(diameter, left + right);</span><br><span class="line">        <span class="keyword">return</span> <span class="number">1</span> + Math.max(left, right);</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="102-二叉树的层序遍历"><a href="#102-二叉树的层序遍历" class="headerlink" title="102. 二叉树的层序遍历"></a><a href="https://leetcode.cn/problems/binary-tree-level-order-traversal/">102. 二叉树的层序遍历</a></h4><p>给你二叉树的根节点 <code>root</code> ，返回其节点值的 <strong>层序遍历</strong> 。 （即逐层地，从左到右访问所有节点）。</p><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode.com/uploads/2021/02/19/tree1.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2021/02/19/tree1.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：root = [3,9,20,null,null,15,7]</span><br><span class="line">输出：[[3],[9,20],[15,7]]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：root = [1]</span><br><span class="line">输出：[[1]]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：root = []</span><br><span class="line">输出：[]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li>树中节点数目在范围 <code>[0, 2000]</code> 内</li><li><code>-1000 &lt;= Node.val &lt;= 1000</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.util.ArrayList;</span><br><span class="line"><span class="keyword">import</span> java.util.LinkedList;</span><br><span class="line"></span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for a binary tree node.</span></span><br><span class="line"><span class="comment"> * public class TreeNode {</span></span><br><span class="line"><span class="comment"> *     int val;</span></span><br><span class="line"><span class="comment"> *     TreeNode left;</span></span><br><span class="line"><span class="comment"> *     TreeNode right;</span></span><br><span class="line"><span class="comment"> *     TreeNode() {}</span></span><br><span class="line"><span class="comment"> *     TreeNode(int val) { this.val = val; }</span></span><br><span class="line"><span class="comment"> *     TreeNode(int val, TreeNode left, TreeNode right) {</span></span><br><span class="line"><span class="comment"> *         this.val = val;</span></span><br><span class="line"><span class="comment"> *         this.left = left;</span></span><br><span class="line"><span class="comment"> *         this.right = right;</span></span><br><span class="line"><span class="comment"> *     }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> List&lt;List&lt;Integer&gt;&gt; <span class="title function_">levelOrder</span><span class="params">(TreeNode root)</span> {</span><br><span class="line">        List&lt;List&lt;Integer&gt;&gt; result = <span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;();</span><br><span class="line">        <span class="keyword">if</span>(root == <span class="literal">null</span>) <span class="keyword">return</span> result;</span><br><span class="line">        LinkedList&lt;TreeNode&gt; queue = <span class="keyword">new</span> <span class="title class_">LinkedList</span>&lt;TreeNode&gt;();</span><br><span class="line">        queue.add(root);</span><br><span class="line">        <span class="type">int</span> <span class="variable">count</span> <span class="operator">=</span> queue.size();</span><br><span class="line">        <span class="keyword">while</span>(!queue.isEmpty()) {</span><br><span class="line">            <span class="type">int</span> <span class="variable">currentSize</span> <span class="operator">=</span> count;</span><br><span class="line">            count = <span class="number">0</span>;</span><br><span class="line">            List&lt;Integer&gt; tempResult = <span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;();</span><br><span class="line">            <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; currentSize; i++) {</span><br><span class="line">                <span class="type">TreeNode</span> <span class="variable">node</span> <span class="operator">=</span> queue.pollFirst();</span><br><span class="line">                tempResult.add(node.val);</span><br><span class="line">                <span class="keyword">if</span>(node.left != <span class="literal">null</span>) {</span><br><span class="line">                    queue.offerLast(node.left);</span><br><span class="line">                    count++;</span><br><span class="line">                }</span><br><span class="line">                <span class="keyword">if</span>(node.right != <span class="literal">null</span>) {</span><br><span class="line">                    queue.offerLast(node.right);</span><br><span class="line">                    count++;</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">            result.add(tempResult);</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="108-将有序数组转换为二叉搜索树"><a href="#108-将有序数组转换为二叉搜索树" class="headerlink" title="108. 将有序数组转换为二叉搜索树"></a><a href="https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/">108. 将有序数组转换为二叉搜索树</a></h4><p>给你一个整数数组 <code>nums</code> ，其中元素已经按 <strong>升序</strong> 排列，请你将其转换为一棵 平衡 二叉搜索树。</p><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode.com/uploads/2021/02/18/btree1.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2021/02/18/btree1.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [-10,-3,0,5,9]</span><br><span class="line">输出：[0,-3,9,-10,null,5]</span><br><span class="line">解释：[0,-10,5,null,-3,null,9] 也将被视为正确答案：</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><p><a href="https://assets.leetcode.com/uploads/2021/02/18/btree.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2021/02/18/btree.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [1,3]</span><br><span class="line">输出：[3,1]</span><br><span class="line">解释：[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= nums.length &lt;= 104</code></li><li><code>-104 &lt;= nums[i] &lt;= 104</code></li><li><code>nums</code> 按 <strong>严格递增</strong> 顺序排列</li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for a binary tree node.</span></span><br><span class="line"><span class="comment"> * public class TreeNode {</span></span><br><span class="line"><span class="comment"> *     int val;</span></span><br><span class="line"><span class="comment"> *     TreeNode left;</span></span><br><span class="line"><span class="comment"> *     TreeNode right;</span></span><br><span class="line"><span class="comment"> *     TreeNode() {}</span></span><br><span class="line"><span class="comment"> *     TreeNode(int val) { this.val = val; }</span></span><br><span class="line"><span class="comment"> *     TreeNode(int val, TreeNode left, TreeNode right) {</span></span><br><span class="line"><span class="comment"> *         this.val = val;</span></span><br><span class="line"><span class="comment"> *         this.left = left;</span></span><br><span class="line"><span class="comment"> *         this.right = right;</span></span><br><span class="line"><span class="comment"> *     }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> TreeNode <span class="title function_">sortedArrayToBST</span><span class="params">(<span class="type">int</span>[] nums)</span> {</span><br><span class="line">        <span class="keyword">return</span> build(nums, <span class="number">0</span>, nums.length - <span class="number">1</span>);</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> TreeNode <span class="title function_">build</span><span class="params">(<span class="type">int</span>[] nums, <span class="type">int</span> startIndex, <span class="type">int</span> endIndex)</span> {</span><br><span class="line">        <span class="keyword">if</span>(startIndex &gt; endIndex) <span class="keyword">return</span> <span class="literal">null</span>;</span><br><span class="line"></span><br><span class="line">        </span><br><span class="line">        <span class="type">int</span> <span class="variable">midIndex</span> <span class="operator">=</span> startIndex + (endIndex - startIndex) / <span class="number">2</span>;</span><br><span class="line">        <span class="type">TreeNode</span> <span class="variable">root</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">TreeNode</span>(nums[midIndex]);</span><br><span class="line">        root.left = build(nums, startIndex, midIndex - <span class="number">1</span>);</span><br><span class="line">        root.right = build(nums, midIndex + <span class="number">1</span>, endIndex);</span><br><span class="line">        <span class="keyword">return</span> root;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="98-验证二叉搜索树"><a href="#98-验证二叉搜索树" class="headerlink" title="98. 验证二叉搜索树"></a><a href="https://leetcode.cn/problems/validate-binary-search-tree/">98. 验证二叉搜索树</a></h4><p>给你一个二叉树的根节点 <code>root</code> ，判断其是否是一个有效的二叉搜索树。</p><p><strong>有效</strong> 二叉搜索树定义如下：</p><ul><li><p>节点的左</p><p>子树</p><p>只包含</p><p> 小于 </p><p>当前节点的数。</p></li><li><p>节点的右子树只包含 <strong>大于</strong> 当前节点的数。</p></li><li><p>所有左子树和右子树自身必须也是二叉搜索树。</p></li></ul><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode.com/uploads/2020/12/01/tree1.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2020/12/01/tree1.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：root = [2,1,3]</span><br><span class="line">输出：true</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><p><a href="https://assets.leetcode.com/uploads/2020/12/01/tree2.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2020/12/01/tree2.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：root = [5,1,4,null,null,3,6]</span><br><span class="line">输出：false</span><br><span class="line">解释：根节点的值是 5 ，但是右子节点的值是 4 。</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li>树中节点数目范围在<code>[1, 104]</code> 内</li><li><code>-231 &lt;= Node.val &lt;= 231 - 1</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for a binary tree node.</span></span><br><span class="line"><span class="comment"> * public class TreeNode {</span></span><br><span class="line"><span class="comment"> *     int val;</span></span><br><span class="line"><span class="comment"> *     TreeNode left;</span></span><br><span class="line"><span class="comment"> *     TreeNode right;</span></span><br><span class="line"><span class="comment"> *     TreeNode() {}</span></span><br><span class="line"><span class="comment"> *     TreeNode(int val) { this.val = val; }</span></span><br><span class="line"><span class="comment"> *     TreeNode(int val, TreeNode left, TreeNode right) {</span></span><br><span class="line"><span class="comment"> *         this.val = val;</span></span><br><span class="line"><span class="comment"> *         this.left = left;</span></span><br><span class="line"><span class="comment"> *         this.right = right;</span></span><br><span class="line"><span class="comment"> *     }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="type">boolean</span> <span class="variable">flag</span> <span class="operator">=</span> <span class="literal">false</span>;</span><br><span class="line">    <span class="type">int</span> <span class="variable">preNum</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">public</span> <span class="type">boolean</span> <span class="title function_">isValidBST</span><span class="params">(TreeNode root)</span> {</span><br><span class="line">        <span class="keyword">if</span>(root == <span class="literal">null</span>) <span class="keyword">return</span> <span class="literal">true</span>;</span><br><span class="line"></span><br><span class="line">        <span class="type">boolean</span> <span class="variable">left</span> <span class="operator">=</span> isValidBST(root.left);</span><br><span class="line">        <span class="keyword">if</span>(!flag) {</span><br><span class="line">            flag = <span class="literal">true</span>;</span><br><span class="line">            preNum = root.val;</span><br><span class="line">        } <span class="keyword">else</span> {</span><br><span class="line">            <span class="keyword">if</span>(root.val &lt;= preNum) {</span><br><span class="line">                <span class="keyword">return</span> <span class="literal">false</span>;</span><br><span class="line">            }</span><br><span class="line">            preNum = root.val;</span><br><span class="line">        }</span><br><span class="line">        <span class="type">boolean</span> <span class="variable">right</span> <span class="operator">=</span> isValidBST(root.right);</span><br><span class="line">        <span class="keyword">return</span> left &amp;&amp; right;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="230-二叉搜索树中第K小的元素"><a href="#230-二叉搜索树中第K小的元素" class="headerlink" title="230. 二叉搜索树中第K小的元素"></a><a href="https://leetcode.cn/problems/kth-smallest-element-in-a-bst/">230. 二叉搜索树中第K小的元素</a></h4><p>给定一个二叉搜索树的根节点 <code>root</code> ，和一个整数 <code>k</code> ，请你设计一个算法查找其中第 <code>k</code> 小的元素（从 1 开始计数）。</p><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode.com/uploads/2021/01/28/kthtree1.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2021/01/28/kthtree1.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：root = [3,1,4,null,2], k = 1</span><br><span class="line">输出：1</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><p><a href="https://assets.leetcode.com/uploads/2021/01/28/kthtree2.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2021/01/28/kthtree2.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：root = [5,3,6,2,4,null,null,1], k = 3</span><br><span class="line">输出：3</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li>树中的节点数为 <code>n</code> 。</li><li><code>1 &lt;= k &lt;= n &lt;= 104</code></li><li><code>0 &lt;= Node.val &lt;= 104</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.util.HashSet;</span><br><span class="line"></span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for a binary tree node.</span></span><br><span class="line"><span class="comment"> * public class TreeNode {</span></span><br><span class="line"><span class="comment"> *     int val;</span></span><br><span class="line"><span class="comment"> *     TreeNode left;</span></span><br><span class="line"><span class="comment"> *     TreeNode right;</span></span><br><span class="line"><span class="comment"> *     TreeNode() {}</span></span><br><span class="line"><span class="comment"> *     TreeNode(int val) { this.val = val; }</span></span><br><span class="line"><span class="comment"> *     TreeNode(int val, TreeNode left, TreeNode right) {</span></span><br><span class="line"><span class="comment"> *         this.val = val;</span></span><br><span class="line"><span class="comment"> *         this.left = left;</span></span><br><span class="line"><span class="comment"> *         this.right = right;</span></span><br><span class="line"><span class="comment"> *     }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">private</span> <span class="type">int</span> num;</span><br><span class="line">    <span class="keyword">private</span> <span class="type">int</span> currentK;</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">kthSmallest</span><span class="params">(TreeNode root, <span class="type">int</span> k)</span> {</span><br><span class="line">        currentK = k;</span><br><span class="line">        helper(root, k);</span><br><span class="line">        <span class="keyword">return</span> num;</span><br><span class="line">    }</span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">void</span> <span class="title function_">helper</span><span class="params">(TreeNode root, <span class="type">int</span> k)</span> {</span><br><span class="line">        <span class="keyword">if</span>(root == <span class="literal">null</span>) <span class="keyword">return</span>;</span><br><span class="line">        helper(root.left, k);</span><br><span class="line">        currentK--;</span><br><span class="line">        <span class="keyword">if</span>(currentK == <span class="number">0</span>) {</span><br><span class="line">            num = root.val;</span><br><span class="line">        }</span><br><span class="line">        helper(root.right, k);</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="199-二叉树的右视图"><a href="#199-二叉树的右视图" class="headerlink" title="199. 二叉树的右视图"></a><a href="https://leetcode.cn/problems/binary-tree-right-side-view/">199. 二叉树的右视图</a></h4><p>给定一个二叉树的 <strong>根节点</strong> <code>root</code>，想象自己站在它的右侧，按照从顶部到底部的顺序，返回从右侧所能看到的节点值。</p><p><strong>示例 1:</strong></p><p><a href="https://assets.leetcode.com/uploads/2021/02/14/tree.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2021/02/14/tree.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入: [1,2,3,null,5,null,4]</span><br><span class="line">输出: [1,3,4]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入: [1,null,3]</span><br><span class="line">输出: [1,3]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入: []</span><br><span class="line">输出: []</span><br></pre></td></tr></tbody></table></figure><p><strong>提示:</strong></p><ul><li>二叉树的节点个数的范围是 <code>[0,100]</code></li><li><code>-100 &lt;= Node.val &lt;= 100</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.util.ArrayList;</span><br><span class="line"><span class="keyword">import</span> java.util.LinkedList;</span><br><span class="line"></span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for a binary tree node.</span></span><br><span class="line"><span class="comment"> * public class TreeNode {</span></span><br><span class="line"><span class="comment"> *     int val;</span></span><br><span class="line"><span class="comment"> *     TreeNode left;</span></span><br><span class="line"><span class="comment"> *     TreeNode right;</span></span><br><span class="line"><span class="comment"> *     TreeNode() {}</span></span><br><span class="line"><span class="comment"> *     TreeNode(int val) { this.val = val; }</span></span><br><span class="line"><span class="comment"> *     TreeNode(int val, TreeNode left, TreeNode right) {</span></span><br><span class="line"><span class="comment"> *         this.val = val;</span></span><br><span class="line"><span class="comment"> *         this.left = left;</span></span><br><span class="line"><span class="comment"> *         this.right = right;</span></span><br><span class="line"><span class="comment"> *     }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> List&lt;Integer&gt; <span class="title function_">rightSideView</span><span class="params">(TreeNode root)</span> {</span><br><span class="line">        List&lt;Integer&gt; result = <span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;();</span><br><span class="line">        <span class="keyword">if</span>(root == <span class="literal">null</span>) <span class="keyword">return</span> result;</span><br><span class="line">        LinkedList&lt;TreeNode&gt; queue = <span class="keyword">new</span> <span class="title class_">LinkedList</span>&lt;TreeNode&gt;();</span><br><span class="line">        queue.add(root);</span><br><span class="line">        <span class="type">int</span> <span class="variable">count</span> <span class="operator">=</span> queue.size();</span><br><span class="line">        <span class="keyword">while</span>(!queue.isEmpty()) {</span><br><span class="line">            <span class="type">int</span> <span class="variable">currentSize</span> <span class="operator">=</span> count;</span><br><span class="line">            count = <span class="number">0</span>;</span><br><span class="line">            <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; currentSize; i++) {</span><br><span class="line">                <span class="type">TreeNode</span> <span class="variable">node</span> <span class="operator">=</span> queue.pollFirst();</span><br><span class="line">                <span class="keyword">if</span>(i == currentSize - <span class="number">1</span>) {</span><br><span class="line">                    result.add(node.val);</span><br><span class="line">                }</span><br><span class="line">                <span class="keyword">if</span>(node.left != <span class="literal">null</span>) {</span><br><span class="line">                    queue.offerLast(node.left);</span><br><span class="line">                    count++;</span><br><span class="line">                }</span><br><span class="line">                <span class="keyword">if</span>(node.right != <span class="literal">null</span>) {</span><br><span class="line">                    queue.offerLast(node.right);</span><br><span class="line">                    count++;</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span>  result;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="114-二叉树展开为链表"><a href="#114-二叉树展开为链表" class="headerlink" title="114. 二叉树展开为链表"></a><a href="https://leetcode.cn/problems/flatten-binary-tree-to-linked-list/">114. 二叉树展开为链表</a></h4><p>给你二叉树的根结点 <code>root</code> ，请你将它展开为一个单链表：</p><ul><li>展开后的单链表应该同样使用 <code>TreeNode</code> ，其中 <code>right</code> 子指针指向链表中下一个结点，而左子指针始终为 <code>null</code> 。</li><li>展开后的单链表应该与二叉树 <a href="https://baike.baidu.com/item/%E5%85%88%E5%BA%8F%E9%81%8D%E5%8E%86/6442839?fr=aladdin"><strong>先序遍历</strong></a> 顺序相同。</li></ul><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode.com/uploads/2021/01/14/flaten.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2021/01/14/flaten.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：root = [1,2,5,3,4,null,6]</span><br><span class="line">输出：[1,null,2,null,3,null,4,null,5,null,6]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：root = []</span><br><span class="line">输出：[]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：root = [0]</span><br><span class="line">输出：[0]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li>树中结点数在范围 <code>[0, 2000]</code> 内</li><li><code>-100 &lt;= Node.val &lt;= 100</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for a binary tree node.</span></span><br><span class="line"><span class="comment"> * public class TreeNode {</span></span><br><span class="line"><span class="comment"> *     int val;</span></span><br><span class="line"><span class="comment"> *     TreeNode left;</span></span><br><span class="line"><span class="comment"> *     TreeNode right;</span></span><br><span class="line"><span class="comment"> *     TreeNode() {}</span></span><br><span class="line"><span class="comment"> *     TreeNode(int val) { this.val = val; }</span></span><br><span class="line"><span class="comment"> *     TreeNode(int val, TreeNode left, TreeNode right) {</span></span><br><span class="line"><span class="comment"> *         this.val = val;</span></span><br><span class="line"><span class="comment"> *         this.left = left;</span></span><br><span class="line"><span class="comment"> *         this.right = right;</span></span><br><span class="line"><span class="comment"> *     }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">flatten</span><span class="params">(TreeNode root)</span> {</span><br><span class="line">        <span class="keyword">if</span>(root == <span class="literal">null</span>) <span class="keyword">return</span>;</span><br><span class="line">        <span class="type">TreeNode</span> <span class="variable">left</span> <span class="operator">=</span> root.left;</span><br><span class="line">        <span class="type">TreeNode</span> <span class="variable">right</span> <span class="operator">=</span> root.right;</span><br><span class="line">        root.left = <span class="literal">null</span>;</span><br><span class="line">        root.right = <span class="literal">null</span>;</span><br><span class="line"></span><br><span class="line">        <span class="type">TreeNode</span> <span class="variable">tempTail</span> <span class="operator">=</span> construct(root, left);</span><br><span class="line">        construct(tempTail, right);</span><br><span class="line"></span><br><span class="line">    }</span><br><span class="line">    <span class="keyword">private</span> TreeNode <span class="title function_">construct</span><span class="params">(TreeNode preTail, TreeNode bRoot)</span>{</span><br><span class="line">        <span class="keyword">if</span>(bRoot == <span class="literal">null</span>) <span class="keyword">return</span> preTail;</span><br><span class="line"></span><br><span class="line">        preTail.right = bRoot;</span><br><span class="line">        preTail = preTail.right;</span><br><span class="line">        <span class="type">TreeNode</span> <span class="variable">left</span> <span class="operator">=</span> preTail.left;</span><br><span class="line">        <span class="type">TreeNode</span> <span class="variable">right</span> <span class="operator">=</span> preTail.right;</span><br><span class="line">        preTail.left = <span class="literal">null</span>;</span><br><span class="line">        preTail.right = <span class="literal">null</span>;</span><br><span class="line">        <span class="keyword">if</span>(left != <span class="literal">null</span>) {</span><br><span class="line">            preTail = construct(preTail, left);</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">if</span>(right != <span class="literal">null</span>) {</span><br><span class="line">            preTail = construct(preTail, right);</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> preTail;</span><br><span class="line">        </span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="105-从前序与中序遍历序列构造二叉树"><a href="#105-从前序与中序遍历序列构造二叉树" class="headerlink" title="105. 从前序与中序遍历序列构造二叉树"></a><a href="https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/">105. 从前序与中序遍历序列构造二叉树</a></h4><p>给定两个整数数组 <code>preorder</code> 和 <code>inorder</code> ，其中 <code>preorder</code> 是二叉树的<strong>先序遍历</strong>， <code>inorder</code> 是同一棵树的<strong>中序遍历</strong>，请构造二叉树并返回其根节点。</p><p><strong>示例 1:</strong></p><p><a href="https://assets.leetcode.com/uploads/2021/02/19/tree.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2021/02/19/tree.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]</span><br><span class="line">输出: [3,9,20,null,null,15,7]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入: preorder = [-1], inorder = [-1]</span><br><span class="line">输出: [-1]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示:</strong></p><ul><li><code>1 &lt;= preorder.length &lt;= 3000</code></li><li><code>inorder.length == preorder.length</code></li><li><code>-3000 &lt;= preorder[i], inorder[i] &lt;= 3000</code></li><li><code>preorder</code> 和 <code>inorder</code> 均 <strong>无重复</strong> 元素</li><li><code>inorder</code> 均出现在 <code>preorder</code></li><li><code>preorder</code> <strong>保证</strong> 为二叉树的前序遍历序列</li><li><code>inorder</code> <strong>保证</strong> 为二叉树的中序遍历序列</li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.util.HashMap;</span><br><span class="line"></span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for a binary tree node.</span></span><br><span class="line"><span class="comment"> * public class TreeNode {</span></span><br><span class="line"><span class="comment"> *     int val;</span></span><br><span class="line"><span class="comment"> *     TreeNode left;</span></span><br><span class="line"><span class="comment"> *     TreeNode right;</span></span><br><span class="line"><span class="comment"> *     TreeNode() {}</span></span><br><span class="line"><span class="comment"> *     TreeNode(int val) { this.val = val; }</span></span><br><span class="line"><span class="comment"> *     TreeNode(int val, TreeNode left, TreeNode right) {</span></span><br><span class="line"><span class="comment"> *         this.val = val;</span></span><br><span class="line"><span class="comment"> *         this.left = left;</span></span><br><span class="line"><span class="comment"> *         this.right = right;</span></span><br><span class="line"><span class="comment"> *     }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> TreeNode <span class="title function_">buildTree</span><span class="params">(<span class="type">int</span>[] preorder, <span class="type">int</span>[] inorder)</span> {</span><br><span class="line">        <span class="comment">// 道理其实就是找到左右区间</span></span><br><span class="line"></span><br><span class="line">        <span class="comment">// inOrderMap 记录下 中序每个数 的位置， 方便快速找到</span></span><br><span class="line">        HashMap&lt;Integer, Integer&gt; inOrderMap = <span class="keyword">new</span> <span class="title class_">HashMap</span>&lt;&gt;();</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; inorder.length; i++) {</span><br><span class="line">            inOrderMap.put(inorder[i], i);</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        <span class="keyword">return</span> buildTree(<span class="number">0</span>, preorder, inorder, inOrderMap, <span class="number">0</span>, inorder.length - <span class="number">1</span>);</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> TreeNode <span class="title function_">buildTree</span><span class="params">(<span class="type">int</span> rootIndex, <span class="type">int</span>[] preOrder, <span class="type">int</span>[] inOrder, HashMap&lt;Integer, Integer&gt; inOrderMap,</span></span><br><span class="line"><span class="params">                               <span class="type">int</span> inOrderStartIndex, <span class="type">int</span> inOrderEndIndex)</span> {</span><br><span class="line">        <span class="comment">// 条件范围, 该节点rootIndex当然得在范围内</span></span><br><span class="line">        <span class="comment">// inOrderStartIndex 当然得在范围内，且不能超过 inOrderEndIndex</span></span><br><span class="line">        <span class="comment">// inOrderEndIndex 当然得在范围内</span></span><br><span class="line">        <span class="keyword">if</span>(rootIndex &lt; <span class="number">0</span> || rootIndex &gt;= preOrder.length ||</span><br><span class="line">                inOrderStartIndex &lt; <span class="number">0</span> || inOrderStartIndex &gt;= inOrder.length || inOrderStartIndex &gt; inOrderEndIndex ||</span><br><span class="line">                inOrderEndIndex &lt; <span class="number">0</span> || inOrderEndIndex &gt;= inOrder.length) {</span><br><span class="line">            <span class="keyword">return</span> <span class="literal">null</span>;</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 拿到根节点</span></span><br><span class="line">        <span class="type">int</span> <span class="variable">val</span> <span class="operator">=</span> preOrder[rootIndex];</span><br><span class="line">        <span class="comment">// 拿到 该根节点 的中序位置</span></span><br><span class="line">        <span class="type">int</span> <span class="variable">inOrderIndex</span> <span class="operator">=</span> inOrderMap.get(val);</span><br><span class="line">        <span class="comment">// 拿到 该 根节点的左子树长度</span></span><br><span class="line">        <span class="type">int</span> <span class="variable">leftLength</span> <span class="operator">=</span> inOrderIndex - inOrderStartIndex;</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 开始构建</span></span><br><span class="line">        <span class="type">TreeNode</span> <span class="variable">root</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">TreeNode</span>(val);</span><br><span class="line">        root.left = buildTree(rootIndex+<span class="number">1</span>, preOrder, inOrder, inOrderMap, inOrderStartIndex, inOrderIndex - <span class="number">1</span>);</span><br><span class="line">        root.right = buildTree(rootIndex+leftLength + <span class="number">1</span>, preOrder, inOrder, inOrderMap, inOrderIndex+<span class="number">1</span>, inOrderEndIndex);</span><br><span class="line">        <span class="keyword">return</span> root;</span><br><span class="line"></span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="437-路径总和-III"><a href="#437-路径总和-III" class="headerlink" title="437. 路径总和 III"></a><a href="https://leetcode.cn/problems/path-sum-iii/">437. 路径总和 III</a></h4><p>给定一个二叉树的根节点 <code>root</code> ，和一个整数 <code>targetSum</code> ，求该二叉树里节点值之和等于 <code>targetSum</code> 的 <strong>路径</strong> 的数目。</p><p><strong>路径</strong> 不需要从根节点开始，也不需要在叶子节点结束，但是路径方向必须是向下的（只能从父节点到子节点）。</p><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode.com/uploads/2021/04/09/pathsum3-1-tree.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2021/04/09/pathsum3-1-tree.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：root = [10,5,-3,3,2,null,11,3,-2,null,1], targetSum = 8</span><br><span class="line">输出：3</span><br><span class="line">解释：和等于 8 的路径有 3 条，如图所示。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22</span><br><span class="line">输出：3</span><br></pre></td></tr></tbody></table></figure><p><strong>提示:</strong></p><ul><li>二叉树的节点个数的范围是 <code>[0,1000]</code></li><li><code>-109 &lt;= Node.val &lt;= 109</code> </li><li><code>-1000 &lt;= targetSum &lt;= 1000</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for a binary tree node.</span></span><br><span class="line"><span class="comment"> * public class TreeNode {</span></span><br><span class="line"><span class="comment"> *     int val;</span></span><br><span class="line"><span class="comment"> *     TreeNode left;</span></span><br><span class="line"><span class="comment"> *     TreeNode right;</span></span><br><span class="line"><span class="comment"> *     TreeNode() {}</span></span><br><span class="line"><span class="comment"> *     TreeNode(int val) { this.val = val; }</span></span><br><span class="line"><span class="comment"> *     TreeNode(int val, TreeNode left, TreeNode right) {</span></span><br><span class="line"><span class="comment"> *         this.val = val;</span></span><br><span class="line"><span class="comment"> *         this.left = left;</span></span><br><span class="line"><span class="comment"> *         this.right = right;</span></span><br><span class="line"><span class="comment"> *     }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">pathSum</span><span class="params">(TreeNode root, <span class="type">int</span> targetSum)</span> {</span><br><span class="line"><span class="comment">// 递归,但开始的要每个都开始去找，所以需要 主方法完成每个节点去找，子方法去判断是否满足，有多少条</span></span><br><span class="line">       <span class="keyword">return</span> root == <span class="literal">null</span> ? <span class="number">0</span> : getResult(root, targetSum) + pathSum(root.left, targetSum) + pathSum(root.right, targetSum);</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="type">int</span> <span class="title function_">getResult</span><span class="params">(TreeNode root, <span class="type">long</span> targetSum)</span> {</span><br><span class="line">        <span class="comment">// 注意他妈的 这里的入参 变成了 long</span></span><br><span class="line">        <span class="keyword">if</span>(root == <span class="literal">null</span>) {</span><br><span class="line">            <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">        }</span><br><span class="line">        <span class="type">int</span> <span class="variable">count</span> <span class="operator">=</span> root.val == targetSum ? <span class="number">1</span> : <span class="number">0</span>;</span><br><span class="line">        count += getResult(root.left, targetSum - root.val);</span><br><span class="line">        count += getResult(root.right, targetSum - root.val);</span><br><span class="line">        <span class="keyword">return</span> count;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="236-二叉树的最近公共祖先"><a href="#236-二叉树的最近公共祖先" class="headerlink" title="236. 二叉树的最近公共祖先"></a><a href="https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/">236. 二叉树的最近公共祖先</a></h4><p>给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。</p><p><a href="https://baike.baidu.com/item/%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B1%E7%A5%96%E5%85%88/8918834?fr=aladdin">百度百科</a>中最近公共祖先的定义为：“对于有根树 T 的两个节点 p、q，最近公共祖先表示为一个节点 x，满足 x 是 p、q 的祖先且 x 的深度尽可能大（<strong>一个节点也可以是它自己的祖先</strong>）。”</p><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode.com/uploads/2018/12/14/binarytree.png" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2018/12/14/binarytree.png" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1</span><br><span class="line">输出：3</span><br><span class="line">解释：节点 5 和节点 1 的最近公共祖先是节点 3 。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><p><a href="https://assets.leetcode.com/uploads/2018/12/14/binarytree.png" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2018/12/14/binarytree.png" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 4</span><br><span class="line">输出：5</span><br><span class="line">解释：节点 5 和节点 4 的最近公共祖先是节点 5 。因为根据定义最近公共祖先节点可以为节点本身。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：root = [1,2], p = 1, q = 2</span><br><span class="line">输出：1</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li>树中节点数目在范围 <code>[2, 105]</code> 内。</li><li><code>-109 &lt;= Node.val &lt;= 109</code></li><li>所有 <code>Node.val</code> <code>互不相同</code> 。</li><li><code>p != q</code></li><li><code>p</code> 和 <code>q</code> 均存在于给定的二叉树中。</li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for a binary tree node.</span></span><br><span class="line"><span class="comment"> * public class TreeNode {</span></span><br><span class="line"><span class="comment"> *     int val;</span></span><br><span class="line"><span class="comment"> *     TreeNode left;</span></span><br><span class="line"><span class="comment"> *     TreeNode right;</span></span><br><span class="line"><span class="comment"> *     TreeNode(int x) { val = x; }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> TreeNode <span class="title function_">lowestCommonAncestor</span><span class="params">(TreeNode root, TreeNode p, TreeNode q)</span> {</span><br><span class="line">        <span class="comment">// 找到了直接返回</span></span><br><span class="line">        <span class="keyword">if</span>(root == <span class="literal">null</span> || root == p || root == q) <span class="keyword">return</span> root;</span><br><span class="line">        <span class="comment">// 先往左边找</span></span><br><span class="line">        <span class="type">TreeNode</span> <span class="variable">left</span> <span class="operator">=</span> lowestCommonAncestor(root.left, p, q);</span><br><span class="line">        <span class="comment">// 再往右边找</span></span><br><span class="line">        <span class="type">TreeNode</span> <span class="variable">right</span> <span class="operator">=</span> lowestCommonAncestor(root.right, p, q);</span><br><span class="line">        <span class="comment">// 都找到左子节点了，还是没找到，直接返回右边</span></span><br><span class="line">        <span class="keyword">if</span>(left == <span class="literal">null</span>) <span class="keyword">return</span> right;</span><br><span class="line">        <span class="comment">// 都找到右子节点了，还是没找到，直接返回右边</span></span><br><span class="line">        <span class="keyword">if</span>(right == <span class="literal">null</span>) <span class="keyword">return</span> left;</span><br><span class="line">        <span class="comment">// 两边都没找到，返回根节点</span></span><br><span class="line">        <span class="keyword">return</span> root;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="124-二叉树中的最大路径和"><a href="#124-二叉树中的最大路径和" class="headerlink" title="124. 二叉树中的最大路径和"></a><a href="https://leetcode.cn/problems/binary-tree-maximum-path-sum/">124. 二叉树中的最大路径和</a></h4><p>二叉树中的 <strong>路径</strong> 被定义为一条节点序列，序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 <strong>至多出现一次</strong> 。该路径 <strong>至少包含一个</strong> 节点，且不一定经过根节点。</p><p><strong>路径和</strong> 是路径中各节点值的总和。</p><p>给你一个二叉树的根节点 <code>root</code> ，返回其 <strong>最大路径和</strong> 。</p><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode.com/uploads/2020/10/13/exx1.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2020/10/13/exx1.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：root = [1,2,3]</span><br><span class="line">输出：6</span><br><span class="line">解释：最优路径是 2 -&gt; 1 -&gt; 3 ，路径和为 2 + 1 + 3 = 6</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><p><a href="https://assets.leetcode.com/uploads/2020/10/13/exx2.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2020/10/13/exx2.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：root = [-10,9,20,null,null,15,7]</span><br><span class="line">输出：42</span><br><span class="line">解释：最优路径是 15 -&gt; 20 -&gt; 7 ，路径和为 15 + 20 + 7 = 42</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li>树中节点数目范围是 <code>[1, 3 * 104]</code></li><li><code>-1000 &lt;= Node.val &lt;= 1000</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Definition for a binary tree node.</span></span><br><span class="line"><span class="comment"> * public class TreeNode {</span></span><br><span class="line"><span class="comment"> *     int val;</span></span><br><span class="line"><span class="comment"> *     TreeNode left;</span></span><br><span class="line"><span class="comment"> *     TreeNode right;</span></span><br><span class="line"><span class="comment"> *     TreeNode() {}</span></span><br><span class="line"><span class="comment"> *     TreeNode(int val) { this.val = val; }</span></span><br><span class="line"><span class="comment"> *     TreeNode(int val, TreeNode left, TreeNode right) {</span></span><br><span class="line"><span class="comment"> *         this.val = val;</span></span><br><span class="line"><span class="comment"> *         this.left = left;</span></span><br><span class="line"><span class="comment"> *         this.right = right;</span></span><br><span class="line"><span class="comment"> *     }</span></span><br><span class="line"><span class="comment"> * }</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="type">int</span> <span class="variable">result</span> <span class="operator">=</span> Integer.MIN_VALUE;</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">maxPathSum</span><span class="params">(TreeNode root)</span> {</span><br><span class="line">        helper(root);</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line">    <span class="keyword">private</span> <span class="type">int</span> <span class="title function_">helper</span><span class="params">(TreeNode root)</span> {</span><br><span class="line">        <span class="keyword">if</span>(root == <span class="literal">null</span>) <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">left</span> <span class="operator">=</span> helper(root.left);</span><br><span class="line">        <span class="type">int</span> <span class="variable">right</span> <span class="operator">=</span> helper(root.right);</span><br><span class="line">        </span><br><span class="line">        <span class="comment">// 临时计算 从这个节点，左右最大进行保存</span></span><br><span class="line">        <span class="type">int</span> <span class="variable">temp</span> <span class="operator">=</span> root.val;</span><br><span class="line">        <span class="keyword">if</span>(left &gt; <span class="number">0</span>) temp += left;</span><br><span class="line">        <span class="keyword">if</span>(right &gt; <span class="number">0</span>) temp += right;</span><br><span class="line">        result = Math.max(result, temp);</span><br><span class="line">        </span><br><span class="line">        <span class="comment">// 递归返回最大</span></span><br><span class="line">        <span class="keyword">return</span> Math.max(root.val, Math.max(left, right) + root.val);</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><hr><h3 id="矩阵"><a href="#矩阵" class="headerlink" title="矩阵"></a>矩阵</h3><h4 id="73-矩阵置零"><a href="#73-矩阵置零" class="headerlink" title="73. 矩阵置零"></a><a href="https://leetcode.cn/problems/set-matrix-zeroes/">73. 矩阵置零</a></h4><p>给定一个 <code>m x n</code> 的矩阵，如果一个元素为 <strong>0</strong> ，则将其所在行和列的所有元素都设为 <strong>0</strong> 。请使用 <strong><a href="http://baike.baidu.com/item/%E5%8E%9F%E5%9C%B0%E7%AE%97%E6%B3%95">原地</a></strong> 算法<strong>。</strong></p><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode.com/uploads/2020/08/17/mat1.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2020/08/17/mat1.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：matrix = [[1,1,1],[1,0,1],[1,1,1]]</span><br><span class="line">输出：[[1,0,1],[0,0,0],[1,0,1]]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><p><a href="https://assets.leetcode.com/uploads/2020/08/17/mat2.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2020/08/17/mat2.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]</span><br><span class="line">输出：[[0,0,0,0],[0,4,5,0],[0,3,1,0]]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>m == matrix.length</code></li><li><code>n == matrix[0].length</code></li><li><code>1 &lt;= m, n &lt;= 200</code></li><li><code>-231 &lt;= matrix[i][j] &lt;= 231 - 1</code></li></ul><h5 id="方法一：原地算法"><a href="#方法一：原地算法" class="headerlink" title="方法一：原地算法"></a>方法一：原地算法</h5><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 使用原地算法解决</span></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">setZeroes</span><span class="params">(<span class="type">int</span>[][] matrix)</span> {</span><br><span class="line">        <span class="type">int</span> <span class="variable">rows</span> <span class="operator">=</span> matrix.length;</span><br><span class="line">        <span class="type">int</span> <span class="variable">cols</span> <span class="operator">=</span> matrix[<span class="number">0</span>].length;</span><br><span class="line">        <span class="comment">// 记录第一行，第一列是否有0</span></span><br><span class="line">        <span class="type">boolean</span> <span class="variable">firstRowFlag</span> <span class="operator">=</span> <span class="literal">false</span>;</span><br><span class="line">        <span class="type">boolean</span> <span class="variable">firstColFlag</span> <span class="operator">=</span> <span class="literal">false</span>;</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">col</span> <span class="operator">=</span> <span class="number">0</span>; col &lt; cols; col++) {</span><br><span class="line">            <span class="keyword">if</span>(matrix[<span class="number">0</span>][col] == <span class="number">0</span>) firstRowFlag = <span class="literal">true</span>;</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">row</span> <span class="operator">=</span> <span class="number">0</span>; row &lt; rows; row++) {</span><br><span class="line">            <span class="keyword">if</span>(matrix[row][<span class="number">0</span>] == <span class="number">0</span>) firstColFlag = <span class="literal">true</span>;</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 从除第一行第一列的位置开始，有0，就去把这一行列的开头置零，标记一下就行</span></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">row</span> <span class="operator">=</span> <span class="number">1</span>; row &lt; rows; row++) {</span><br><span class="line">            <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">col</span> <span class="operator">=</span> <span class="number">1</span>; col &lt; cols; col++) {</span><br><span class="line">                <span class="keyword">if</span>(matrix[row][col] == <span class="number">0</span>) {</span><br><span class="line">                    matrix[<span class="number">0</span>][col] = <span class="number">0</span>;</span><br><span class="line">                    matrix[row][<span class="number">0</span>] = <span class="number">0</span>;</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 开始除横坐标0之外置零</span></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">row</span> <span class="operator">=</span> <span class="number">1</span>; row &lt; rows; row++) {</span><br><span class="line">            <span class="keyword">if</span>(matrix[row][<span class="number">0</span>] == <span class="number">0</span>) {</span><br><span class="line">                Arrays.fill(matrix[row], <span class="number">0</span>);</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 开始除纵坐标0之外置零</span></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">col</span> <span class="operator">=</span> <span class="number">1</span>; col &lt; cols; col++) {</span><br><span class="line">            <span class="keyword">if</span>(matrix[<span class="number">0</span>][col] == <span class="number">0</span>) {</span><br><span class="line">                <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">row</span> <span class="operator">=</span> <span class="number">0</span>; row &lt; rows; row++) {</span><br><span class="line">                    matrix[row][col] = <span class="number">0</span>;</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 最后置零第一行列</span></span><br><span class="line">        <span class="keyword">if</span>(firstRowFlag) Arrays.fill(matrix[<span class="number">0</span>], <span class="number">0</span>);</span><br><span class="line">        <span class="keyword">if</span>(firstColFlag) {</span><br><span class="line">            <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">row</span> <span class="operator">=</span> <span class="number">0</span>; row &lt; rows; row++) {</span><br><span class="line">                matrix[row][<span class="number">0</span>] = <span class="number">0</span>;</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        </span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h5 id="方法二"><a href="#方法二" class="headerlink" title="方法二"></a>方法二</h5><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">setZeroes</span><span class="params">(<span class="type">int</span>[][] matrix)</span> {</span><br><span class="line">        <span class="type">int</span> <span class="variable">rows</span> <span class="operator">=</span> matrix.length;</span><br><span class="line">        <span class="type">int</span> <span class="variable">cols</span> <span class="operator">=</span> matrix[<span class="number">0</span>].length;</span><br><span class="line"></span><br><span class="line">        <span class="type">boolean</span>[] rowFlag = <span class="keyword">new</span> <span class="title class_">boolean</span>[rows];</span><br><span class="line">        <span class="type">boolean</span>[] colFlag = <span class="keyword">new</span> <span class="title class_">boolean</span>[cols];</span><br><span class="line">       </span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">row</span> <span class="operator">=</span> <span class="number">0</span>; row &lt; rows; row++) {</span><br><span class="line">            <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">col</span> <span class="operator">=</span> <span class="number">0</span>; col &lt; cols; col++) {</span><br><span class="line">               <span class="keyword">if</span>(matrix[row][col] == <span class="number">0</span>) {</span><br><span class="line">                 rowFlag[row] = <span class="literal">true</span>;</span><br><span class="line">                 colFlag[col] = <span class="literal">true</span>;</span><br><span class="line">               }</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">row</span> <span class="operator">=</span> <span class="number">0</span>; row &lt; rows; row++) {</span><br><span class="line">            <span class="keyword">if</span>(rowFlag[row]) {</span><br><span class="line">                <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">col</span> <span class="operator">=</span> <span class="number">0</span>; col &lt; cols; col++) {</span><br><span class="line">                    matrix[row][col] = <span class="number">0</span>;</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">col</span> <span class="operator">=</span> <span class="number">0</span>; col &lt; cols; col++) {</span><br><span class="line">            <span class="keyword">if</span>(colFlag[col]) {</span><br><span class="line">                <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">row</span> <span class="operator">=</span> <span class="number">0</span>; row &lt; rows; row++) {</span><br><span class="line">                    matrix[row][col] = <span class="number">0</span>;</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="54-螺旋矩阵"><a href="#54-螺旋矩阵" class="headerlink" title="54. 螺旋矩阵"></a><a href="https://leetcode.cn/problems/spiral-matrix/">54. 螺旋矩阵</a></h4><p>给你一个 <code>m</code> 行 <code>n</code> 列的矩阵 <code>matrix</code> ，请按照 <strong>顺时针螺旋顺序</strong> ，返回矩阵中的所有元素。</p><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode.com/uploads/2020/11/13/spiral1.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2020/11/13/spiral1.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：matrix = [[1,2,3],[4,5,6],[7,8,9]]</span><br><span class="line">输出：[1,2,3,6,9,8,7,4,5]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><p><a href="https://assets.leetcode.com/uploads/2020/11/13/spiral.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2020/11/13/spiral.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]</span><br><span class="line">输出：[1,2,3,4,8,12,11,10,9,5,6,7]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>m == matrix.length</code></li><li><code>n == matrix[i].length</code></li><li><code>1 &lt;= m, n &lt;= 10</code></li><li><code>-100 &lt;= matrix[i][j] &lt;= 100</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> List&lt;Integer&gt; result = <span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;();</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> List&lt;Integer&gt; <span class="title function_">spiralOrder</span><span class="params">(<span class="type">int</span>[][] matrix)</span> {</span><br><span class="line"></span><br><span class="line">        <span class="type">int</span> <span class="variable">rows</span> <span class="operator">=</span> matrix.length;</span><br><span class="line">        <span class="type">int</span> <span class="variable">cols</span> <span class="operator">=</span> matrix[<span class="number">0</span>].length;</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 记录打印边界，行的上下边界，列的左右边界</span></span><br><span class="line">        <span class="type">int</span> <span class="variable">upRow</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">downRow</span> <span class="operator">=</span> rows - <span class="number">1</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">leftCol</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">rightCol</span> <span class="operator">=</span> cols - <span class="number">1</span>;</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 当前的位置</span></span><br><span class="line">        <span class="type">int</span> <span class="variable">curRow</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">curCol</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">while</span>(<span class="literal">true</span>) {</span><br><span class="line">            </span><br><span class="line">            <span class="comment">// 从左到右</span></span><br><span class="line">            <span class="keyword">while</span>(curCol &lt;= rightCol) {</span><br><span class="line">                result.add(matrix[curRow][curCol++]);</span><br><span class="line">            }</span><br><span class="line">            upRow++; <span class="comment">// 上边界往下调一格</span></span><br><span class="line">            curRow++; <span class="comment">// 这一行打印完毕</span></span><br><span class="line">            curCol--; <span class="comment">// 循环结束过后 curCol 为 rightCol + 1，当然要 减1 回到正轨</span></span><br><span class="line"></span><br><span class="line">            <span class="keyword">if</span>(upRow &gt; downRow) <span class="keyword">break</span>;</span><br><span class="line"></span><br><span class="line">            <span class="comment">// 从上往下</span></span><br><span class="line">            <span class="keyword">while</span>(curRow &lt;= downRow) {</span><br><span class="line">                result.add(matrix[curRow++][curCol]);</span><br><span class="line">            }</span><br><span class="line"></span><br><span class="line">            rightCol--;</span><br><span class="line">            curCol--;</span><br><span class="line">            curRow--;</span><br><span class="line"></span><br><span class="line">            <span class="keyword">if</span>(rightCol &lt; leftCol) <span class="keyword">break</span>;</span><br><span class="line"></span><br><span class="line">            <span class="comment">// 从右往左</span></span><br><span class="line">            <span class="keyword">while</span>(curCol &gt;= leftCol) {</span><br><span class="line">                result.add(matrix[curRow][curCol--]);</span><br><span class="line">            }</span><br><span class="line"></span><br><span class="line">            downRow--;</span><br><span class="line">            curRow--;</span><br><span class="line">            curCol++;</span><br><span class="line"></span><br><span class="line">            <span class="keyword">if</span>(downRow &lt; upRow) <span class="keyword">break</span>;</span><br><span class="line"></span><br><span class="line">            <span class="comment">// 从下往上</span></span><br><span class="line">            <span class="keyword">while</span>(curRow &gt;= upRow) {</span><br><span class="line">                result.add(matrix[curRow--][curCol]);</span><br><span class="line">            }</span><br><span class="line"></span><br><span class="line">            leftCol++;</span><br><span class="line">            curCol++;</span><br><span class="line">            curRow++;</span><br><span class="line"></span><br><span class="line">            <span class="keyword">if</span>(leftCol &gt; rightCol) <span class="keyword">break</span>;</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line"></span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="48-旋转图像"><a href="#48-旋转图像" class="headerlink" title="48. 旋转图像"></a><a href="https://leetcode.cn/problems/rotate-image/">48. 旋转图像</a></h4><p>给定一个 <em>n</em> × <em>n</em> 的二维矩阵 <code>matrix</code> 表示一个图像。请你将图像顺时针旋转 90 度。</p><p>你必须在**<a href="https://baike.baidu.com/item/%E5%8E%9F%E5%9C%B0%E7%AE%97%E6%B3%95"> 原地</a>** 旋转图像，这意味着你需要直接修改输入的二维矩阵。<strong>请不要</strong> 使用另一个矩阵来旋转图像。</p><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode.com/uploads/2020/08/28/mat1.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2020/08/28/mat1.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：matrix = [[1,2,3],[4,5,6],[7,8,9]]</span><br><span class="line">输出：[[7,4,1],[8,5,2],[9,6,3]]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><p><a href="https://assets.leetcode.com/uploads/2020/08/28/mat2.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode.com/uploads/2020/08/28/mat2.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]</span><br><span class="line">输出：[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>n == matrix.length == matrix[i].length</code></li><li><code>1 &lt;= n &lt;= 20</code></li><li><code>-1000 &lt;= matrix[i][j] &lt;= 1000</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">rotate</span><span class="params">(<span class="type">int</span>[][] matrix)</span> {</span><br><span class="line">        <span class="comment">// 每次只考虑四个间隔90度的旋转</span></span><br><span class="line"></span><br><span class="line">        <span class="type">int</span> <span class="variable">temp</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">n</span> <span class="operator">=</span> matrix.length - <span class="number">1</span>;</span><br><span class="line">        <span class="comment">// 一圈一圈地旋转，一共需要 n/2圈</span></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt;= n/<span class="number">2</span>; i++) {</span><br><span class="line">            <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">j</span> <span class="operator">=</span> i; j &lt; n-i; j++) {</span><br><span class="line">                <span class="comment">// 先暂时存右上角</span></span><br><span class="line">                temp = matrix[j][n-i];</span><br><span class="line">                <span class="comment">// 左上角 给 右上角</span></span><br><span class="line">                matrix[j][n-i] = matrix[i][j];</span><br><span class="line">                <span class="comment">// 左下角 给 左上角</span></span><br><span class="line">                matrix[i][j] = matrix[n-j][i];</span><br><span class="line">                <span class="comment">// 右下角 给 左下角</span></span><br><span class="line">                matrix[n-j][i] = matrix[n-i][n-j];</span><br><span class="line">                <span class="comment">// 右上角 给 右下角</span></span><br><span class="line">                matrix[n-i][n-j] = temp;</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="240-搜索二维矩阵-II"><a href="#240-搜索二维矩阵-II" class="headerlink" title="240. 搜索二维矩阵 II"></a><a href="https://leetcode.cn/problems/search-a-2d-matrix-ii/">240. 搜索二维矩阵 II</a></h4><p>编写一个高效的算法来搜索 <code>*m* x *n*</code> 矩阵 <code>matrix</code> 中的一个目标值 <code>target</code> 。该矩阵具有以下特性：</p><ul><li>每行的元素从左到右升序排列。</li><li>每列的元素从上到下升序排列。</li></ul><p><strong>示例 1：</strong></p><p><a href="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/11/25/searchgrid2.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/11/25/searchgrid2.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5</span><br><span class="line">输出：true</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><p><a href="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/11/25/searchgrid.jpg" title="img" class="gallery-item" style="box-shadow: none;"> <img src="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/11/25/searchgrid.jpg" alt="img"></a></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 20</span><br><span class="line">输出：false</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>m == matrix.length</code></li><li><code>n == matrix[i].length</code></li><li><code>1 &lt;= n, m &lt;= 300</code></li><li><code>-109 &lt;= matrix[i][j] &lt;= 109</code></li><li>每行的所有元素从左到右升序排列</li><li>每列的所有元素从上到下升序排列</li><li><code>-109 &lt;= target &lt;= 109</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">boolean</span> <span class="title function_">searchMatrix</span><span class="params">(<span class="type">int</span>[][] matrix, <span class="type">int</span> target)</span> {</span><br><span class="line">        <span class="type">int</span> <span class="variable">rows</span> <span class="operator">=</span> matrix.length;</span><br><span class="line">        <span class="type">int</span> <span class="variable">cols</span> <span class="operator">=</span> matrix[<span class="number">0</span>].length;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">row</span> <span class="operator">=</span> <span class="number">0</span>; row &lt; rows; row++) {</span><br><span class="line">            <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">col</span> <span class="operator">=</span> cols - <span class="number">1</span>; col &gt;= <span class="number">0</span>; col--) {</span><br><span class="line">                <span class="keyword">if</span>(matrix[row][col] == target) {</span><br><span class="line">                    <span class="keyword">return</span> <span class="literal">true</span>;</span><br><span class="line">                } <span class="keyword">else</span> <span class="keyword">if</span>(matrix[row][col] &lt; target) {</span><br><span class="line">                    <span class="keyword">break</span>;</span><br><span class="line">                } <span class="keyword">else</span> {</span><br><span class="line">                    <span class="keyword">continue</span>;</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> <span class="literal">false</span>;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><hr><h3 id="普通数组"><a href="#普通数组" class="headerlink" title="普通数组"></a>普通数组</h3><h4 id="53-最大子数组和"><a href="#53-最大子数组和" class="headerlink" title="53. 最大子数组和"></a><a href="https://leetcode.cn/problems/maximum-subarray/">53. 最大子数组和</a></h4><p>给你一个整数数组 <code>nums</code> ，请你找出一个具有最大和的连续子数组（子数组最少包含一个元素），返回其最大和。</p><p><strong>子数组</strong>是数组中的一个连续部分。</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [-2,1,-3,4,-1,2,1,-5,4]</span><br><span class="line">输出：6</span><br><span class="line">解释：连续子数组 [4,-1,2,1] 的和最大，为 6 。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [1]</span><br><span class="line">输出：1</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [5,4,-1,7,8]</span><br><span class="line">输出：23</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= nums.length &lt;= 105</code></li><li><code>-104 &lt;= nums[i] &lt;= 104</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">maxSubArray</span><span class="params">(<span class="type">int</span>[] nums)</span> {</span><br><span class="line">        <span class="comment">// dp[2] 代表的是 从 2 往前的 最大子序列和</span></span><br><span class="line">        <span class="type">int</span>[] dp = <span class="keyword">new</span> <span class="title class_">int</span>[nums.length];</span><br><span class="line">        dp[<span class="number">0</span>] = nums[<span class="number">0</span>];</span><br><span class="line">        <span class="type">int</span> <span class="variable">result</span> <span class="operator">=</span> dp[<span class="number">0</span>];</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">1</span>; i &lt; nums.length; i++) {</span><br><span class="line">            dp[i] = Math.max(nums[i], nums[i] + dp[i-<span class="number">1</span>]);</span><br><span class="line">            result = Math.max(result, dp[i]);</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="56-合并区间"><a href="#56-合并区间" class="headerlink" title="56. 合并区间"></a><a href="https://leetcode.cn/problems/merge-intervals/">56. 合并区间</a></h4><p>以数组 <code>intervals</code> 表示若干个区间的集合，其中单个区间为 <code>intervals[i] = [starti, endi]</code> 。请你合并所有重叠的区间，并返回 <em>一个不重叠的区间数组，该数组需恰好覆盖输入中的所有区间</em> 。</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：intervals = [[1,3],[2,6],[8,10],[15,18]]</span><br><span class="line">输出：[[1,6],[8,10],[15,18]]</span><br><span class="line">解释：区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：intervals = [[1,4],[4,5]]</span><br><span class="line">输出：[[1,5]]</span><br><span class="line">解释：区间 [1,4] 和 [4,5] 可被视为重叠区间。</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= intervals.length &lt;= 104</code></li><li><code>intervals[i].length == 2</code></li><li><code>0 &lt;= starti &lt;= endi &lt;= 104</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span>[][] merge(<span class="type">int</span>[][] intervals) {</span><br><span class="line">        List&lt;List&lt;Integer&gt;&gt; resultList = <span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;();</span><br><span class="line">        </span><br><span class="line">        Arrays.sort(intervals, (a, b) -&gt; {<span class="keyword">return</span> a[<span class="number">0</span>] == b[<span class="number">0</span>] ? a[<span class="number">1</span>] - b[<span class="number">1</span>] : a[<span class="number">0</span>] - b[<span class="number">0</span>];});</span><br><span class="line"></span><br><span class="line">        <span class="type">int</span> <span class="variable">left</span> <span class="operator">=</span> intervals[<span class="number">0</span>][<span class="number">0</span>];</span><br><span class="line">        <span class="type">int</span> <span class="variable">right</span> <span class="operator">=</span> intervals[<span class="number">0</span>][<span class="number">1</span>];</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">1</span>; i &lt; intervals.length; i++) {</span><br><span class="line">            <span class="keyword">if</span>(right &gt;= intervals[i][<span class="number">1</span>]) {</span><br><span class="line">                <span class="keyword">continue</span>;</span><br><span class="line">            }</span><br><span class="line">            <span class="keyword">if</span>(right &gt;= intervals[i][<span class="number">0</span>]) {</span><br><span class="line">                right = intervals[i][<span class="number">1</span>];</span><br><span class="line">                <span class="keyword">continue</span>;</span><br><span class="line">            }</span><br><span class="line">            resultList.add(List.of(left, right));</span><br><span class="line">            left = intervals[i][<span class="number">0</span>];</span><br><span class="line">            right = intervals[i][<span class="number">1</span>];</span><br><span class="line">        }</span><br><span class="line">        resultList.add(List.of(left, right));</span><br><span class="line">        <span class="type">int</span>[][] result = <span class="keyword">new</span> <span class="title class_">int</span>[resultList.size()][<span class="number">2</span>];</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; result.length; i++) {</span><br><span class="line">            <span class="type">int</span>[] temp = <span class="keyword">new</span> <span class="title class_">int</span>[<span class="number">2</span>];</span><br><span class="line">            temp[<span class="number">0</span>] = resultList.get(i).get(<span class="number">0</span>);</span><br><span class="line">            temp[<span class="number">1</span>] = resultList.get(i).get(<span class="number">1</span>);</span><br><span class="line">            result[i] = temp;</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="189-轮转数组"><a href="#189-轮转数组" class="headerlink" title="189. 轮转数组"></a><a href="https://leetcode.cn/problems/rotate-array/">189. 轮转数组</a></h4><p>给定一个整数数组 <code>nums</code>，将数组中的元素向右轮转 <code>k</code> 个位置，其中 <code>k</code> 是非负数。</p><p><strong>示例 1:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">输入: nums = [1,2,3,4,5,6,7], k = 3</span><br><span class="line">输出: [5,6,7,1,2,3,4]</span><br><span class="line">解释:</span><br><span class="line">向右轮转 1 步: [7,1,2,3,4,5,6]</span><br><span class="line">向右轮转 2 步: [6,7,1,2,3,4,5]</span><br><span class="line">向右轮转 3 步: [5,6,7,1,2,3,4]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [-1,-100,3,99], k = 2</span><br><span class="line">输出：[3,99,-1,-100]</span><br><span class="line">解释: </span><br><span class="line">向右轮转 1 步: [99,-1,-100,3]</span><br><span class="line">向右轮转 2 步: [3,99,-1,-100]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= nums.length &lt;= 105</code></li><li><code>-231 &lt;= nums[i] &lt;= 231 - 1</code></li><li><code>0 &lt;= k &lt;= 105</code></li></ul><h5 id="方法一"><a href="#方法一" class="headerlink" title="方法一"></a>方法一</h5><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">rotate</span><span class="params">(<span class="type">int</span>[] nums, <span class="type">int</span> k)</span> {</span><br><span class="line">        k %= nums.length;</span><br><span class="line">        <span class="keyword">if</span>(k == <span class="number">0</span>) <span class="keyword">return</span>;</span><br><span class="line">        <span class="comment">// 反转整个数组</span></span><br><span class="line">        reverse(nums, <span class="number">0</span>, nums.length - <span class="number">1</span>);</span><br><span class="line">        <span class="comment">// 反转前k个</span></span><br><span class="line">        reverse(nums, <span class="number">0</span>, k - <span class="number">1</span>);</span><br><span class="line">        <span class="comment">// 反转后n-k个</span></span><br><span class="line">        reverse(nums, k, nums.length - <span class="number">1</span>);</span><br><span class="line">        </span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">void</span> <span class="title function_">reverse</span><span class="params">(<span class="type">int</span>[] nums, <span class="type">int</span> left, <span class="type">int</span> right)</span> {</span><br><span class="line">        <span class="keyword">if</span>(left &gt; right) <span class="keyword">return</span>;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">while</span>(left &lt; right) {</span><br><span class="line">            <span class="type">int</span> <span class="variable">temp</span> <span class="operator">=</span> nums[left];</span><br><span class="line">            nums[left] = nums[right];</span><br><span class="line">            nums[right] = temp;</span><br><span class="line">            left++;</span><br><span class="line">            right--;</span><br><span class="line">        }</span><br><span class="line">    }</span><br><span class="line">}</span><br><span class="line"></span><br></pre></td></tr></tbody></table></figure><h5 id="方法二-1"><a href="#方法二-1" class="headerlink" title="方法二"></a>方法二</h5><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">rotate</span><span class="params">(<span class="type">int</span>[] nums, <span class="type">int</span> k)</span> {</span><br><span class="line">        k = k % (nums.length );</span><br><span class="line">        <span class="keyword">if</span>(k == <span class="number">0</span>) {</span><br><span class="line">            <span class="keyword">return</span>;</span><br><span class="line">        }</span><br><span class="line">        <span class="type">int</span> <span class="variable">slowIndex</span> <span class="operator">=</span> -<span class="number">1</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">fastIndex</span> <span class="operator">=</span> -<span class="number">1</span>;</span><br><span class="line">        <span class="keyword">while</span>(fastIndex &lt; k - <span class="number">1</span>) fastIndex++;</span><br><span class="line">        <span class="keyword">while</span>(fastIndex &lt; nums.length - <span class="number">1</span>) {</span><br><span class="line">            slowIndex++;</span><br><span class="line">            fastIndex++;</span><br><span class="line">        }</span><br><span class="line">        slowIndex++;</span><br><span class="line">        fastIndex = <span class="number">0</span>;</span><br><span class="line">        <span class="type">int</span>[] resultNum = <span class="keyword">new</span> <span class="title class_">int</span>[nums.length];</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; resultNum.length; i++) {</span><br><span class="line">            <span class="keyword">if</span>(i &lt; k) {</span><br><span class="line">                resultNum[i] = nums[slowIndex++];</span><br><span class="line">            } <span class="keyword">else</span> {</span><br><span class="line">                resultNum[i] = nums[fastIndex++];</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; resultNum.length; i++) {</span><br><span class="line">            nums[i] = resultNum[i];</span><br><span class="line">        }</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="238-除自身以外数组的乘积"><a href="#238-除自身以外数组的乘积" class="headerlink" title="238. 除自身以外数组的乘积"></a><a href="https://leetcode.cn/problems/product-of-array-except-self/">238. 除自身以外数组的乘积</a></h4><p>给你一个整数数组 <code>nums</code>，返回 数组 <code>answer</code> ，其中 <code>answer[i]</code> 等于 <code>nums</code> 中除 <code>nums[i]</code> 之外其余各元素的乘积 。</p><p>题目数据 <strong>保证</strong> 数组 <code>nums</code>之中任意元素的全部前缀元素和后缀的乘积都在 <strong>32 位</strong> 整数范围内。</p><p>请 <strong>不要使用除法，</strong>且在 <code>O(n)</code> 时间复杂度内完成此题。</p><p><strong>示例 1:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入: nums = [1,2,3,4]</span><br><span class="line">输出: [24,12,8,6]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入: nums = [-1,1,0,-3,3]</span><br><span class="line">输出: [0,0,9,0,0]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>2 &lt;= nums.length &lt;= 105</code></li><li><code>-30 &lt;= nums[i] &lt;= 30</code></li><li><strong>保证</strong> 数组 <code>nums</code>之中任意元素的全部前缀元素和后缀的乘积都在 <strong>32 位</strong> 整数范围内</li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.util.Arrays;</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span>[] productExceptSelf(<span class="type">int</span>[] nums) {</span><br><span class="line">        <span class="type">int</span>[] preMuti = <span class="keyword">new</span> <span class="title class_">int</span>[nums.length];</span><br><span class="line">        <span class="type">int</span>[] tailMuti = <span class="keyword">new</span> <span class="title class_">int</span>[nums.length];</span><br><span class="line">        Arrays.fill(preMuti, <span class="number">1</span>);</span><br><span class="line">        Arrays.fill(tailMuti, <span class="number">1</span>);</span><br><span class="line"></span><br><span class="line">        <span class="type">int</span>[] result = <span class="keyword">new</span> <span class="title class_">int</span>[nums.length];</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">1</span>; i &lt; nums.length; i++) {</span><br><span class="line">            preMuti[i] = preMuti[i-<span class="number">1</span>] * nums[i-<span class="number">1</span>];</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> nums.length - <span class="number">2</span>; i &gt;= <span class="number">0</span>; i--) {</span><br><span class="line">            tailMuti[i] = tailMuti[i+<span class="number">1</span>] * nums[i+<span class="number">1</span>];</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; nums.length; i++) {</span><br><span class="line">            result[i] = preMuti[i] * tailMuti[i];</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="41-缺失的第一个正数"><a href="#41-缺失的第一个正数" class="headerlink" title="41. 缺失的第一个正数"></a><a href="https://leetcode.cn/problems/first-missing-positive/">41. 缺失的第一个正数</a></h4><p>给你一个未排序的整数数组 <code>nums</code> ，请你找出其中没有出现的最小的正整数。</p><p>请你实现时间复杂度为 <code>O(n)</code> 并且只使用常数级别额外空间的解决方案。</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [1,2,0]</span><br><span class="line">输出：3</span><br><span class="line">解释：范围 [1,2] 中的数字都在数组中。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [3,4,-1,1]</span><br><span class="line">输出：2</span><br><span class="line">解释：1 在数组中，但 2 没有。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [7,8,9,11,12]</span><br><span class="line">输出：1</span><br><span class="line">解释：最小的正数 1 没有出现。</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= nums.length &lt;= 105</code></li><li><code>-231 &lt;= nums[i] &lt;= 231 - 1</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 题目隐含了条件：这里的最小正数一定出现在 1 ~ nums.length + 1 这里面</span></span><br><span class="line">    <span class="comment">// 其实就是把数字放在该放的下标位置</span></span><br><span class="line">    <span class="comment">// 放完一轮，从头开始找不一致的即为最小</span></span><br><span class="line">    <span class="comment">// 数组第一个就放1，也就是 i 下标，应该放 i+1, 如 0 下标位置 放 1， 1应该放在 0 下标位置</span></span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">firstMissingPositive</span><span class="params">(<span class="type">int</span>[] nums)</span> {</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; nums.length; i++) {</span><br><span class="line">            <span class="keyword">if</span>(nums[i] == (i+<span class="number">1</span>)) {</span><br><span class="line">                <span class="keyword">continue</span>;</span><br><span class="line">            } <span class="keyword">else</span> {</span><br><span class="line">                <span class="keyword">if</span>(nums[i] &lt;= <span class="number">0</span> || nums[i] &gt; nums.length) {</span><br><span class="line">                    <span class="keyword">continue</span>;</span><br><span class="line">                } <span class="keyword">else</span> {</span><br><span class="line">                    <span class="comment">// 能找到正确的位置</span></span><br><span class="line">                    <span class="comment">// 交换对应的下标</span></span><br><span class="line">                    <span class="comment">// 只能往后换</span></span><br><span class="line">                    <span class="comment">// nums[i] 这个值 应该 放在 （nums[i] - 1） 这个下标位置</span></span><br><span class="line">                    <span class="keyword">if</span>(nums[nums[i] - <span class="number">1</span>] == nums[i]) {</span><br><span class="line">                        <span class="comment">// 如果目标下标位置 存放 的就是 正确的值，则跳过</span></span><br><span class="line">                        <span class="keyword">continue</span>;</span><br><span class="line">                    }</span><br><span class="line">                    <span class="comment">// 否则就交换</span></span><br><span class="line">                    swap(nums, i, nums[i] - <span class="number">1</span>);</span><br><span class="line">                    i--;</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        <span class="comment">// i 下标位置 需要存放的 是 i+1 的值</span></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; nums.length; i++) {</span><br><span class="line">            <span class="keyword">if</span>(nums[i] != i + <span class="number">1</span>) {</span><br><span class="line">                <span class="keyword">return</span> i + <span class="number">1</span>;</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="comment">// 走到这里说明 1~nums.length 都在对应下标位置，自然最小正数是 nums.length + 1</span></span><br><span class="line">        <span class="keyword">return</span> nums.length + <span class="number">1</span>;</span><br><span class="line"></span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">void</span> <span class="title function_">swap</span><span class="params">(<span class="type">int</span>[] nums, <span class="type">int</span> a, <span class="type">int</span> b)</span> {</span><br><span class="line">        <span class="type">int</span> <span class="variable">temp</span> <span class="operator">=</span> nums[a];</span><br><span class="line">        nums[a] = nums[b];</span><br><span class="line">        nums[b] = temp;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><hr><h3 id="子串"><a href="#子串" class="headerlink" title="子串"></a>子串</h3><h4 id="560-和为-K-的子数组"><a href="#560-和为-K-的子数组" class="headerlink" title="560. 和为 K 的子数组"></a><a href="https://leetcode.cn/problems/subarray-sum-equals-k/">560. 和为 K 的子数组</a></h4><p>给你一个整数数组 <code>nums</code> 和一个整数 <code>k</code> ，请你统计并返回 <em>该数组中和为 <code>k</code> 的子数组的个数</em> 。</p><p>子数组是数组中元素的连续非空序列。</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [1,1,1], k = 2</span><br><span class="line">输出：2</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [1,2,3], k = 3</span><br><span class="line">输出：2</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= nums.length &lt;= 2 * 104</code></li><li><code>-1000 &lt;= nums[i] &lt;= 1000</code></li><li><code>-107 &lt;= k &lt;= 107</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.util.HashMap;</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">subarraySum</span><span class="params">(<span class="type">int</span>[] nums, <span class="type">int</span> k)</span> {</span><br><span class="line">        </span><br><span class="line">        <span class="comment">// 废了好大劲才理解</span></span><br><span class="line">        </span><br><span class="line">        <span class="comment">// key 前缀和  value 前缀和为此的个数</span></span><br><span class="line">        Map&lt;Integer, Integer&gt; preSumFreq = <span class="keyword">new</span> <span class="title class_">HashMap</span>&lt;&gt;();</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 前缀和为0的个数，有一种，所有数字都不选</span></span><br><span class="line">        preSumFreq.put(<span class="number">0</span>, <span class="number">1</span>);</span><br><span class="line"></span><br><span class="line">        <span class="type">int</span> <span class="variable">preSum</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">count</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> num : nums) {</span><br><span class="line">            <span class="comment">// 前缀和</span></span><br><span class="line">            preSum += num;</span><br><span class="line">            </span><br><span class="line">            <span class="comment">// 只要存在 preSum - k 那么就意味着 preSum 首先存在，且preSum-k存在，那么自然 preSum - (preSum-k) 就能够等于k</span></span><br><span class="line">            <span class="comment">// 所以我们只需要看 preSumFreq.get(preSum-k)的种数</span></span><br><span class="line">            <span class="keyword">if</span>(preSumFreq.containsKey(preSum-k)) {</span><br><span class="line">                count += preSumFreq.get(preSum-k);</span><br><span class="line">            }</span><br><span class="line">            </span><br><span class="line">            <span class="comment">// 不存在就把这个放进入</span></span><br><span class="line">            preSumFreq.put(preSum, preSumFreq.getOrDefault(preSum, <span class="number">0</span>) + <span class="number">1</span>);</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> count;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="239-滑动窗口最大值"><a href="#239-滑动窗口最大值" class="headerlink" title="239. 滑动窗口最大值"></a><a href="https://leetcode.cn/problems/sliding-window-maximum/">239. 滑动窗口最大值</a></h4><p>给你一个整数数组 <code>nums</code>，有一个大小为 <code>k</code> 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 <code>k</code> 个数字。滑动窗口每次只向右移动一位。</p><p>返回 <em>滑动窗口中的最大值</em> 。</p><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [1,3,-1,-3,5,3,6,7], k = 3</span><br><span class="line">输出：[3,3,5,5,6,7]</span><br><span class="line">解释：</span><br><span class="line">滑动窗口的位置                最大值</span><br><span class="line">---------------               -----</span><br><span class="line">[1  3  -1] -3  5  3  6  7       3</span><br><span class="line"> 1 [3  -1  -3] 5  3  6  7       3</span><br><span class="line"> 1  3 [-1  -3  5] 3  6  7       5</span><br><span class="line"> 1  3  -1 [-3  5  3] 6  7       5</span><br><span class="line"> 1  3  -1  -3 [5  3  6] 7       6</span><br><span class="line"> 1  3  -1  -3  5 [3  6  7]      7</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入：nums = [1], k = 1</span><br><span class="line">输出：[1]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= nums.length &lt;= 105</code></li><li><code>-104 &lt;= nums[i] &lt;= 104</code></li><li><code>1 &lt;= k &lt;= nums.length</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.util.Deque;</span><br><span class="line"><span class="keyword">import</span> java.util.LinkedList;</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span>[] maxSlidingWindow(<span class="type">int</span>[] nums, <span class="type">int</span> k) {</span><br><span class="line"></span><br><span class="line">        <span class="type">int</span>[] ans = <span class="keyword">new</span> <span class="title class_">int</span>[nums.length - k + <span class="number">1</span>];</span><br><span class="line">        <span class="comment">// 使用双端队列，单调递减的规则来做即可</span></span><br><span class="line">        Deque&lt;Integer&gt; queue = <span class="keyword">new</span> <span class="title class_">LinkedList</span>&lt;&gt;();</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 未形成窗口</span></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; k; i++) {</span><br><span class="line">            </span><br><span class="line">            <span class="keyword">while</span>(!queue.isEmpty() &amp;&amp; queue.peekLast() &lt; nums[i]) {</span><br><span class="line">                <span class="comment">// 遇到更大的，得把之前更小的扔掉</span></span><br><span class="line">                queue.removeLast();</span><br><span class="line">            }</span><br><span class="line">            queue.addLast(nums[i]);</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 形成窗口</span></span><br><span class="line">        ans[<span class="number">0</span>] = queue.peekFirst();</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> k; i &lt; nums.length; i++) {</span><br><span class="line">            <span class="keyword">if</span>(queue.peekFirst() == nums[i-k]) {</span><br><span class="line">                <span class="comment">// i-k 即是 这个范围之前的一位</span></span><br><span class="line">                <span class="comment">// 也就是说要是这个区间把 最大值滑过去了</span></span><br><span class="line">                <span class="comment">// 双端队列当然 得扔掉第一个值</span></span><br><span class="line">                queue.removeFirst();</span><br><span class="line">            }</span><br><span class="line">            <span class="keyword">while</span>(!queue.isEmpty() &amp;&amp; queue.peekLast() &lt; nums[i]) {</span><br><span class="line">                queue.removeLast();</span><br><span class="line">            }</span><br><span class="line">            queue.addLast(nums[i]);</span><br><span class="line">            ans[i-k+<span class="number">1</span>] = queue.peekFirst();</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> ans;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="76-最小覆盖子串"><a href="#76-最小覆盖子串" class="headerlink" title="76. 最小覆盖子串"></a><a href="https://leetcode.cn/problems/minimum-window-substring/">76. 最小覆盖子串</a></h4><p>给你一个字符串 <code>s</code> 、一个字符串 <code>t</code> 。返回 <code>s</code> 中涵盖 <code>t</code> 所有字符的最小子串。如果 <code>s</code> 中不存在涵盖 <code>t</code> 所有字符的子串，则返回空字符串 <code>""</code> 。</p><p><strong>注意：</strong></p><ul><li>对于 <code>t</code> 中重复字符，我们寻找的子字符串中该字符数量必须不少于 <code>t</code> 中该字符数量。</li><li>如果 <code>s</code> 中存在这样的子串，我们保证它是唯一的答案。</li></ul><p><strong>示例 1：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：s = "ADOBECODEBANC", t = "ABC"</span><br><span class="line">输出："BANC"</span><br><span class="line">解释：最小覆盖子串 "BANC" 包含来自字符串 t 的 'A'、'B' 和 'C'。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2：</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入：s = "a", t = "a"</span><br><span class="line">输出："a"</span><br><span class="line">解释：整个字符串 s 是最小覆盖子串。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">输入: s = "a", t = "aa"</span><br><span class="line">输出: ""</span><br><span class="line">解释: t 中两个字符 'a' 均应包含在 s 的子串中，</span><br><span class="line">因此没有符合条件的子字符串，返回空字符串。</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>m == s.length</code></li><li><code>n == t.length</code></li><li><code>1 &lt;= m, n &lt;= 105</code></li><li><code>s</code> 和 <code>t</code> 由英文字母组成</li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> String <span class="title function_">minWindow</span><span class="params">(String s, String t)</span> {</span><br><span class="line">        Map&lt;Character, Integer&gt; hashMap = <span class="keyword">new</span> <span class="title class_">HashMap</span>&lt;&gt;();</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">char</span> c : t.toCharArray()) hashMap.put(c, hashMap.getOrDefault(c, <span class="number">0</span>) + <span class="number">1</span>);</span><br><span class="line">        </span><br><span class="line">        <span class="type">int</span> <span class="variable">keySize</span> <span class="operator">=</span> hashMap.size();</span><br><span class="line">        <span class="type">int</span> <span class="variable">countKey</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">resultLeftIndex</span> <span class="operator">=</span> -<span class="number">1</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">resultLength</span> <span class="operator">=</span> s.length() + <span class="number">1</span>;</span><br><span class="line"></span><br><span class="line">        <span class="type">int</span> <span class="variable">left</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">right</span> <span class="operator">=</span> <span class="number">0</span>; right &lt; s.length(); right++) {</span><br><span class="line">            <span class="type">char</span> <span class="variable">c</span> <span class="operator">=</span> s.charAt(right);</span><br><span class="line">            <span class="keyword">if</span>(hashMap.containsKey(c)) {</span><br><span class="line">                hashMap.put(c, hashMap.get(c) - <span class="number">1</span>);</span><br><span class="line">                <span class="comment">// 从1变为0，说明该字母用完了</span></span><br><span class="line">                <span class="keyword">if</span>(hashMap.get(c) == <span class="number">0</span>) countKey++;</span><br><span class="line">            }</span><br><span class="line">            <span class="comment">// 当达到要求，左指针循环往右，找更短的长度</span></span><br><span class="line">            <span class="keyword">while</span>(countKey == keySize) {</span><br><span class="line">                <span class="comment">// 临时记录一下满足条件的长度</span></span><br><span class="line">                <span class="keyword">if</span>(right - left + <span class="number">1</span> &lt; resultLength) {</span><br><span class="line">                    <span class="comment">// 如果比已经记录的还要短，更新</span></span><br><span class="line">                    resultLeftIndex = left;</span><br><span class="line">                    resultLength = right - left + <span class="number">1</span>;</span><br><span class="line">                }</span><br><span class="line">                <span class="type">char</span> <span class="variable">leftC</span> <span class="operator">=</span> s.charAt(left);</span><br><span class="line">                <span class="keyword">if</span>(hashMap.containsKey(leftC)) {</span><br><span class="line">                    hashMap.put(leftC, hashMap.get(leftC) + <span class="number">1</span>);</span><br><span class="line">                    <span class="comment">// 从0变为1，说明该字母变为 没有用完的状态</span></span><br><span class="line">                    <span class="keyword">if</span>(hashMap.get(leftC) == <span class="number">1</span>) countKey--;</span><br><span class="line">                }</span><br><span class="line">                <span class="comment">// 左指针继续往右，如果 countKey 还等于 keySize，说明还有更短的 </span></span><br><span class="line">                left++;</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> resultLength == s.length() + <span class="number">1</span> ? <span class="string">""</span> : s.substring(resultLeftIndex, resultLeftIndex +  resultLength);</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><hr><h3 id="滑动窗口"><a href="#滑动窗口" class="headerlink" title="滑动窗口"></a>滑动窗口</h3><h4 id="3-无重复字符的最长子串"><a href="#3-无重复字符的最长子串" class="headerlink" title="3.无重复字符的最长子串"></a><a href="https://leetcode.cn/problems/longest-substring-without-repeating-characters/description/?envType=study-plan-v2&amp;envId=top-100-liked">3.无重复字符的最长子串</a></h4><p>给定一个字符串<code>s</code>，请你找出其中不含有重复字符的<strong>最长子串</strong>的长度。 </p><p><strong>示例 1:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入: s = "abcabcbb"</span><br><span class="line">输出: 3 </span><br><span class="line">解释: 因为无重复字符的最长子串是 "abc"，所以其长度为 3。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">输入: s = "bbbbb"</span><br><span class="line">输出: 1</span><br><span class="line">解释: 因为无重复字符的最长子串是 "b"，所以其长度为 1。</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">输入: s = "pwwkew"</span><br><span class="line">输出: 3</span><br><span class="line">解释: 因为无重复字符的最长子串是 "wke"，所以其长度为 3。</span><br><span class="line">     请注意，你的答案必须是 子串 的长度，"pwke" 是一个子序列，不是子串。</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>0 &lt;= s.length &lt;= 5 * 104</code></li><li><code>s 由英文字母、数字、符号和空格组成</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">lengthOfLongestSubstring</span><span class="params">(String s)</span> {</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 存储 当前时刻 每个字符的 最右边位置</span></span><br><span class="line">        Map&lt;Character, Integer&gt; hashMap = <span class="keyword">new</span> <span class="title class_">HashMap</span>&lt;&gt;();</span><br><span class="line"></span><br><span class="line">        <span class="type">int</span> <span class="variable">left</span> <span class="operator">=</span> <span class="number">0</span>; <span class="comment">// 记录 不含有重复字符 的 子串 左边下标</span></span><br><span class="line">        <span class="type">int</span> <span class="variable">result</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        </span><br><span class="line">        <span class="comment">// 循环以 右边下标 的意义 开始循环</span></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">right</span> <span class="operator">=</span> <span class="number">0</span>; right &lt; s.length(); right++) {</span><br><span class="line">            <span class="type">char</span> <span class="variable">c</span> <span class="operator">=</span> s.charAt(right);</span><br><span class="line">            </span><br><span class="line">            <span class="keyword">if</span>(!hashMap.containsKey(c)) {</span><br><span class="line">                <span class="comment">// 没有当然直接记录，新字符的 位置</span></span><br><span class="line">                hashMap.put(c, right);</span><br><span class="line">            } <span class="keyword">else</span> {</span><br><span class="line">                <span class="comment">// 如果有记录，则去拿到 这个字符 上一次出现位置的 下一个位置</span></span><br><span class="line">                <span class="type">int</span> <span class="variable">preIndex</span> <span class="operator">=</span> hashMap.get(c) + <span class="number">1</span>;</span><br><span class="line">                <span class="comment">// 如果这个位置 比 left 还更靠右，自然滑动窗口 左边往右滑动</span></span><br><span class="line">                <span class="keyword">if</span>(preIndex &gt; left) left = preIndex;</span><br><span class="line">                hashMap.put(c, right);</span><br><span class="line">            }</span><br><span class="line"></span><br><span class="line">            result = Math.max(result, right - left + <span class="number">1</span>);</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="438-找到字符串中所有字母异位词"><a href="#438-找到字符串中所有字母异位词" class="headerlink" title="438.找到字符串中所有字母异位词"></a><a href="https://leetcode.cn/problems/find-all-anagrams-in-a-string/description/?envType=study-plan-v2&amp;envId=top-100-liked">438.找到字符串中所有字母异位词</a></h4><p>给定两个字符串<code>s</code>和<code>p</code>，找到<code>s</code>中所有<code>p</code>的<strong>异位词</strong>的子串，返回这些子串的起始索引。不考虑答案输出的顺序。</p><p><strong>异位词</strong>指由相同字母重排列形成的字符串（包括相同的字符串）。</p><p><strong>示例 1:</strong></p><p><strong>输入:</strong> s = “cbaebabacd”, p = “abc”</p><p><strong>输出:</strong> [0,6]</p><p><strong>解释:</strong></p><p>起始索引等于 0 的子串是 “cba”, 它是 “abc” 的异位词。</p><p>起始索引等于 6 的子串是 “bac”, 它是 “abc” 的异位词。</p><p> <strong>示例 2:</strong></p><p><strong>输入:</strong> s = “abab”, p = “ab”</p><p><strong>输出:</strong> [0,1,2]</p><p><strong>解释:</strong></p><p>起始索引等于 0 的子串是 “ab”, 它是 “ab” 的异位词。</p><p>起始索引等于 1 的子串是 “ba”, 它是 “ab” 的异位词。</p><p>起始索引等于 2 的子串是 “ab”, 它是 “ab” 的异位词。</p><p><strong>提示:</strong></p><ul><li><code>1 &lt;= s.length, p.length &lt;= 3 * 104</code></li><li><code>s 和 p 仅包含小写字母</code></li></ul><h5 id="解法一"><a href="#解法一" class="headerlink" title="解法一"></a>解法一</h5><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> List&lt;Integer&gt; <span class="title function_">findAnagrams</span><span class="params">(String s, String p)</span> {</span><br><span class="line"></span><br><span class="line">        List&lt;Integer&gt; result = <span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;();</span><br><span class="line"></span><br><span class="line">        <span class="type">int</span> <span class="variable">left</span> <span class="operator">=</span> <span class="number">0</span>; <span class="comment">// 滑动窗口左边坐标</span></span><br><span class="line">        </span><br><span class="line">        <span class="comment">// 比方说 a:2 说明 a 还有2个 </span></span><br><span class="line">        HashMap&lt;Character, Integer&gt; hashMap = <span class="keyword">new</span> <span class="title class_">HashMap</span>&lt;&gt;();</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; p.length(); i++) {</span><br><span class="line">            <span class="type">char</span> <span class="variable">c</span> <span class="operator">=</span> p.charAt(i);</span><br><span class="line">            hashMap.put(c, hashMap.getOrDefault(c, <span class="number">0</span>) + <span class="number">1</span>);</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        <span class="type">int</span> <span class="variable">zero</span> <span class="operator">=</span> hashMap.size(); <span class="comment">// p 不同的字符 个数</span></span><br><span class="line">        <span class="type">int</span> <span class="variable">countZero</span> <span class="operator">=</span> <span class="number">0</span>; <span class="comment">// 记录 用完的不同字符 数量 比方说 p 为“aabc” ，countZero为3 的话 意味着 滑动窗口里面a、b、c都用完了</span></span><br><span class="line"></span><br><span class="line">        <span class="comment">// 滑动窗口右边坐标</span></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">right</span> <span class="operator">=</span> <span class="number">0</span>; right &lt; s.length(); right++) {</span><br><span class="line">            <span class="type">char</span> <span class="variable">c</span> <span class="operator">=</span> s.charAt(right);</span><br><span class="line"></span><br><span class="line">            <span class="keyword">if</span>(hashMap.containsKey(c)) {</span><br><span class="line">                <span class="comment">// 这个字符属于 p 的话, 说明被使用 还剩余的数量减一</span></span><br><span class="line">                hashMap.put(c, hashMap.get(c) - <span class="number">1</span>);</span><br><span class="line">                <span class="comment">// 当数量变为了0， 这里肯定是从 1 变为0，那么说明这个字符使用完毕，countZero 加1</span></span><br><span class="line">                <span class="keyword">if</span>(hashMap.get(c) == <span class="number">0</span>) countZero++;</span><br><span class="line">                <span class="keyword">if</span>(countZero == zero) {</span><br><span class="line">                    <span class="comment">// 说明所有字符都使用完毕，这个滑动窗口符合要求</span></span><br><span class="line">                    result.add(left);</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">            <span class="comment">// 一旦滑动窗口的大小和 p的长度相同，就该 窗口左边 往右移动一位了</span></span><br><span class="line">            <span class="keyword">if</span>(right - left + <span class="number">1</span> == p.length()) {</span><br><span class="line">                <span class="type">char</span> <span class="variable">tempC</span> <span class="operator">=</span> s.charAt(left++);</span><br><span class="line">                <span class="keyword">if</span>(hashMap.containsKey(tempC)) {</span><br><span class="line">                    hashMap.put(tempC, hashMap.get(tempC) + <span class="number">1</span>);</span><br><span class="line">                    <span class="comment">// 说明从0 变为的 1 ，自然就是 这个字符 没有被使用完毕了</span></span><br><span class="line">                    <span class="keyword">if</span>(hashMap.get(tempC) == <span class="number">1</span>) countZero--;</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h5 id="解法二"><a href="#解法二" class="headerlink" title="解法二"></a>解法二</h5><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> List&lt;Integer&gt; <span class="title function_">findAnagrams</span><span class="params">(String s, String p)</span> {</span><br><span class="line">        List&lt;Integer&gt; result = <span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;();</span><br><span class="line">        </span><br><span class="line">        <span class="type">char</span>[] pChars = p.toCharArray();</span><br><span class="line">        Arrays.sort(pChars);</span><br><span class="line">        p = <span class="keyword">new</span> <span class="title class_">String</span>(pChars);</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i + p.length() - <span class="number">1</span> &lt; s.length() ; i++) {</span><br><span class="line">            <span class="type">char</span>[] sChars = s.substring(i, i + p.length()).toCharArray();</span><br><span class="line">            Arrays.sort(sChars);</span><br><span class="line">            <span class="keyword">if</span>(p.equals(<span class="keyword">new</span> <span class="title class_">String</span>(sChars))) {</span><br><span class="line">                result.add(i);</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><hr><h3 id="双指针"><a href="#双指针" class="headerlink" title="双指针"></a>双指针</h3><h4 id="11-盛最多水的容器"><a href="#11-盛最多水的容器" class="headerlink" title="11.盛最多水的容器"></a><a href="https://leetcode.cn/problems/container-with-most-water/description/?envType=study-plan-v2&amp;envId=top-100-liked">11.盛最多水的容器</a></h4><p>给定一个长度为<code>n</code>的整数数组<code>height</code>。有<code>n</code>条垂线，第 i 条线的两个端点是<code>(i, 0)</code>和<code>(i, height[i])</code> 。</p><p>找出其中的两条线，使得它们与<code>x</code>轴共同构成的容器可以容纳最多的水。</p><p>返回容器可以储存的最大水量。</p><p><strong>说明：</strong>你不能倾斜容器。</p><p><strong>示例 1：</strong></p><p><strong>输入：</strong>[1,8,6,2,5,4,8,3,7]</p><p><strong>输出：</strong>49 </p><p><strong>解释：</strong>图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下，容器能够容纳水（表示为蓝色部分）的最大值为 49。<strong>示例 2：</strong></p><p><strong>输入：</strong>height = [1,1]</p><p><strong>输出：</strong>1</p><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">maxArea</span><span class="params">(<span class="type">int</span>[] height)</span> {</span><br><span class="line">        <span class="comment">// 短板效应，面积只取决于短板，因为长板就算遇到更长的，短板在那儿，面积也没法变大</span></span><br><span class="line">        <span class="comment">// 所以，还是只能移动短板</span></span><br><span class="line"></span><br><span class="line">        <span class="type">int</span> <span class="variable">left</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">right</span> <span class="operator">=</span> height.length - <span class="number">1</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">result</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">while</span>(left &lt; right) {</span><br><span class="line">            result = height[left] &lt; height[right] ? </span><br><span class="line">                Math.max(result, (right - left) * height[left++])  :</span><br><span class="line">                Math.max(result, (right - left) * height[right--]);</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="15-三数之和"><a href="#15-三数之和" class="headerlink" title="15.三数之和"></a><a href="https://leetcode.cn/problems/3sum/description/?envType=study-plan-v2&amp;envId=top-100-liked">15.三数之和</a></h4><p>给你一个整数数组<code>nums</code>，判断是否存在三元组<code>[nums[i], nums[j], nums[k]]</code>满足<code>i != j</code>、<code>i != k</code>且<code> j != k</code>，同时还满足<code>nums[i] + nums[j] + nums[k] == 0</code>。请你返回所有和为<code>0</code>且不重复的三元组。</p><p><strong>注意：</strong>答案中不可以包含重复的三元组。 </p><p><strong>示例 1：</strong></p><p><strong>输入：</strong>nums = [-1,0,1,2,-1,-4]</p><p><strong>输出：</strong>[[-1,-1,2],[-1,0,1]]</p><p><strong>解释：</strong></p><p>nums[0] + nums[1] + nums[2] = (-1) + 0 + 1 = 0 。</p><p>nums[1] + nums[2] + nums[4] = 0 + 1 + (-1) = 0 。</p><p>nums[0] + nums[3] + nums[4] = (-1) + 2 + (-1) = 0 。</p><p>不同的三元组是 [-1,0,1] 和 [-1,-1,2] 。</p><p>注意，输出的顺序和三元组的顺序并不重要。</p><p><strong>示例 2：</strong></p><p><strong>输入：</strong>nums = [0,1,1]</p><p><strong>输出：</strong>[]</p><p><strong>解释：</strong>唯一可能的三元组和不为 0 。</p><p><strong>示例 3：</strong></p><p><strong>输入：</strong>nums = [0,0,0]</p><p><strong>输出：</strong>[[0,0,0]]</p><p><strong>解释：</strong>唯一可能的三元组和为 0 。</p><p><strong>提示：</strong></p><ul><li><code>3 &lt;= nums.length &lt;= 3000</code></li><li><code>105 &lt;= nums[i] &lt;= 105</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> List&lt;List&lt;Integer&gt;&gt; <span class="title function_">threeSum</span><span class="params">(<span class="type">int</span>[] nums)</span> {</span><br><span class="line">        <span class="comment">// 基本的逻辑就是，先排序，再基于 一个点，右边剩余的点用左右指针来找，中途顺便去重</span></span><br><span class="line">        List&lt;List&lt;Integer&gt;&gt; result = <span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;();</span><br><span class="line">        Arrays.sort(nums); <span class="comment">// 排好序就有了大小关系</span></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">firstIndex</span> <span class="operator">=</span> <span class="number">0</span>; firstIndex &lt; nums.length - <span class="number">2</span>; firstIndex++) {</span><br><span class="line">            <span class="comment">// 因为拍好了序，第一个点就大于0，右边肯定相加不能等于0</span></span><br><span class="line">            <span class="keyword">if</span>(nums[firstIndex] &gt; <span class="number">0</span>) <span class="keyword">break</span>; </span><br><span class="line">            <span class="comment">// 直接把相同的第一个数过滤掉</span></span><br><span class="line">            <span class="keyword">if</span>(firstIndex &gt; <span class="number">0</span> &amp;&amp; nums[firstIndex] == nums[firstIndex - <span class="number">1</span>]) <span class="keyword">continue</span>;</span><br><span class="line"></span><br><span class="line">            <span class="comment">// 双指针确认第三个数</span></span><br><span class="line"></span><br><span class="line">            <span class="comment">// 第二个数 自然是 第一个数的下一个</span></span><br><span class="line">            <span class="type">int</span> <span class="variable">secondIndex</span> <span class="operator">=</span> firstIndex + <span class="number">1</span>;</span><br><span class="line"></span><br><span class="line">            <span class="comment">// 双指针，第三个数 自然是 数组中最后一个</span></span><br><span class="line">            <span class="type">int</span> <span class="variable">thirdIndex</span> <span class="operator">=</span> nums.length - <span class="number">1</span>;</span><br><span class="line"></span><br><span class="line">            <span class="keyword">while</span>(secondIndex &lt; thirdIndex) {</span><br><span class="line">                <span class="type">int</span> <span class="variable">sum</span> <span class="operator">=</span> nums[firstIndex] + nums[secondIndex] + nums[thirdIndex];</span><br><span class="line">                <span class="keyword">if</span>(sum &lt; <span class="number">0</span>) {</span><br><span class="line">                    <span class="comment">// 偏小，第二个数往右移，并且相同的话还要过滤</span></span><br><span class="line">                    <span class="keyword">while</span>(secondIndex &lt; thirdIndex &amp;&amp; nums[secondIndex] == nums[++secondIndex]);</span><br><span class="line">                } <span class="keyword">else</span> <span class="keyword">if</span>(sum &gt; <span class="number">0</span>) {</span><br><span class="line">                    <span class="comment">// 偏大，第三个数往左移，并且相同的话还要过滤</span></span><br><span class="line">                    <span class="keyword">while</span>(secondIndex &lt; thirdIndex &amp;&amp; nums[thirdIndex] == nums[--thirdIndex]);</span><br><span class="line">                } <span class="keyword">else</span> {</span><br><span class="line">                    <span class="comment">// 找到了，也要去过滤相同的</span></span><br><span class="line">                    result.add(List.of(nums[firstIndex], nums[secondIndex], nums[thirdIndex]));</span><br><span class="line">                    <span class="keyword">while</span>(secondIndex &lt; thirdIndex &amp;&amp; nums[secondIndex] == nums[++secondIndex]);</span><br><span class="line">                    <span class="keyword">while</span>(secondIndex &lt; thirdIndex &amp;&amp; nums[thirdIndex] == nums[--thirdIndex]);</span><br><span class="line">                }</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="42-接雨水"><a href="#42-接雨水" class="headerlink" title="42.接雨水"></a><a href="https://leetcode.cn/problems/trapping-rain-water/description/?envType=study-plan-v2&amp;envId=top-100-liked">42.接雨水</a></h4><p>给定<code>n</code>个非负整数表示每个宽度为<code>1</code>的柱子的高度图，计算按此排列的柱子，下雨之后能接多少雨水。</p><p><strong>示例 1：</strong></p><p><strong>输入：</strong>height = [0,1,0,2,1,0,1,3,2,1,2,1]</p><p><strong>输出：</strong>6</p><p><strong>解释：</strong>上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图，在这种情况下，可以接 6 个单位的雨水（蓝色部分表示雨水）。 </p><p><strong>示例 2：</strong></p><p><strong>输入：</strong>height = [4,2,0,3,2,5]</p><p><strong>输出：</strong>9</p><p><strong>提示：</strong></p><ul><li><code>n == height.length</code></li><li><code>1 &lt;= n &lt;= 2 * 104</code></li><li><code>0 &lt;= height[i] &lt;= 105</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">trap</span><span class="params">(<span class="type">int</span>[] height)</span> {</span><br><span class="line"></span><br><span class="line">        <span class="type">int</span> <span class="variable">max</span> <span class="operator">=</span> -<span class="number">1</span>;</span><br><span class="line">        <span class="type">int</span> <span class="variable">result</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        <span class="comment">// 单调递减栈</span></span><br><span class="line">        LinkedList&lt;Integer&gt; stack = <span class="keyword">new</span> <span class="title class_">LinkedList</span>&lt;&gt;();</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; height.length; i++) {</span><br><span class="line">            <span class="comment">// 一开始就是0 去过滤</span></span><br><span class="line">            <span class="keyword">if</span>(max == -<span class="number">1</span> &amp;&amp; height[i] == <span class="number">0</span>) <span class="keyword">continue</span>;</span><br><span class="line">            <span class="keyword">if</span>(max == -<span class="number">1</span>) {</span><br><span class="line">                <span class="comment">// 第一个边界</span></span><br><span class="line">                max = height[i];</span><br><span class="line">                stack.push(height[i]);</span><br><span class="line">                <span class="keyword">continue</span>;</span><br><span class="line">            }</span><br><span class="line"></span><br><span class="line">            <span class="comment">// 超过了最高</span></span><br><span class="line">            <span class="keyword">if</span>(height[i] &gt; max) {</span><br><span class="line">                <span class="comment">// 那么之前一定能用之前的max填满</span></span><br><span class="line">                <span class="comment">// 一边计算，一边全部出栈</span></span><br><span class="line">                <span class="keyword">while</span>(stack.peek() &lt; max) {</span><br><span class="line">                    result += (max - stack.poll());</span><br><span class="line">                }</span><br><span class="line">                <span class="comment">// 把之前的最高出栈，记录新的最高</span></span><br><span class="line">                stack.poll();</span><br><span class="line">                stack.push(height[i]);</span><br><span class="line">                max = height[i]; <span class="comment">// 置新的max</span></span><br><span class="line">                <span class="keyword">continue</span>;</span><br><span class="line">            }</span><br><span class="line"></span><br><span class="line">            <span class="keyword">if</span>(height[i] &gt; stack.peek()) {</span><br><span class="line">                <span class="comment">// 没有超过最高，但比栈顶元素高, 因为是单调递减栈</span></span><br><span class="line">                <span class="comment">// 所以 往前遍历 更矮的, 注意这里使用了队列保证相对位置</span></span><br><span class="line">                LinkedList&lt;Integer&gt; queue = <span class="keyword">new</span> <span class="title class_">LinkedList</span>&lt;&gt;();</span><br><span class="line">                <span class="keyword">while</span>(height[i] &gt; stack.peek()) {</span><br><span class="line">                    result += (height[i] - stack.poll());</span><br><span class="line">                    queue.addLast(height[i]);</span><br><span class="line">                }</span><br><span class="line">                <span class="comment">// 再依次入栈，保证相对位置</span></span><br><span class="line">                <span class="keyword">while</span>(!queue.isEmpty()) stack.push(queue.pollFirst());</span><br><span class="line">            }</span><br><span class="line">            stack.push(height[i]);</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="283-移动零"><a href="#283-移动零" class="headerlink" title="283.移动零"></a><a href="https://leetcode.cn/problems/move-zeroes/description/?envType=study-plan-v2&amp;envId=top-100-liked">283.移动零</a></h4><p>给定一个数组<code>nums</code>，编写一个函数将所有<code>0</code>移动到数组的末尾，同时保持非零元素的相对顺序。</p><p><strong>请注意</strong> ，必须在不复制数组的情况下原地对数组进行操作。</p><p><strong>示例 1:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入: nums = [0,1,0,3,12]</span><br><span class="line">输出: [1,3,12,0,0]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入: nums = [0]</span><br><span class="line">输出: [0]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示</strong>:</p><ul><li><code>1 &lt;= nums.length &lt;= 104</code></li><li><code>231 &lt;= nums[i] &lt;= 231 - 1</code></li></ul><h5 id="解法一-1"><a href="#解法一-1" class="headerlink" title="解法一"></a>解法一</h5><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="comment">// 新方法</span></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">moveZeroes</span><span class="params">(<span class="type">int</span>[] nums)</span> {</span><br><span class="line">        <span class="comment">// 左待换位置</span></span><br><span class="line">        <span class="type">int</span> <span class="variable">left</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">right</span> <span class="operator">=</span> <span class="number">0</span>; right &lt; nums.length; right++) {</span><br><span class="line">            <span class="keyword">if</span>(nums[right] != <span class="number">0</span>) {</span><br><span class="line">                <span class="comment">// 右指针走到该换的位置</span></span><br><span class="line">                <span class="type">int</span> <span class="variable">temp</span> <span class="operator">=</span> nums[left];</span><br><span class="line">                nums[left] = nums[right];</span><br><span class="line">                nums[right] = temp;</span><br><span class="line">                <span class="comment">// 换完了，左指针右移一位</span></span><br><span class="line">                left++;</span><br><span class="line">            }</span><br><span class="line">        }</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h5 id="解法二-1"><a href="#解法二-1" class="headerlink" title="解法二"></a>解法二</h5><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.util.Arrays;</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">moveZeroes</span><span class="params">(<span class="type">int</span>[] nums)</span> {</span><br><span class="line">        <span class="type">int</span>[] newNums = <span class="keyword">new</span> <span class="title class_">int</span>[nums.length];</span><br><span class="line">        <span class="type">int</span> <span class="variable">index</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        <span class="keyword">for</span> (<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; nums.length; i++) {</span><br><span class="line">            <span class="keyword">if</span> (nums[i] != <span class="number">0</span>) newNums[index++] = nums[i];</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">for</span> (<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; nums.length; i++) {</span><br><span class="line">            nums[i] = newNums[i];</span><br><span class="line">        }</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><hr><h3 id="哈希"><a href="#哈希" class="headerlink" title="哈希"></a>哈希</h3><h4 id="49-字母异位词"><a href="#49-字母异位词" class="headerlink" title="49.字母异位词"></a><a href="https://leetcode.cn/problems/group-anagrams/description/?envType=study-plan-v2&amp;envId=top-100-liked">49.字母异位词</a></h4><p>给你一个字符串数组，请你将<strong>字母异位词</strong>组合在一起。可以按任意顺序返回结果列表。</p><p><strong>字母异位词</strong>是由重新排列源单词的所有字母得到的一个新单词。</p><p><strong>示例 1:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]</span><br><span class="line">输出: [["bat"],["nat","tan"],["ate","eat","tea"]]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 2:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入: strs = [""]</span><br><span class="line">输出: [[""]]</span><br></pre></td></tr></tbody></table></figure><p><strong>示例 3:</strong></p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">输入: strs = ["a"]</span><br><span class="line">输出: [["a"]]</span><br></pre></td></tr></tbody></table></figure><p><strong>提示：</strong></p><ul><li><code>1 &lt;= strs.length &lt;= 104</code></li><li><code>0 &lt;= strs[i].length &lt;= 100</code></li><li><code>strs[i] 仅包含小写字母</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> List&lt;List&lt;String&gt;&gt; <span class="title function_">groupAnagrams</span><span class="params">(String[] strs)</span> {</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 其实已经想到 到底该怎么记录  hashMap的 key了</span></span><br><span class="line">        <span class="comment">// 没想到的是，直接排序，那么相同结构的字符串，自然排完序就是同样的字符串</span></span><br><span class="line">        <span class="comment">// 非常适合作为hashMap的key</span></span><br><span class="line">        List&lt;List&lt;String&gt;&gt; result = <span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;&gt;();</span><br><span class="line">        HashMap&lt;String, List&lt;String&gt;&gt; hashMap = <span class="keyword">new</span> <span class="title class_">HashMap</span>&lt;&gt;();</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span>(String str : strs) {</span><br><span class="line">            <span class="type">char</span>[] tempChars = str.toCharArray();</span><br><span class="line">            Arrays.sort(tempChars);</span><br><span class="line">            <span class="type">String</span> <span class="variable">tempString</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">String</span>(tempChars);</span><br><span class="line">            List&lt;String&gt; list = hashMap.getOrDefault(tempString, <span class="keyword">new</span> <span class="title class_">ArrayList</span>&lt;String&gt;());</span><br><span class="line">            list.add(str);</span><br><span class="line">            hashMap.put(tempString, list);</span><br><span class="line">        }</span><br><span class="line">        hashMap.values().forEach(value -&gt; {</span><br><span class="line">            result.add(value);</span><br><span class="line">        });</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="128-最长连续序列"><a href="#128-最长连续序列" class="headerlink" title="128.最长连续序列"></a><a href="https://leetcode.cn/problems/longest-consecutive-sequence/description/?envType=study-plan-v2&amp;envId=top-100-liked">128.最长连续序列</a></h4><p>给定一个未排序的整数数组<code>nums</code>，找出数字连续的最长序列（不要求序列元素在原数组中连续）的长度。</p><p>请你设计并实现时间复杂度为<code>O(n)</code>的算法解决此问题。</p><p><strong>示例 1：</strong></p><p><strong>输入：</strong>nums = [100,4,200,1,3,2]</p><p><strong>输出：</strong>4</p><p><strong>解释：</strong>最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。<strong>示例 2：</strong></p><p><strong>输入：</strong>nums = [0,3,7,2,5,8,4,6,0,1]</p><p><strong>输出：</strong>9</p><p><strong>提示：</strong></p><ul><li><code>0 &lt;= nums.length &lt;= 105</code></li><li><code>109 &lt;= nums[i] &lt;= 109</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.util.HashSet;</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span> <span class="title function_">longestConsecutive</span><span class="params">(<span class="type">int</span>[] nums)</span> {</span><br><span class="line">        </span><br><span class="line">        <span class="comment">// 这方法有点意思，通过HashMap去往前往后查</span></span><br><span class="line">        HashSet&lt;Integer&gt; hashSet = <span class="keyword">new</span> <span class="title class_">HashSet</span>&lt;&gt;();</span><br><span class="line">        Arrays.stream(nums).forEach(num -&gt; {hashSet.add(num);});</span><br><span class="line"></span><br><span class="line">        <span class="type">int</span> <span class="variable">result</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> num : nums) {</span><br><span class="line">            <span class="type">int</span> <span class="variable">tempResult</span> <span class="operator">=</span> <span class="number">1</span>;</span><br><span class="line">            <span class="type">int</span> <span class="variable">preNum</span> <span class="operator">=</span> num - <span class="number">1</span>;</span><br><span class="line">            <span class="type">int</span> <span class="variable">nextNum</span> <span class="operator">=</span> num + <span class="number">1</span>;</span><br><span class="line">            hashSet.remove(num);</span><br><span class="line">            <span class="keyword">while</span>(hashSet.contains(preNum)) {</span><br><span class="line">                tempResult++;</span><br><span class="line">                hashSet.remove(preNum);</span><br><span class="line">                preNum--;</span><br><span class="line">            }</span><br><span class="line">            <span class="keyword">while</span>(hashSet.contains(nextNum)) {</span><br><span class="line">                tempResult++;</span><br><span class="line">                hashSet.remove(nextNum);</span><br><span class="line">                nextNum++;</span><br><span class="line">            }</span><br><span class="line">            result = Math.max(result, tempResult);</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="1-两数之和"><a href="#1-两数之和" class="headerlink" title="1.两数之和"></a><a href="https://leetcode.cn/problems/two-sum/description/?envType=study-plan-v2&amp;envId=top-100-liked">1.两数之和</a></h4><p>给定一个整数数组<code>nums</code>和一个整数目标值<code>target</code>，请你在该数组中找出<strong>和为目标值</strong><code>target</code> 的那<strong>两个</strong>整数，并返回它们的数组下标。</p><p>你可以假设每种输入只会对应一个答案。但是，数组中同一个元素在答案里不能重复出现。</p><p>你可以按任意顺序返回答案。</p><p><strong>示例 1：</strong></p><p><strong>输入：</strong>nums = [2,7,11,15], target = 9</p><p><strong>输出：</strong>[0,1]</p><p><strong>解释：</strong>因为 nums[0] + nums[1] == 9 ，返回 [0, 1] 。</p><p><strong>示例 2：</strong></p><p><strong>输入：</strong>nums = [3,2,4], target = 6</p><p><strong>输出：</strong>[1,2]</p><p><strong>示例 3：</strong></p><p><strong>输入：</strong>nums = [3,3], target = 6</p><p><strong>输出：</strong>[0,1]</p><p><strong>提示：</strong></p><ul><li><code>2 &lt;= nums.length &lt;= 104</code></li><li><code>109 &lt;= nums[i] &lt;= 109</code></li><li><code>109 &lt;= target &lt;= 109</code></li><li><code>只会存在一个有效答案</code></li></ul><figure class="highlight java"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">Solution</span> {</span><br><span class="line">    <span class="keyword">public</span> <span class="type">int</span>[] twoSum(<span class="type">int</span>[] nums, <span class="type">int</span> target) {</span><br><span class="line">        HashMap&lt;Integer, Integer&gt; hashMap = <span class="keyword">new</span> <span class="title class_">HashMap</span>&lt;&gt;();</span><br><span class="line">      </span><br><span class="line">        <span class="type">int</span>[] result = <span class="keyword">new</span> <span class="title class_">int</span>[<span class="number">2</span>];</span><br><span class="line">        <span class="keyword">for</span>(<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>; i &lt; nums.length; i++) {</span><br><span class="line">            </span><br><span class="line">            <span class="keyword">if</span>(hashMap.containsKey(target - nums[i])) {</span><br><span class="line">                result[<span class="number">0</span>] = i;</span><br><span class="line">                result[<span class="number">1</span>] = hashMap.get(target - nums[i]);</span><br><span class="line">                <span class="keyword">break</span>;</span><br><span class="line">            }</span><br><span class="line">            hashMap.put(nums[i], i);</span><br><span class="line">        }</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><p>ps：测试更新时间 2024.09.27</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E7%A8%8B%E5%BA%8F%E5%91%98/">程序员</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E7%AE%97%E6%B3%95/">算法</category>
      
      <category domain="https://www.ninojay.top/tags/Java/">Java</category>
      
      
      <comments>https://www.ninojay.top/programmer/knowledge/algorithm/leetcode-hot-100/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>2024年8月初写过的无聊的诗</title>
      <link>https://www.ninojay.top/2024/recently-written-poems-5/</link>
      <guid>https://www.ninojay.top/2024/recently-written-poems-5/</guid>
      <pubDate>Thu, 08 Aug 2024 11:15:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h5 id="和自己生活"><a href="#和自己生活" class="headerlink" title="和自己生活"></a>和自己生活</h5><p>我说我喜欢我<br>就像我说过<br>贫穷对我是好事<br>都是逞能</p><p>你们被表象说服<br>眼里喷涌的赏识<br>是利剑斩进我的心窝<br>我怀疑你们全都知道<br>岩石比不上嘴唇坚固<br>蝉翼没有人背影单薄<br>气候折磨我时爱偷笑<br>细雨绵绵不休不断<br>炎火蕴蕴浮底浮空</p><p>埋头看<br>还剩一把伞<br>允许我和自己生活<br>我想应该足够了</p><br><h5 id="雨滴们"><a href="#雨滴们" class="headerlink" title="雨滴们"></a>雨滴们</h5><p>空洞的人造信息<br>强迫灌入新的脑<br>冠以勋章为传承<br>佩戴在无趣胸前<br>俯瞰洪水冲破堤坝<br>雨滴们虽来自天际<br>终被滔天气势喝住<br>看看是谁选择扔掉<br>滋润万物之特权<br>还暗自庆祝</p><br><h5 id="正年轻时候"><a href="#正年轻时候" class="headerlink" title="正年轻时候"></a>正年轻时候</h5><p>我想年轻时候<br>踏踏实实地<br>做一个</p><p>贫穷的富二代<br>馋肉的出家人<br>幸福的流浪汉<br>形单的风流鬼</p><p>我想有一天<br>考虑未来的保障<br>选择遏制天性<br>会是我关于年轻坟墓的<br>第一捧土</p><p>我想那时候<br>责任的浓雾遍布<br>身影再高大<br>被年轻时候的我审视<br>也会是偏斜的</p><p>我不想那时候<br>的我难过</p><br><h5 id="文字"><a href="#文字" class="headerlink" title="文字"></a>文字</h5><p>文字的美妙在于<br>忧伤、愉悦、平静<br>沮丧、失落、狂喜<br>能被我放在同一个秒针里<br>否则该如何向你<br>传达我的神秘</p><p>可怜可怜我吧<br>我只掌握这一种工具<br>别用那种眼神看我<br>不行，不<br>还是得时刻提防<br>暴露虚弱的自己</p><p>“别担心，让我指导你”<br>我听到过往的作家们传音：<br>“借以虚构故事<br>表达整个内心<br>你的卑劣合理<br>这是使命的烙印”</p><br><h5 id="夏天的战士"><a href="#夏天的战士" class="headerlink" title="夏天的战士"></a>夏天的战士</h5><p>最近过于炎热了些<br>万物都在责问太阳<br>唯有植物没有参与<br>始终保持静默</p><p>万物烦躁<br>腹黑的沙漠将矛头<br>指向植物的沉默</p><p>“<br>导致我们现状的<br>该不会是植物的阴谋<br>”</p><p>沙漠收到万物的目光<br>继续分析道：</p><p>“<br>我听说<br>植物最爱吹捧太阳<br>也许是想利用太阳的膨胀<br>制造大量氧气谄媚人类<br>便能得到特意关照<br>毕竟<br>能让植物每天痛饮保持湿润的<br>唯有人类啊<br>”</p><p>万物面面相觑怜惜彼此的干枯<br>声讨植物的旗帜越发鲜明</p><p>植物置若罔闻<br>在人类的照料下<br>仍挺胸于太阳</p><br><h5 id="不说一辈子"><a href="#不说一辈子" class="headerlink" title="不说一辈子"></a>不说一辈子</h5><p>当我在夏天吃冰激凌<br>冬天溜进暖和的被窝<br>只敢庆幸当下的幸运<br>不敢奢求永远的如意</p><p>可那些恋人<br>却敢轻易地说一辈子<br>冠以形容词全是褒义<br>我不敢听更不敢想象<br>有一天会像他们那般<br>说给一个会衰老的人</p><p>那是在说大话<br>可我又亲眼看见<br>那些听到誓言的对方<br>那些平日害怕一切谎言的对方<br>那一刻却无比的相信</p><p>我发现<br>诚实和谎言的定义并不清晰<br>弄不明白的我为了心灵的平静<br>暗下决心<br>对我的那个人说<br>一辈子一定是骗你开心<br>接下来的三年<br>我能够清晰地感觉到<br>我只属于你</p><br><h5 id="没关系"><a href="#没关系" class="headerlink" title="没关系"></a>没关系</h5><p>请少一点骄傲，这不是无理的请求<br>你不曾想过，在像你这般阳光之前<br>连睡眠都控制不了的这人<br>克服的问题太多，你难以想象<br>这人才刚学会微笑 </p><p>请多一点耐心，教给这人更多的深刻<br>当务之急即是声明不止一种笑，告知<br>何为清澈下的秽物<br>何为照亮太阳的太阳</p><p>是慢了一些，晚了一些，是的，这人<br>你会疑问，究竟是什么造就这种局面<br>你也会知道，无人敢回答的问题，答案<br>就在你的下一次无意迈步的方向</p><p>怀疑自己的力量了？没关系<br>会有人告诉你<br>一切都没关系<br>只要你开始怀疑<br>一切都可以<br>和你没关系</p><br><h5 id="假"><a href="#假" class="headerlink" title="假"></a>假</h5><p>都假。</p><p>深夜里，话，<br>说给自己听。</p><p>想，多少事，<br>可以写在这里。</p><p>来去，主动浸入，<br>悲伤的容器，<br>享受。</p><p>迷狂，腻歪，流露。<br>命运。</p><br></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/">情绪</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      <category domain="https://www.ninojay.top/tags/%E8%AF%97/">诗</category>
      
      
      <comments>https://www.ninojay.top/2024/recently-written-poems-5/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>暂无</title>
      <link>https://www.ninojay.top/hide/create/Untitled/</link>
      <guid>https://www.ninojay.top/hide/create/Untitled/</guid>
      <pubDate>Tue, 06 Aug 2024 12:56:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>夏天一直这么沉闷吗？我站在16楼高的窗边，望着被太阳照的发白的区域。</p></div>]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/hide/create/Untitled/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>阅读他人文学，对我的写作帮助</title>
      <link>https://www.ninojay.top/hide/literature/help/</link>
      <guid>https://www.ninojay.top/hide/literature/help/</guid>
      <pubDate>Tue, 06 Aug 2024 12:42:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>《猜字谜》讲述了一个帅气的男青年初遇年长的感情，认为过于被动不安并不是自己需要的，最后找了个一般的老婆的故事。</p><p>故事结构值得我学习的是，借着一群人交代故事背景，也引出男主角的事。整个故事就是在描述这个人的感情变化，主要是写法上的学习。</p><p>通过看三岛由纪夫的短篇，加深了在《包法利夫人》前言里读到的写作体会，现实里的一切都是文学，都可以诉之于文学，关键点在于看你的<strong>技法</strong>如何把这个故事传达出来。</p><p>所以呢，我可以从描述生活中发生的一件事入手（扩写一首诗），这样至少有了书写的头绪。</p><blockquote><p>得提醒自己结合上 （欧亨利、契科夫、莫泊桑） 的长处</p></blockquote><p>欧亨利是一步步解密，最后反转。</p><p>契科夫聊的是人性的必然、冷漠、讽刺</p><p>莫泊桑也有人性，在我这里是小一号的契科夫</p><p>2024.08.06 《仲夏之死》三岛由纪夫</p></div>]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/hide/literature/help/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>惯常的一个晚上</title>
      <link>https://www.ninojay.top/2024/one-night/</link>
      <guid>https://www.ninojay.top/2024/one-night/</guid>
      <pubDate>Fri, 02 Aug 2024 15:01:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>​我总是在想，是只有我还是大家都和我一样，做任何事，都觉得无人带领，需要有一个老师。成长至今的任何事，即使是小事，我都处理得不够好，表现得很笨拙。包括此时说的这些话，我都觉得连贯性不足。同时我又能清楚地感觉到自己似乎也有一些好的方面，不客气的说，是有一些自傲在身上。可往往随后又发现好的程度似乎也不够坚韧，就像在路途中发现一座结实的桥，走到中间才惊觉后半段还没来得及修 。有始经常难有终。问题不在于坚持，在于的是越来越心虚这个开始是否都是错误。</p><p>​我横躺在沙发上，脑海里面充斥着这些蜉蝣般的想法，每晚思绪都会漂泊之上。</p><p>​人其实离不开痛苦，对吗？ 支撑着大家卖力生活的是脑海中未来的回报，是未来有资格惬意享受，是迎接羡慕的目光。这种未来就算现在摸不到，却仿佛能被坚定地看到，这才使得能忍受当下的痛苦。大家表面上这样生活着。可如果大家内心深处早就接受痛苦，只是从没意识到这份隐藏的喜欢痛苦，又该怎么想呢。用表面的厌恶，遮盖深层的热爱。或许只有我这样?人真是奇怪。那我自身又真的喜欢思考这些事吗？思考这些让我的心很累，我不也经常宣扬想要过一个简单的生活吗，可实际上我是否也是离不开这些虚无的思考呢。我也是个人，看来我也同样奇怪。想到这里，轻松了一些。</p><p>​从沙发上起身拉开窗帘，推开窗户，两只手交叉并拢放在窗口，上半身倚在窗边，凝视街边的夜色。今晚云层很厚，看不到月亮。在去年我刚搬到这个工业园区的时候，周边空无一物，晚上的光亮来源除了路灯，只有这栋公寓每家住客的窗户。差不多半年，我看着楼下的餐厅一间间营业，山东水饺、黄焖鸡米饭、黄山菜饭、重庆小面。每每注意到开业大酬宾，我都带着期待的步伐走入，三十分钟后，平淡的心情走出。“至少便宜，不是吗。”这些餐厅和我又有什么差别呢？从数百甚至上千公里远的家乡来到这个亟需“淘金人”的未被探明的”金矿“。餐厅味道的好坏和我这个人是否能创造价值都显得那么不重要，这里终于有了餐厅和吃餐厅的人，不是吗。经济至少开始流动。</p><p>​“在此之前，这里是沙漠，我们都是一滴水，显得那么珍贵。现在这里仅仅是河道快要成型，我们还是那一滴水，却已经显得那么无所谓。”我这么想着，望着楼下开业快一个月的小酒馆老板娘，她一个人坐在店门口的椅子上发呆，等到过路人的注意，她会立马起身招呼潜在客户进店品尝。我注意到多次，这些椅子是在黄昏的时候被她一个个布置好，凌晨时分，再被她一个个收回店里，中间的时间里通常只有一两个陌生人坐过。我和她聊过天，她说这栋公寓的人消费欲望不高。我不好意思明说，她的酒在这里实在太贵，一瓶啤酒的价格可以在旁边的餐厅吃上两顿饭。</p><p>​不断地有人出入公寓的大门。那一位养柴犬的男性，出门遛狗。同我喝过酒的另一位男性，满汗淋漓，穿着篮球服进门。在他之后三分钟，另一位酒友穿着相对得体的服装，背着包，一脸不愿意说话的表情进门，想必是刚结束恶心的工作。啊，是她，给我送过吃的邻居正提着垃圾袋，往公共垃圾桶的方向走。她的穿着每次看到，我都觉得实在干净整洁。今天她上身是白色短袖，下身是黑色长裙，微风不时吹拂着，月亮为她打着灯，裙摆和长发在跳一曲交际舞，右手拿着的黑色垃圾袋，就看做啦啦队员的手球吧。她在想什么呢？行走地这么轻快，手臂晃动的幅度声明她的心情不算糟糕，虽然看着前面的路，她的注意力却很明显没有放在扔垃圾的这件事上，真怕她突然四处张望，留意到二楼窗户边，她认识的一个单身男邻居，正傻傻地望着她。还是那么轻快，手臂一挥，那袋黑色垃圾被扔进黑色垃圾桶。她开始往回走。我赶忙把身子放回房间，关上窗户拉上窗帘。我想，她往回走时是迎面这栋公寓，一定会注意到我的。可刚一拉上窗帘，我又开始后悔，被她注意到了又会怎么样呢？我在担心什么？大大方方地迎上她的目光，打个招呼，微笑，不也挺好的吗？</p><p>​我又躺在沙发上，责怪自己变幻莫测的想法，继续躺了半小时，想了一会儿许久没见的故乡和亲人，接着洗澡，把灯全部关掉，躺到床上。今天能不能早一点开始做梦呢？</p><p>​前几年因为不懂得生活，只懂得目标，睡眠总是不足。这几年因为放弃挣扎，放纵身体，故意自暴自弃，反倒是染上了嗜睡症。寻常人被阳光照射，睡眠充足的话，就无法睡下去。而我还能强迫眼皮紧闭，转身将手臂搭在脑袋上，刚好遮蔽眼皮对光的感应，硬拽着想要清醒的脑子回到虚幻的梦境。不见得都是美好的，大多数也是难过的，可梦境里发生任何事醒来后我都惊讶。我梦到过多次自己无意杀了人，提心吊胆生活着，最终被大家识破，被执法者逮捕或者被熟悉的人帮助逃脱罪责。梦到过多次平日里不再联系的人，仍在对我释放善意，可我还是很痛苦地离去，他们的善意在梦里仍然不是我需要的。多次从高空跌落的梦，过程中全是心悸和快乐。现实中并没有遇到那么多不愉快的我，在梦里病态地痛快地感受悲痛。</p><p>​到底该如何入眠？每当我提前躺在床上，疲惫感却在大踏步离我远去。开灯，下载回已经卸载过多次的游戏，只有无脑地玩游戏才能舒服地疲惫，这时候去阅读学习太过用力。几小时过后，窗外传来小酒馆老板娘搬椅子的声音。关灯，关闭手机，听身体的话，关闭眼皮。</p><p>​今晚又会做一个什么样的梦呢？</p><blockquote><p>以上内容纯属无聊的虚构。</p></blockquote></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/">情绪</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      
      <comments>https://www.ninojay.top/2024/one-night/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>2024年7月中后写过的无聊的诗</title>
      <link>https://www.ninojay.top/2024/recently-written-poems-4/</link>
      <guid>https://www.ninojay.top/2024/recently-written-poems-4/</guid>
      <pubDate>Thu, 25 Jul 2024 16:54:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h5 id="懒惰"><a href="#懒惰" class="headerlink" title="懒惰"></a>懒惰</h5><p>懒惰是我养的宠物<br>是我主动宠爱呵护<br>是我先需要它的陪伴</p><p>它的眼神无数次告诉我<br>它需要的只是找个主</p><p>大多数人在驯服<br>而我让宠物驯服了我<br>我成为和懒惰同一种生物<br>不再能听懂往日的批驳</p><p>慢慢地<br>竟然体会到<br>舒服</p><p>懒惰认可了我<br>他告诉我他的父母叫做<br>心安<br>理得</p><br><h5 id="某一天的心情"><a href="#某一天的心情" class="headerlink" title="某一天的心情"></a>某一天的心情</h5><p>早晨<br>醒来后<br>洗澡</p><p>洗澡后穿上<br>宽松的新长裤<br>新买的白外套</p><p>穿上后<br>太阳拉上白云叩我窗<br>我向他们和蓝天问好</p><p>心里对天气说<br>今天心情很好<br>天气说他知道</p><br><h5 id="房间，不说话"><a href="#房间，不说话" class="headerlink" title="房间，不说话"></a>房间，不说话</h5><p>房间不说话<br>感受着我的情绪变化<br>任烦躁的我拖拽摆布<br>旁观我爱梦想——<br>盘算戏中剧情上演于生活<br>惊讶唯有客人到来才心系<br>遍地的伤疤</p><p>我问房间<br>究竟是谁在表达<br>或空旷或充实<br>或冷清或温馨<br>是我想要的吗</p><p>房间<br>不说话</p><br><h5 id="三年未见的朋友"><a href="#三年未见的朋友" class="headerlink" title="三年未见的朋友"></a>三年未见的朋友</h5><p>“黄昏的时候，”<br>三年未见的朋友说：<br>“我应该会直接抵达你家楼下。”</p><p>这个动作，前一个月，已在预热。<br>电话里的音调，试探着你我变化。<br>预设会说的话，想象该做的风度。</p><p>在黄昏来到之前，<br>把他熟悉的那个自己，<br>从泥土里挖掘出来清洗，<br>再把现在的一部分埋下去。<br>这样做为了什么？为了让他开心，<br>我有义务让他感到依旧熟悉。<br>这是我擅长的事情。</p><p>“想你了”，突如其来。<br>可我的心已空无一物。<br>还是作出如他所愿般回应：<br>“来看看我吧。”</p><p>哲人们总说，只管做自己认为善的事情。<br>哲人们总说，不要计较得失，要感激已有的权利与生活 。<br>他们说的漂亮，我听的舒服 ，可此刻的我，还是希望，<br>三个小时后的会面，朋友能够更加包容我。</p><br><h5 id="文艺心"><a href="#文艺心" class="headerlink" title="文艺心"></a>文艺心</h5><p>所以，爱文艺的入场券<br>皆是，难以释怀的过去<br>是吗，文艺作品契合心情<br>好像，一剂麻醉打进心灵<br>可知，我上了瘾而上瘾<br>是否，终归无用安慰剂<br>我怕，被评价可怜和逃避<br>虽然，一颗爱文艺的心<br>早已，习惯，委屈</p><br><h5 id="想在海岛退休"><a href="#想在海岛退休" class="headerlink" title="想在海岛退休"></a>想在海岛退休</h5><p>想在海岛退休<br>白天阅读写字<br>傍晚看海听风</p><p>“沙滩与月醉酒<br>浪的起伏渐浓”</p><br><h5 id="参与幸福"><a href="#参与幸福" class="headerlink" title="参与幸福"></a>参与幸福</h5><p>他们在：<br>牵手、拥抱、接吻、拍照<br>他们发现了我——<br>孤身的观众</p><p>他们不由得<br>手牵地更近了些<br>拥抱地更卖力了些<br>接吻更投入了些<br>相机里的笑容——<br>就该这般绽放呀</p><p>独自出门的我<br>有一个责任<br>提醒情侣们<br>拥有的幸福</p><br><h5 id="梦到猫"><a href="#梦到猫" class="headerlink" title="梦到猫"></a>梦到猫</h5><p>响在七点的闹钟<br>每隔十分钟变化出一只猫<br>闯进我梦境里的房间<br>我在沙发上数到第九只<br>正准备洗漱睡眠</p><p>闹钟停止<br>不敢睁眼看<br>一只猫都没有——<br>的房间</p><p>十分钟过后<br>鼓起勇气面对<br>仍然没有猫出现</p><p>我只刷了牙没洗脸<br>就出门上班</p><br><h5 id="我知道"><a href="#我知道" class="headerlink" title="我知道"></a>我知道</h5><p>我知道我很幽默<br>我知道你们喜欢听我放肆批判<br>我知道女生们愿意和我对视调情<br>我知道浪荡激情可以形容我<br>我知道我怕聚会的结束<br>我知道浮华过后我的独处像狗回到街头<br>我知道你们不知道的另一面的我<br>我知道最终只能一个人生活<br>我知道现在必须拒绝所有快乐<br>我知道我只能适应简单的生活<br>我知道我只能理解不被理解的我</p><br><h5 id="平静"><a href="#平静" class="headerlink" title="平静"></a>平静</h5><p>有一种状态<br>藏在我心底</p><p>人，能不能<br>只面对世界和自己<br>他人即缠绕，能不能<br>只用平静来点缀外向<br>细水长流浇灭爱的炽热</p><p>不追逐、不盲目、不欺侮<br>只要：欣赏、享受、漫步</p><br></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/">情绪</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      <category domain="https://www.ninojay.top/tags/%E8%AF%97/">诗</category>
      
      
      <comments>https://www.ninojay.top/2024/recently-written-poems-4/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>2024年6月至7月初写过的无聊的诗</title>
      <link>https://www.ninojay.top/2024/recently-written-poems-3/</link>
      <guid>https://www.ninojay.top/2024/recently-written-poems-3/</guid>
      <pubDate>Tue, 02 Jul 2024 15:31:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h5 id="初谈命运"><a href="#初谈命运" class="headerlink" title="初谈命运"></a>初谈命运</h5><p>闯入我心灵的人儿<br>能拿什么献礼<br>拿什么我都惭愧</p><p>夸奖我爱我舍不得我<br>沉迷享受，难过恐惧<br>怕，下一秒就被你们识破<br>我只是植物吐出的废气<br>虚弱病态肮脏才是我本体</p><p>无法回馈爱语<br>时间教会逃避<br>记忆洒向银河<br>咖啡迈入酒精<br>明知故犯的罪<br>静地无处可逃<br>口中的命运<br>也称作：被丢弃</p><p>最让大地惊讶的是<br>神明对这一切<br>毫不在意</p><br><h5 id="风的自由"><a href="#风的自由" class="headerlink" title="风的自由"></a>风的自由</h5><p>海边的风、河边的风、山谷的风<br>将会如何评价<br>电扇里的风、空调里的风、机翼里的风<br>前者们是否会评价后者们，不自由</p><p>后者们是否会去主动学习空对空<br>将机器看作西西弗的石头<br>风里也会有加缪？</p><p>不要想太多，高位者叮嘱<br>对于正常的人类来说<br>风的自由不重要<br>重要的是，他们<br>能否被掌控</p><br><h5 id="向上"><a href="#向上" class="headerlink" title="向上"></a>向上</h5><p>心脏，你还好吗<br>持久的拼搏，似乎<br>没能让精力越来越旺盛</p><p>你们呢，五官<br>丰富的信息，似乎<br>除了迎接美还得辨别<br>无穷无尽的灰色</p><p>还有我的兄弟，你<br>支撑这幅皮囊的骨骼<br>仍在撑着，直到最后一刻<br>也不愿承认，你其实已经<br>越来越，脆弱</p><p>流水爱对山峰说<br>我的生命将是覆盖，会是遍布<br>山峰理解不了，山峰<br>只能拥有，向上生长——<br>的资格</p><br><h5 id="宇航服"><a href="#宇航服" class="headerlink" title="宇航服"></a>宇航服</h5><p>一开始我什么也没有<br>不在乎你们的感受<br>自制宇航服遨游</p><p>你们发现了，就诱导我投入<br>赏赐我一点关注，让我上了头<br>也怪我，酒量实在太弱<br>总之，得意起来了，我<br>登陆在有阳光的地球</p><p>今天你们突然开始行动<br>玩起一种叫抽离的把戏</p><p>那一点点关心的消失<br>带来了宇宙的失重<br>更为讽刺的是<br>我其实一开始就做好了<br>所有所有，最坏的准备<br>仍然在和你们相处的过程中<br>扔掉了那件自制的宇航服</p><br><h5 id="重复的人"><a href="#重复的人" class="headerlink" title="重复的人"></a>重复的人</h5><p>从相信到不相信<br>这个习惯不好<br>你得反过来练习<br>从不相信到相信<br>你得学会从一开始<br>就保持警惕</p><p>一位和我一样<br>曾经是个孩童的人<br>这样总结和陌生人的相遇</p><p>我觉得<br>他的话语听起来是为我好<br>实际上是在宣泄自己的过去</p><p>我听不进去<br>仍需要重复的遭遇<br>才能理解重复的话语<br>说给下一个重复的孩子听</p><br><h5 id="写诗"><a href="#写诗" class="headerlink" title="写诗"></a>写诗</h5><p>你知道吗<br>最近我在互联网上写诗<br>我终于开始了</p><p>在我再也读不下去任何文字的时候<br>我终于开始写点什么了<br>开始写的是诗</p><p>写了七八首之后<br>奇怪的是<br>我又能又想阅读了<br>一边写点诗一边继续阅读</p><p>我想告诉你，母亲<br>我知道自己，终于<br>在做正确的事</p><br><h5 id="互联网分析家"><a href="#互联网分析家" class="headerlink" title="互联网分析家"></a>互联网分析家</h5><p>互联网平台<br>随便点击<br>都能看到这么一群人<br>他们始终在分析<br>事情好坏就爱一通分析</p><p>道理层出不穷喋喋不休<br>越看越生气<br>怎么从来看不到提前表达<br>全都是事后分析<br>教你为什么，教你之所以<br>记住专业术语：拆解、步骤、因果逻辑</p><p>教过来教过去<br>怒点这些人的首页，x的<br>果然全是分析<br>的视频<br>精致背景<br>笑的既职业<br>又洋洋得意</p><br><h5 id="咖啡店老板娘"><a href="#咖啡店老板娘" class="headerlink" title="咖啡店老板娘"></a>咖啡店老板娘</h5><p>楼下的咖啡店<br>每天我都想办法从公司逃往<br>我喜欢那个成熟知性的店长<br>想像她的猫听她的话待在她身旁</p><p>清洁房屋养花除草除猫毛<br>在我安静看书喝咖啡的一旁<br>端来一杯冰水送我一点小吃<br>听她偶尔说说自己过去的光辉来往<br>更多时候趴在桌子上网聊</p><p>我想尽办法夸奖逗她笑<br>我从心里觉得她似乎就需要<br>一个像我这样还不赖的傻孩子的欣赏</p><p>我对她讲<br>在这座城市你像母亲般对我好<br>她说因为我是个招人喜欢的小孩<br>接着她又笑在我心上<br>于是我想对她更好<br>让她更经常笑</p><br><h5 id="治心者"><a href="#治心者" class="headerlink" title="治心者"></a>治心者</h5><p>最称职的治心者<br>只是一张白纸<br>他的执照只有倾听</p><p>任何情绪放到他身上<br>看不出负面、糟糕</p><p>你的一切<br>都是美的具象</p><p>诊断结束后<br>白纸化为药方<br>这般回应</p><br><h5 id="破晓"><a href="#破晓" class="headerlink" title="破晓"></a>破晓</h5><p>天还未亮<br>四肢被风吹得<br>大幅度摆动</p><p>他看见<br>微光正领着草木整齐起舞<br>描绘云端的过往</p><p>他听见<br>鸟兽虫们用鼾声唱赞歌<br>庆祝即将破晓</p><br><h5 id="楼道里的猫"><a href="#楼道里的猫" class="headerlink" title="楼道里的猫"></a>楼道里的猫</h5><p>楼道里有一只猫<br>像惊弓之鸟<br>弹射，蹦跳</p><p>它肯定没有烦恼<br>甚至相当骄傲<br>才敢放肆喧嚣<br>怒视打扰</p><p>为什么它住楼道？<br>为什么我必须住楼房。</p><br></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/">情绪</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      <category domain="https://www.ninojay.top/tags/%E8%AF%97/">诗</category>
      
      
      <comments>https://www.ninojay.top/2024/recently-written-poems-3/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>2024年5月至6月写过的无聊的诗</title>
      <link>https://www.ninojay.top/2024/recently-written-poems-2/</link>
      <guid>https://www.ninojay.top/2024/recently-written-poems-2/</guid>
      <pubDate>Sat, 22 Jun 2024 13:02:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h5 id="有时候"><a href="#有时候" class="headerlink" title="有时候"></a>有时候</h5><p>有时候<br>我只想要一身的缺点<br>肆无忌惮地活<br>多么痛快</p><p>有时候<br>我想毫不在意别人的情感<br>随心所欲地伤害<br>让他们也尝尝处处提心吊胆</p><p>有时候<br>我只想做自己<br>就成为他们口中彻底的坏</p><p>自私、无赖、忘恩负义</p><p>自由自在</p><br><h5 id="小路"><a href="#小路" class="headerlink" title="小路"></a>小路</h5><p>我没有故乡<br>每天重复在自己选择的路</p><p>我在思想，次数<br>达到多少可以宣布新的归宿</p><p>静悄悄的小路<br>早晨和傍晚，就这样被我<br>踏出了易碎的幸福</p><br><h5 id="雨"><a href="#雨" class="headerlink" title="雨"></a>雨</h5><p>不必担心<br>城市始终陌生<br>身边总是人来人往</p><p>相识已久的<br>只有这场雨<br>持续整整<br>一星期</p><br><h5 id="忘了"><a href="#忘了" class="headerlink" title="忘了"></a>忘了</h5><p>因为过的太快乐<br>所以不喝酒吗</p><p>不是的，我只是忘了<br>该怎么悲伤</p><p>忘了酒精可以做到的<br>悉心照料</p><br><h5 id="节日"><a href="#节日" class="headerlink" title="节日"></a>节日</h5><p>节日里，飞船启程，朝向星空</p><p>乱码般的信号起伏，亟需最高智能掌控</p><p>错位的祝福，难辨进一步炽热——</p><p>煽动！煽动！煽动！</p><p>改变不了现状的话语，请少些说</p><p>我正驾驶宇宙，随波逐流</p><p>悄悄地</p><br><h5 id="公子"><a href="#公子" class="headerlink" title="公子"></a>公子</h5><p>想当一个公子<br>种些花草</p><p>再收养两只猫<br>小橘和小姜</p><p>小橘不能化成人<br>小姜却能变成猫</p><br><h5 id="纯友谊"><a href="#纯友谊" class="headerlink" title="纯友谊"></a>纯友谊</h5><p>什么叫做爱做的事<br>从来不懂<br>我只交配交的朋友</p><p>最冷阴天莫过于<br>纯友谊被你说出口<br>这一刻我懵懂</p><p>好，预祝你我<br>友谊比伊利还蒙牛</p><br><h5 id="生活"><a href="#生活" class="headerlink" title="生活"></a>生活</h5><p>你叫我说，我才说的<br>打一开始，等等，请你仔细听着</p><p>我是说，从一开始<br>生活里的我，就只想要生活<br>从未想向任何人去证明，任何</p><p>看着冷漠的自然里浮现规则<br>看着理由源源不断闪烁在夜空<br>看着月亮也化为流星不再被捕捉</p><p>这时候，听你们这样说<br>只需要看着，就会有糖果</p><p>可为何，为何</p><p>沉默找上我，不让我沉默<br>愤怒背弃我，说我不成熟</p><p>我对自己说，或许呀，或许<br>没法选择生活，是生活，选择我</p><br><h5 id="分辨"><a href="#分辨" class="headerlink" title="分辨"></a>分辨</h5><p>微风吹动肌肤<br>小车躺在青草</p><p>思绪像云朵<br>团团塞满心脏</p><p>借着山河分辨<br>那束光</p><br><h5 id="戒酒"><a href="#戒酒" class="headerlink" title="戒酒"></a>戒酒</h5><p>不用再叫我喝酒<br>快乐终于闯进我的星球</p><p>从未相信真能消愁<br>只怪她和皱眉浑然天成</p><p>我明白<br>即便不想再碰酒<br>也不能就此开始责备酒</p><p>留一线给酒<br>下次见她更温柔</p><br></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/">情绪</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      <category domain="https://www.ninojay.top/tags/%E8%AF%97/">诗</category>
      
      
      <comments>https://www.ninojay.top/2024/recently-written-poems-2/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>我在雨中散步</title>
      <link>https://www.ninojay.top/2024/walk-in-the-rain/</link>
      <guid>https://www.ninojay.top/2024/walk-in-the-rain/</guid>
      <pubDate>Wed, 19 Jun 2024 06:34:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width="330" height="86" src="//music.163.com/outchain/player?type=2&amp;id=34341358&amp;auto=1&amp;height=66"></iframe><p>听闻接下来的一周是连绵不绝的雨，我如释重负。清爽的凉意自不必提，沉静的心灵配合恰当的失落，借由雨季，铺洒在整个世界，我的心情将被大家一同感受。欣喜。</p><p>我想好了，要摸黑去淋雨，用身体感受雨，体会雨的拍打，一滴一滴，亲密。雨滴，终日萦绕于我心的情绪，没有丝毫停止的迹象，具象化淋在身体表面，肆无忌惮地发泄着。</p><p>是的，将会有人不时期待天空能突然抽出一张太阳，擦去这所有的液体，恨不得马上显现晴空万里。可据天气预报讲，只能是想象。总是这样，现实摆在眼前，还是带着不切实际地幻想，幻想一切都会，立刻，立刻变好。</p><p>否认说，不是幻想，是怀着希望。那么，为什么总是离不开希望，无法彻彻底底地失望。下雨啦，只能想到包里必须有一把伞。从容地迈入雨中吧，丢下挤在屋檐下的互相推搡，丢下望眼欲穿等待一把伞的人群。不必担心被雨淋，城市始终陌生，身边总是人来人往。</p><p>相识已久的，只有这场雨。</p><p>持续整整一星期。</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/">情绪</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      <category domain="https://www.ninojay.top/tags/%E6%AD%8C%E6%9B%B2/">歌曲</category>
      
      
      <comments>https://www.ninojay.top/2024/walk-in-the-rain/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>摘抄《面纱》-（英）毛姆</title>
      <link>https://www.ninojay.top/2024/The-Painted-Veil/</link>
      <guid>https://www.ninojay.top/2024/The-Painted-Veil/</guid>
      <pubDate>Mon, 01 Apr 2024 11:54:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><blockquote><p>我近距离看过听过许多不同年龄层的人婚姻日常心底秘密，但现在依然没资格评论婚姻。当然，对爱情的看法和期盼引导着我现在过着怎样的生活。但我也不能在这里真实地写明这些，总会引来误解。只能分享的是，我现在一个人的生活，很自洽，很舒服。朋友圈朋友们的秀恩爱秀新婚，我衷心也感到快乐和祝福，但确实并不羡慕，我知道自己想要怎样的生活。</p></blockquote><p>《月亮与六便士》、《刀锋》、《阅读是一座随身携带的避难所》、《面纱》，这是我阅读完的毛姆书籍顺序。</p><p>床边还剩最后一本感兴趣的毛姆作品《人性的枷锁》。</p><p>很喜欢毛姆，算是我的文学爱好启蒙老师之一，毛姆说他是二流作家里的一流，那我也只能算是二流文学爱好者（甚至连二流里的一流都还算不上）。</p><h2 id="摘抄"><a href="#摘抄" class="headerlink" title="摘抄"></a>摘抄</h2><ul><li><p>你会觉得她的眼睛在给你挑毛病，在给你这个人下定论，与此同时她又不放过各个角落里发生的事情，而从她嘴里说出来的话怕是跟她心里想的一点联系也没有</p></li><li><p>她们从未想过这位顺从的矮小男人心里想的是什么。他起早出门，夜晚准时回家换衣就餐。他对她们来说是个陌生人，但他是她们的父亲，自然应当爱她们，疼着她们。 </p></li><li><p>不过她乐意取悦于人</p></li><li><p>“我嘴太笨了。说对于我比做难得多。”</p></li><li><p>她一点也不爱他。她不明白为什么还没有出口拒绝他。</p></li><li><p>他当然不是那么冷漠，只不过是他不会交际罢了。现在她比以前任何时候都更喜欢他。多丽丝十一月就要结婚了。那时他也会去中国。要是她嫁给他，那么她就会和他一起去。给多丽丝当伴娘可不太妙，能躲开是最好不过了</p><blockquote><p>感动自己，结合当下实际，说服自己，遗忘不满，憧憬幻想，尝试给自己洗脑</p></blockquote></li><li><p>那时她对他的了解仅有一星半点，而现在，结婚已经将近两年了，这种了解却没能增进多少</p></li><li><p>他只是羞涩地笑了笑。不久以后，她发现他很难融入别人的圈子里。他太过难为情了。要是在晚会上，大家都开始唱歌，里面保准没有瓦尔特。他面带微笑坐在一旁，似乎也从中得到了快乐，但实际上他的笑是装出来的。他的笑更像是在嘲讽，让人觉得在他心里这些自娱自乐的人根本是一群傻瓜</p></li><li><p>她怀疑他一贯的嘲讽态度和对她的聊友和热衷的玩乐所抱有的轻蔑，其实都是在遮掩他内心的虚弱</p></li><li><p>他的眼神似在微笑着，她发现他的眼里曾闪过片刻的惊奇。她不会看错，这让她禁不住笑了起来。</p></li><li><p>就算他不告诉她，她对他爱上自己也早就心知肚明</p><blockquote><p>被爱的人心知肚明</p></blockquote></li><li><p>要是一个人只对自己感兴趣，那自制就太易如反掌了</p></li><li><p>他令她感到恶心。他的吻让她无比厌恶。他凭什么那么自以为是？他跳舞跳得糟糕透顶，到了晚会上他尽会泼冷水，他既不会弹奏乐器也不会唱歌，他不会打马球，他的网球打得比谁都差。他会玩桥牌？谁稀罕桥牌</p><blockquote><p>对女人来说，不爱，再好又能怎样呢？</p></blockquote></li><li><p>他令她感到恶心。他的吻让她无比厌恶。他凭什么那么自以为是？他跳舞跳得糟糕透顶，到了晚会上他尽会泼冷水，他既不会弹奏乐器也不会唱歌，他不会打马球，他的网球打得比谁都差。他会玩桥牌？谁稀罕桥牌</p></li><li><p>或许她不是十分了解瓦尔特，但查尔斯对他的了解什么也谈不上</p></li><li><p>哈，听到这句话简直叫她心花怒放。她知道他会这么说，她相信他说的是真话，这叫她心里暖融融的</p><blockquote><p>唉</p></blockquote></li><li><p>这时她朝她的丈夫瞧了一眼，目光里没有一丝包容。</p></li><li><p>眼神看上去悲痛欲绝。这让凯蒂浑身一震。</p><blockquote><p>瓦尔特痛苦地琢磨：到底错在哪里呢，到底在哪里出了问题呢，我做错了什么呢，应该是我还不够好吧，是吗，为什么呢。</p></blockquote></li><li><p>大概是听惯了他平日的甜言蜜语、殷勤奉承，这就更叫她恼火</p></li><li><p>对我来说，能被赐予机会爱你就应心怀感激了</p></li><li><p>如果一个男人无力博得一个女人的爱，那将是他的错，而不是她的。</p><blockquote><p>好呀，瓦尔特</p></blockquote></li><li><p>还是凯蒂第一次见到他戴眼镜，以前她不知道他还用这东西</p><blockquote><p>细节呀，开始了，注意到还有很多未曾注意的</p></blockquote></li><li><p>还是凯蒂第一次见到他戴眼镜，以前她不知道他还用这东西</p></li><li><p>因为这似乎不是一个聪明男人应该讲出来的话</p><blockquote><p>哈哈哈哈哈，运动男，头脑简单</p></blockquote></li><li><p>“他知道你会弃我不顾。”</p><blockquote><p>毛姆，可以的，这样直白地写出来</p></blockquote></li><li><p>现在他知道的我也全知道了。我知道你冷漠无情，没心没肝。你自私自利到了言语无法描述的地步。你胆小如鼠，谎话连篇，卑劣可鄙。而可悲的是……</p><blockquote><p>而这样的人，平日还被大家吹捧呢，life</p></blockquote></li><li><p>你会因为受到无情的伤害就停止爱一个人吗？</p></li><li><p>要是查尔斯重新向她发出召唤，她会无所顾忌地回到他的怀抱，虽然现在她知道他是什么样的人。她爱他，哪怕他曾经出卖了她，抛弃了她，哪怕他再对她冷漠无情。</p><blockquote><p>瓦尔特，为什么要成为这样的角色呢，孤身一身骄傲不好吗，你的行为又真的叫爱吗</p></blockquote></li><li><p>要是查尔斯重新向她发出召唤，她会无所顾忌地回到他的怀抱，虽然现在她知道他是什么样的人。她爱他，哪怕他曾经出卖了她，抛弃了她，哪怕他再对她冷漠无情。</p></li><li><p>那是嫌恶的一瞥，把她吓得魂飞魄散。</p></li><li><p>魅力，自始至终一成不变的魅力会使人厌烦，我个人认为</p></li><li><p>政府不需要聪明的人，聪明的人有主见，而主见就是麻烦。他们要的是亲和、圆滑、永不犯愚蠢错误的人。嗯，不错，查尔斯终将爬到这个金字塔的塔顶。</p></li><li><p>她应该鄙视他，因为恨他只能说明她还爱他</p></li><li><p>从这些人生见闻你可以断言，这个世界纯粹是一个充满了诡异、怪诞、荒唐的地方。</p></li><li><p>凯蒂的用心是复杂的，一方面她要借此向瓦尔特报复，另一方面她也是在嘲笑自己心中的恐惧。</p></li><li><p>“是啊，我从来也不喝酒，我只喝醉。”</p></li><li><p>“没什么。”她试图微笑，“只是我愚蠢而已。”</p></li><li><p>因为他爱她，而她却不爱他。一个男人由于爱你而遭到你的鄙视，这人心是怎么长的啊</p><blockquote><p>毛姆，太直白了吧</p></blockquote></li><li><p>她是个从不矫揉造作的朴素女人，骨子里有一种威严，让人对其心生敬畏</p></li><li><p>银色的云彩边缘镶了一圈儿黑色的乌云</p></li><li><p>她忽然感到前所未有的孤独。那就是她哭泣的原因。</p></li><li><p>我是多么无足轻重的人啊</p><blockquote><p>廉价的真诚</p></blockquote></li><li><p>“不是我想做什么，是你。我只是希望你不要再那么不快乐。” </p></li><li><p>“不。”他犹豫了一下，声调忽然变得非常奇怪，“我看不起我自己。</p></li><li><p>“不。”他犹豫了一下，声调忽然变得非常奇怪，“我看不起我自己。</p><blockquote><p>很好，毛姆</p></blockquote></li><li><p>“因为我爱你。”</p></li><li><p>他当初是情人眼里出西施，把她当成无价之宝供奉起来，后来发现她其实是金玉其外，就再也不肯原谅自己，也不原谅她。他的灵魂已经裂成两半儿了，他苟活到现在纯粹是一派假象。当真相豁然摆在眼前的时候，他的生活其实就已经完了。明摆着的事，他不会原谅她，因为他根本不能原谅他自己。</p></li><li><p>源于人之本性的悲痛，与理智和信念激烈地交锋着，使她肃穆而美丽的面孔扭曲了</p></li><li><p>“你知道，我亲爱的孩子，安宁，在工作中是找不到的，它也不在欢乐中，也不在这个世界上或者这所修道院中，它仅仅存在于人的灵魂里。” </p></li><li><p>凯蒂鼓足勇气把手放到孩子那大大的光光的头上抚摸，并强迫自己挤出一个微笑。然而那个孩子突然一反常态走开了，似乎对凯蒂失去了兴趣，而从此以后，她再也没有搭理过凯蒂</p></li><li><p>凯蒂鼓足勇气把手放到孩子那大大的光光的头上抚摸，并强迫自己挤出一个微笑。然而那个孩子突然一反常态走开了，似乎对凯蒂失去了兴趣，而从此以后，她再也没有搭理过凯蒂</p><blockquote><p>真与假的感知力</p></blockquote></li><li><p>没完没了的工作占据了她的心思，在和别人的交往中，她接触到了新的生活，新的观念，这启发了她的思维。她的活力又回来了，她感觉比以前更健康，身体更结实</p></li><li><p>“唉，别傻了。美丽是上帝赐予的礼物，最罕有、最珍贵的礼物。如果我们幸运地拥有美丽，就应该心怀感激。如果我们没有，那么就应该感谢别人的美给我们带来了愉悦。”</p></li><li><p>凯蒂觉得人类也和这河中的水滴一样，永不停歇地流走，彼此摩肩接踵却又相隔万里，大家融成一股无名的潮流，直至汇入大海</p></li><li><p>他们这两珠水滴无声无息地流向未知的将来，他们彼此熟知，在对方眼里是独特的个体，而在别人看来，仅仅是亿万颗相似水滴中的两滴而已。</p></li><li><p>我能理解，那对你的虚荣心来说是个打击。”他嘲弄地回应道。 </p></li><li><p>“但是，重要的是爱一个人，而不是被人爱。一个人对爱他的人可以丝毫没有怜悯之心；如果他不爱她们，就只会觉得她们厌烦。”</p></li><li><p>“我没有经历过复数的她们，”他说道，“我只经历过单数的她。” </p></li><li><p>她不动声色，静待着他下定决心</p></li><li><p>她怎样才能使他相信，查尔斯在她心目中其实早已经一文不值</p></li><li><p>如今她知道他的心敏感至极，尖酸刻薄只是他保护自己的盾牌，一旦事不利己，他的心就会迅速地收回去，继而给自己戴上一副面具</p></li><li><p>孩子亲生与否，对他们来说真的那么重要吗？</p><blockquote><p>不重要，当下最重要。可是，谁能保证当下的想法不会变更呢。血缘可是实打实的，可人会变呀。</p></blockquote></li><li><p>孩子亲生与否，对他们来说真的那么重要吗？</p></li><li><p>她希望他能原谅她，不是为了她，而是为了他自己，因为只有这样他才能得到心灵上的宁静</p></li><li><p>想让他回心转意，只能等什么意料不到的事从天而降，从此打消他的芥蒂。她想他或许也希望有什么事让他心潮汹涌，一举把他从怨恨的梦魇里解救出来。但话说回来，以他可怜的荒唐脑筋，若真是事到临头，怕又会执拗到底，九头牛也拉不回来</p></li><li><p>唉，人生苦短，却还要自寻烦恼，这不是太可悲了吗？</p></li><li><p>你终将享有宁静，当你忘记了对宁静的渴求时，宁静就会降临了。” </p></li><li><p>只有一种办法能赢得众人的心，那就是让人们认为你是应该被爱的</p></li><li><p>受伤的自尊在凯蒂心里激起了一个狡猾的企图，她觉得信仰的外衣虽然使这群嬷嬷远离了凡尘的七情六欲，但此刻或许可以在这套外衣上发现一些破口。她要看看修道院院长的身上是否真的不留一点俗世的残余</p></li><li><p>礼貌而淡漠</p></li><li><p>记住，分内之事、举手之劳并不值得夸耀，那是赋予你的责任，就像手脏时要洗一样理所当然。唯一弥足珍贵的是对责任的爱，当爱与责任合而为一，你就将是崇高的。你将享受一种无法言表的幸福</p></li><li><p>有时对人撒谎是不得不为之，但是自欺就不可饶恕了</p></li><li><p>她怀疑这世界上人人心里都藏着见不得人的秘密，唯恐被别人瞧上一眼。</p></li><li><p>有了自由，她也就有了无畏地面对未来的勇气。</p></li><li><p>他从来都是依顺人们对他的期望行事，而今他自己身上的细小举动表明，他此时的心境并非一个刚受丧妻之痛的鳏夫所应有的，他因而感到异常震惊</p><blockquote><p>你们结婚到底为了什么</p></blockquote></li><li><p>他从来都是依顺人们对他的期望行事，而今他自己身上的细小举动表明，他此时的心境并非一个刚受丧妻之痛的鳏夫所应有的，他因而感到异常震惊</p></li><li><p>回忆自己的成长经历，她明白自己的一切都是母亲一手造成的</p></li><li><p>话语之间，凯蒂觉得他们父女俩的心里隔着很长的一段距离，这段距离甚至比两个初遇的陌生人还要远。因为但凡是陌生人，总还会对对方有种好奇心，父女过去的共同生活现在反而成了横亘在两人之间的一道冷漠的墙</p></li><li><p>她只知道她们全家人都对他烦透了，没想到反过来他对她们的感觉也是一样</p></li><li><p>可怜的人。他只稍作挣扎便向他应尽的责任屈服了。短短的只言片语，就让所有的希望付之东流</p></li><li><p>我当然需要你，我心爱的。我毕竟是你的父亲，而你又是个寡妇，无依无靠。如果你需要和我在一起，而我不需要你就是不仁慈的</p><blockquote><p>大家都会称赞的自我驯化，恶心至极</p></blockquote></li></ul><p> </p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E5%A3%B0%E5%85%89/">声光</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E9%98%85%E8%AF%BB/">阅读</category>
      
      <category domain="https://www.ninojay.top/tags/%E5%B0%8F%E8%AF%B4/">小说</category>
      
      <category domain="https://www.ninojay.top/tags/%E6%91%98%E6%8A%84/">摘抄</category>
      
      
      <comments>https://www.ninojay.top/2024/The-Painted-Veil/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>Space Oddity</title>
      <link>https://www.ninojay.top/2024/space-oddity/</link>
      <guid>https://www.ninojay.top/2024/space-oddity/</guid>
      <pubDate>Sat, 23 Mar 2024 14:08:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width="330" height="86" src="//music.163.com/outchain/player?type=2&amp;id=486310963&amp;auto=1&amp;height=66"></iframe><h2 id="背景"><a href="#背景" class="headerlink" title="背景"></a>背景</h2><p>刚刚看完了电影《白日梦想家》，插曲里有这首歌，这首歌也串联了这几年我的小时刻。</p><p>在2022年以前，我对David Bowie（大卫·鲍伊）一无所知，他的歌曲也没有怎么主动听过。</p><p>而就是2022年，我在系统性地看《Economist》（经济学人）杂志，周一到周五从普通模块（诸如政治、经济、科学领域）选择看一篇文章，周末则会选择看一篇往期的讣（fù）告。</p><blockquote><p>讣告是逝世者家属用来向亲族、亲戚、亲友及公众人士报丧的实用文书，以报刊、电视台、电台广播、电话、电报、传真、柬帖或电邮等媒介发布关于某人逝世的消息。</p><p>讣告通常附有逝者的传记，内容包括逝者的姓名、年龄、生卒日期、治丧事宜、举殡时间和地点、丧葬方式、家属或治丧委员会名单、联络方式等，根据不同的方式也称为“讣文”、“讣闻”、“讣报”、“讣电”、“讣帖”或“讣音”。</p></blockquote><p>或许会知道诸如迈克尔杰克逊、玛丽莲梦露、肯尼迪、香奈儿…但是他们的一生，尤其被西方人自己用一篇文章描述出来，对于我实在是猎奇。</p><p>所以，就算一篇纯英文讣告单词量很大，文章很长，因为其人物世界闻名、特立独行、放浪形骸的一生，直白的西方单词，也让我感受到情感充沛，感受到这些人有血有肉，莫名的人生命运轨迹居然就这样影响了这个世界一点点。可能有点不礼貌，讣告我看的“超级爽”。</p><p>每一篇讣告看完，都让我喜欢上这些存在过的牛逼的人。</p><blockquote><p>ps：突然想起来，我这个中国人，通过讣告栏目，甚至知道美国存在过一个很厉害的法官，名字记不住，但是记住了这个法官因为做事严谨，行为严厉，从而受人尊敬。</p></blockquote><p>关于（1947-2016）大卫·鲍伊的一切，也就是通过一篇讣告了解到。“中性化、夸张化的妆容、有个性、引领时尚潮流、宗教、追寻自我”，这些关键词在我脑子里和大卫·鲍伊相关联。看完这篇讣告，去Spotify听他的歌，Space Oddity收藏进歌单。</p><blockquote><p>隐约还记得讣告里说Space Oddity就是在人类开始对太空探索的时间段创作出来的。</p></blockquote><p>朋友圈有个大几岁的朋友刚好晒他的网易云歌单，里面就有Space Oddity。当时心里面想：咱俩不愧是朋友，喜欢一样的歌。有一个凌晨，我和他在上海街头骑共享单车去第二个酒吧，他提起说，这首歌是被另一个我也认识的女生推荐给他的。</p><p>David Bowie的一首经典歌串联了三个人。有一天，三个人见面，聊David Bowie的话题也就理所应当。</p><p>去年网上冲浪，又刷到老友记视频片段：乔伊和菲比开车去外地，乔伊为了让菲比跟他搭话，就开始耍贱唱歌，他就唱到“Ground Control to Major Tom ”。终于被我get到了，原来乔伊模仿的是大卫·鲍伊的Space Oddity！（这一集在我小学就看过，这次才看懂笑点。）</p><p>包括刚才看完的电影《白日梦想家》。插曲声一出来，啊，大卫·鲍伊的Space Oddity。</p><p>包括刚才去网易云这首歌的评论区，大家也在恭喜马斯克星舰的发射试验，不管发射结果好坏，大家都在祝福他，敬佩他。</p><p>似乎华晨宇有一段时间的风格也在向大卫·鲍伊取经。</p><p>总而言之，此刻能聊的所有的这一切，都是因为我在一个下午，耐心地好奇地激动地，看了这一篇关于David Bowie的讣告。</p><h2 id="歌词"><a href="#歌词" class="headerlink" title="歌词"></a>歌词</h2><center><p>Ground Control to Major Tom<br>地面控制中心呼叫湯姆少校<br>Ground Control to Major Tom<br>地面控制中心呼叫湯姆少校<br>Take your protein pills<br>吃下你的能量補充錠<br>and put your helmet on<br>戴上你的頭盔吧<br>Ground Control to Major Tom<br>地面控制中心呼叫湯姆少校<br>Commencing countdown,<br>準備開始倒數了<br>engines on<br>引擎全開<br>Check ignition<br>確認點火裝置<br>and may God’s love be with you<br>願上帝與你同在</p><p>Ten, Nine, Eight, Seven, Six, Five, Four, Three, Two, One, Liftoff<br>十九八七六五四三二一發射</p><p>This is Ground Control<br>地面控制中心呼叫<br>to Major Tom<br>湯姆少校<br>You’ve really made the grade<br>你創造歷史的新一頁了<br>And the papers want to know whose shirts you wear<br>報紙們都想要報導關於你的大小事<br>Now it’s time to leave the capsule<br>現在是時候離開太空艙了<br>if you dare<br>如果你有信心的話</p><p>This is Major Tom to Ground Control<br>湯姆少校呼叫地面控制中心<br>I’m stepping through the door<br>我走出艙門了<br>And I’m floating<br>我感覺自己正漂浮著<br>in a most peculiar way<br>用一種奇怪的方式漂浮著<br>And the stars look very different today<br>而且天上的星星看起來非常的不一樣</p><p>For here<br>在這裡<br>Am I sitting in a tin can<br>我是坐在一個錫罐中嗎？<br>Far above the world<br>遠離這個世界<br>Planet Earth is blue<br>地球如此的湛藍<br>And there’s nothing I can do<br>我卻什麼都沒辦法做</p><p>Though I’m past<br>one hundred thousand miles<br>縱使我飛行了數千公里遠<br>I’m feeling very still<br>我仍感到非常平靜<br>And I think my spaceship knows which way to go<br>而且我相信我的飛船知道要帶我去哪裡<br>Tell my wife I love her very much<br>告訴我妻子我愛她<br>she knows<br>她會懂得</p><p>Ground Control to Major Tom<br>地面控制中心呼叫湯姆少校<br>Your circuit’s dead,<br>你的迴路壞掉了<br>there’s something wrong<br>有地方出問題了<br>Can you hear me, Major Tom?<br>你能聽見我嗎，湯姆少校？<br>Can you hear me, Major Tom?<br>你能聽見我嗎，湯姆少校？<br>Can you hear me, Major Tom?<br>你能聽見我嗎，湯姆少校？<br>Can you…<br>你能…</p><p>Here am I floating<br>我正漂浮著<br>round my tin can<br>繞著我的太空船<br>Far above the Moon<br>飄在月球上空<br>Planet Earth is blue<br>地球如此的湛藍<br>And there’s nothing I can do.<br>但我什麼都不能做了</p></center></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E5%A3%B0%E5%85%89/">声光</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      <category domain="https://www.ninojay.top/tags/%E6%AD%8C%E6%9B%B2/">歌曲</category>
      
      
      <comments>https://www.ninojay.top/2024/space-oddity/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>写过的一些无聊的诗</title>
      <link>https://www.ninojay.top/2024/recently-written-poems-1/</link>
      <guid>https://www.ninojay.top/2024/recently-written-poems-1/</guid>
      <pubDate>Sun, 17 Mar 2024 14:10:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h4 id="2024年1月至3月写过的无聊的诗"><a href="#2024年1月至3月写过的无聊的诗" class="headerlink" title="2024年1月至3月写过的无聊的诗"></a>2024年1月至3月写过的无聊的诗</h4><h5 id="下一个月亮"><a href="#下一个月亮" class="headerlink" title="下一个月亮"></a>下一个月亮</h5><p>老人对我形象的描述&nbsp;<br>总受时光影响&nbsp;</p><p>新人看到那形象<br>体会不到一丝相像&nbsp;</p><p>也许&nbsp;<br>随季节更迭着&nbsp;<br>不再有资格提起过往&nbsp;</p><p>往后退的景象&nbsp;<br>就该被遗忘&nbsp;  </p><p>能不能<br>陪陪现在的我</p><p>看看下一个月亮</p><br><br><h5 id="我玩开源，他们结婚"><a href="#我玩开源，他们结婚" class="headerlink" title="我玩开源，他们结婚"></a>我玩开源，他们结婚</h5><p>深夜发觉朋友圈旧友<br>纷纷分享新娘新郎妆</p><p>顿悟互联网用爱发电<br>只不过孤独患者皮囊</p><p>被问怎么突发奇想创造<br>谁曾想，当时无聊罢了</p><p>家人们记住，网络上总被称赞的大佬<br>现实里啥也不是，就爱说俩字：卧槽</p><hr><h4 id="2023年写过的无聊的诗"><a href="#2023年写过的无聊的诗" class="headerlink" title="2023年写过的无聊的诗"></a>2023年写过的无聊的诗</h4><h5 id="拦路虎"><a href="#拦路虎" class="headerlink" title="拦路虎"></a>拦路虎</h5><p>偶遇拦路虎 问我要孤独<br>我说我没有 它说喵喵喵</p><br><h5 id="像明月一样温柔"><a href="#像明月一样温柔" class="headerlink" title="像明月一样温柔"></a>像明月一样温柔</h5><p>我忘明月很久，明月始终望我</p><p>明月啊，为什么甘愿等着我<br>明月啊，我应不是特殊的那个</p><p>愿温柔化为衣裳，穿戴于你<br>此刻，我唯一的全部</p><br><h5 id="所谓新年"><a href="#所谓新年" class="headerlink" title="所谓新年"></a>所谓新年</h5><p>习惯 习惯的本身<br>等待 等待的到来</p><hr><h4 id="2022年写过的无聊的诗"><a href="#2022年写过的无聊的诗" class="headerlink" title="2022年写过的无聊的诗"></a>2022年写过的无聊的诗</h4><h5 id="剩下"><a href="#剩下" class="headerlink" title="剩下"></a>剩下</h5><p>日历翻到新的一页，<br>原来只是又过一年</p><p>时钟提醒拧巴别扭的时间。<br>还是被时间本身带走。<br>同时发问你剩下什么。  </p><p>我剩下了剩下本身。<br>剩下的空气，<br>剩下的阳光，<br>剩下的空间，<br>剩下的黎明， </p><p>剩下的剩下。<br>本身。</p><br><h5 id="回头"><a href="#回头" class="headerlink" title="回头"></a>回头</h5><p>那些一开始就爱我的人<br>依然爱我</p><p>那些要我去争取的人<br>依然需要争取</p><br><h5 id="走"><a href="#走" class="headerlink" title="走"></a>走</h5><p>动了念头，</p><p>就会渐渐走，</p><p>这是我还年轻，身为人的自由。</p><p>想走便走，想留便留。 </p><br><h5 id="原谅"><a href="#原谅" class="headerlink" title="原谅"></a>原谅</h5><p>那些骗我的人<br>不会跟我说对不起<br>我只好原谅过去的自己  </p><p>原谅，不反抗<br>原谅，服从性</p><p>我还想原谅，现在<br>胸腔中的满满恶意</p><br><h5 id="笑容"><a href="#笑容" class="headerlink" title="笑容"></a>笑容</h5><p>涓涓细流<br>时间被我拖着走</p><p>时间问我<br>朋友，为什么那么着急</p><p>我低头<br>担心你来不及，见我的笑容</p><hr></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/">情绪</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      <category domain="https://www.ninojay.top/tags/%E8%AF%97/">诗</category>
      
      
      <comments>https://www.ninojay.top/2024/recently-written-poems-1/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>《道德经》-（春秋）老子-度阴山（译）</title>
      <link>https://www.ninojay.top/2024/dao/</link>
      <guid>https://www.ninojay.top/2024/dao/</guid>
      <pubDate>Sun, 03 Mar 2024 05:56:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h2 id="第一章"><a href="#第一章" class="headerlink" title="第一章"></a>第一章</h2><p>道可道，非常道，名可名，非常名。无名，天地之始；有名，万物之母。故常无欲，以观其妙；常有欲，以观其徼（jiǎo）。此两者，同出而异名，同谓之玄。玄之又玄，众妙之门。</p><blockquote><p>能说得出的道，不是永恒的道；可以表述的名，不是永恒的名（这里主要指“道”的名）。天地开始时，不存在有名字的事务，我称它为“无”；之所以有了万物，是因为它们有了名称，于是我用“有”来称万物的母体。站在“无”的角度观察自然从无到有的奥秘，站在“有”的角度观察万物生成的端倪。无和有，本质相同，起源相同，但表现形式和名称不同，不过都可以称为“玄”。玄妙又玄妙的道，万物就从此出。</p></blockquote><h2 id="第二章"><a href="#第二章" class="headerlink" title="第二章"></a>第二章</h2><p>天下皆知美之为美，斯恶已；皆知善之为善，斯不善已。故有无相生，难易相成，长短相形，高下相倾，音声相和，前后相随。是以圣人处无为之事，行不言之教。万物作焉而不辞，生而不有，为而不恃，功成而弗居。夫唯弗居，是以不去。</p><blockquote><p>如果大家知道了什么是美好，那也就知道了什么是丑陋；知道了什么是善，也就知道了什么是不善。所以，有和无、难和易、长和短、高和下、音和声、前和后都与美和恶、善和不善一样，相反相成。因此，圣人才按照无为的原则办事，实施不言的教化，让万物自然发生，圣人从不认为自己是万物的创始人，也不将万物占为己有，更不希望万物对自己感恩戴德，大功告成，圣人不以有功自居。按照相反相成理论，正因为他不居功，也就没有功可失去。</p></blockquote><h2 id="第三章"><a href="#第三章" class="headerlink" title="第三章"></a>第三章</h2><p>不尚贤，使民不争；不贵难得之货，使民不为盗；不见可欲，使民心不乱。是以圣人之治，虚其心，实其腹，弱其志，强其骨。常使民无知无欲，使夫智者不敢为也，为无为，则无不治。</p><blockquote><p>不尊崇、奖励德才兼备的人，人民就不会互相竞争；不看重华贵之物，人民就不会为了得到贵重之物而去偷盗；不宣扬引起欲望的东西，民心就不会躁动惑乱。所以圣人如此治理民众：净化他们的心灵，填报他们的肚皮，使他们意志柔韧，强健他们的体魄。经常使他们没有意见和欲望，使一些有才智的人不敢生事妄为。努力无为，一定走向大治。</p></blockquote><h2 id="第四章"><a href="#第四章" class="headerlink" title="第四章"></a>第四章</h2><p>道冲，而用之或不盈。渊兮，似万物之宗。挫其锐，解其纷；和其光，同其尘。湛兮，似或存。吾不知谁之子，象帝之先也。</p><blockquote><p>常道虚无而不见（显）本体，但作用却无穷无尽。它深奥啊，好像是可以不断生成万物的祖宗。尽量不露锋芒，淡化竞争意识；混合各种光彩为一种光，与色彩单调的尘土相同。它不可见啊，似乎又真实存在。我不知道它是谁的后代，好像它出现在天地万物之前。</p></blockquote><h2 id="第五章"><a href="#第五章" class="headerlink" title="第五章"></a>第五章</h2><p>天地不仁，以万物为刍狗；圣人不仁，以百姓为刍狗。天地之间，其犹橐（tuó）龠（yuè)乎！虚而不屈；动而愈出。<strong>多言数穷，不如守中。</strong></p><blockquote><p>天地没有偏好，它把万物当成刍狗；圣人没有偏好，它把百姓当成刍狗。天地之间如同风箱，空虚而无穷尽，越是抽动风箱，空气越是不断涌出！话说太多就会碰壁，不如只在心里说话。</p></blockquote><h2 id="第六章"><a href="#第六章" class="headerlink" title="第六章"></a>第六章</h2><p>谷神不死，是为玄牝（pìn）。玄牝（pìn）之门，是谓天地根。绵绵若存，用之不勤。</p><blockquote><p>道是永恒存在的，因为它没有生，所以就没有死，它是微妙的母体。这个微妙的母体门户，正是天地根源。它渺渺茫茫，若隐若现，永远不死，作用也用不穷尽。</p></blockquote><h2 id="第七章"><a href="#第七章" class="headerlink" title="第七章"></a>第七章</h2><p>天长地久。天地所以能长且久者。以其不自生，故能长生。是以圣人后其身而身先，外其身而身存。非以其无私邪？故能成其私。</p><blockquote><p>天地永恒而在。它之所以永恒而在，是因为它的所有运作都不是为自己，所以能长久生存。因此，圣人始终在别人后面而不去争抢，结果却能占先；始终把身体置之度外，结果却能安然无恙。正因为他对自己没有私，所以才有很多私接踵而至。</p></blockquote><h2 id="第八章"><a href="#第八章" class="headerlink" title="第八章"></a>第八章</h2><p>上善若水。水善利万物而不争，处众人之所恶，故几于道。居善地，心善渊，与善仁，言善信，正善治，事善能，动善时。夫唯不争，故无尤。</p><blockquote><p>最高的德行如同水。水便利万物又不和它们争，处于众人所讨厌的卑洼之地，和道非常接近。具备水之美德的人如水一样安于卑下，心思如深渊般宁静，用仁爱与人交接不求回报，言出必行，和水一样平静无为，不拘一格、随遇而安，善于抓住时机。正因为和万物不争，所以不会出现过失。</p></blockquote><h2 id="第九章"><a href="#第九章" class="headerlink" title="第九章"></a>第九章</h2><p>持而盈之，不如其已。揣而锐之，不可长保。金玉满堂，莫之能守。富贵而骄，自遗其咎。功遂身退，天之道。</p><blockquote><p>积蓄满当当的财物，不如罢手为好；锤炼成的锋利金属，迟早折断。金玉堆满屋子，少有人能守住；富贵还骄傲，就是给自己招灾。功成身退，才符合天道（自然法则）。</p></blockquote><h2 id="第十章"><a href="#第十章" class="headerlink" title="第十章"></a>第十章</h2><p>载营魄抱一，能无离乎？专气致柔，能婴儿乎？涤除玄览，能无疵乎？爱民治国，能无为乎？天门开阖，能为雌乎？明白四达，能无知乎？生之，畜之，生而不有，为而不恃，长而不宰，是谓玄德。</p><blockquote><p>形体和精神（魂魄）合一，能不分离吗？气质专一，本性纯洁，能和婴儿不一样吗？洗刷心境，它能不沾染一点灰尘吗？爱民治国，能不能不用智？耳目口鼻争相和外界接触，能退让不争吗？心如明镜，能做到无为吗？具有以上品质的人，能够生万物，养万物，（虽然如此）却不将万物据为己有，兴作万物却不自恃己能，更不主宰万物的命运，这就是最高德行，是为上德。</p></blockquote><h2 id="第十一章"><a href="#第十一章" class="headerlink" title="第十一章"></a>第十一章</h2><p>三十辐共一毂（ɡǔ），当其无，有车之用。埏（shān）埴（zhí）以为器，当其无，有器之用。凿户牖（yǒu）以为室，当其无，有室之用。故有之以为利，无之以为用。</p><blockquote><p>三十根辐条集中在车轴上，正因为车毂的中空处，车才有了作用。泥土制作的陶器，正因为有中空处，陶器才有了作用。人凿窑洞，开门窗，制成房屋，房子的空处决定了房子的作用。所以说，“有”只是提供了条件，真正发挥功用的是“无”。</p></blockquote><h2 id="第十二章"><a href="#第十二章" class="headerlink" title="第十二章"></a>第十二章</h2><p>五色令人目盲，五音令人耳聋，五味令人口爽，驰骋畋（tián）猎令人心发狂，难得之货令人心妨。是以圣人为腹不为目，故取彼取此。</p><blockquote><p>缤纷的色彩让人眼花缭乱，繁乱的音调扰乱人的听觉，各种味道让人的味觉减退，打猎则让人神智疯狂，稀有的宝物让人行为不轨。因此，圣人只注重是否吃饱肚子，不在声色淫靡的生活上用力。所以，抛掉外在物语诱惑只让自己基本生活得到满足即可。</p></blockquote><h2 id="第十三章"><a href="#第十三章" class="headerlink" title="第十三章"></a>第十三章</h2><p>宠辱若惊，贵大患若身。何谓“宠辱若惊”？宠为上，辱为下，得之若惊，失之若惊，是谓宠辱若惊。何谓“贵大患若身”？吾所以有大患者，为吾有身，及吾无身，吾有何患！故贵以身为天下，若可寄天下；爱以身为天下，若可托天下。</p><blockquote><p>得宠和受辱都让人惊慌失措，如同过分关注身体状况似的一惊一乍。什么是“宠辱若惊”？得到宠爱是美好的，得到侮辱是压抑的，但得到宠爱让人惊喜，得到侮辱让人惊慌，都是惊心，让人激动，所以就叫“宠辱若惊”。什么叫“贵大若患若身”？我们之所以有灾难、祸患，正因为我们过分关注自身，如果不过分关注自身，还会有什么病痛灾祸呢？所以，以贵身的态度去为天下，才有资格被天下人寄以厚望；用爱身的态度去为天下，才能接受上天托付的治理天下的重任。</p></blockquote><h2 id="第十四章"><a href="#第十四章" class="headerlink" title="第十四章"></a>第十四章</h2><p>视之不见，名曰夷；听之不闻，名曰希；搏之不得，名曰微。此三者不可致诘，故混而为一。其上不皎，其下不昧，绳绳不可名，复归于无物，是谓无状之状、无物之象。是谓惚恍。迎之不见其首，随之不见其后。执古之道，以御今之有，能知古始。是谓道纪。</p><blockquote><p>睁大眼都看不见的东西叫做“夷”，竖起耳朵仍听不到的声音叫做“希”，拼命摸索却摸不到的东西叫做“微”，这三方面不可思议（因为它看不见、听不到、摸不着），它们混沌一体。从上面看它，它不光明，从下面看它，也不阴暗，没有头绪，纷纭不绝又无可名状，最终会回到隐形状态。它没有形状，也没有形象，这种状态被称为“恍惚”。从前面看，看不到它的头，从后面看，看不到它的尾。但只要能掌握自古相传的道，就能分析现在的所有事物，（分析现在的事物）就能知道宇宙的原初情况，这就是道的纲要。</p></blockquote><h2 id="第十五章"><a href="#第十五章" class="headerlink" title="第十五章"></a>第十五章</h2><p>古之善为道者，微妙玄通，深不可识。夫唯不可识，故强为之容。豫兮若冬涉川，犹兮若畏四邻，俨（yǎn）兮其若客，涣兮若冰之将释，熟兮其若朴，旷兮其若谷，浑兮其若浊。孰能浊以澄，静之徐清？孰能安以久，动之徐生？保此道者不欲盈，夫唯不盈，故能敞而新成。</p><blockquote><p>古代得道的圣人，精微玄妙而深通事理，高深不可测。正因深不可测，只能勉强描述他。他行动谨慎如在冬天过冰河，他思想戒惧如害怕恶邻，他待人恭敬有礼如同客人对待主人，他不顽固如同冰河融解，他淳朴如未加工的木材，他内心谦虚如同空谷，他含蓄浑厚如同一池浊水。谁能在动荡浑浊中安静下来而慢慢澄清？谁能在安稳中变动起来而慢慢地生机勃勃？这些得道的圣人从来不自大自满，正因不自满，所以总能推陈出新，化腐朽为神奇。</p></blockquote><h2 id="第十六章"><a href="#第十六章" class="headerlink" title="第十六章"></a>第十六章</h2><p>致虚极，守静笃，万物并作，吾以观复。夫物芸芸，各复归其根。归根曰静，是谓复命。复命曰常，知常曰明。不知常，妄作，凶。知常容，容乃公，公乃王，王乃天，天乃道，道乃久，没身不殆（dài）。</p><blockquote><p>让心灵达到极限虚无，让内心清净到无限高度，看竞相生长的万物，观察它们循环往复。万物五花八门，但都要回归它们的本原。回到本原叫做静，即是说，静就是天道。万物从生到死，循环不已，只有主持着循环的道是恒常的，知道这个道理就是聪明。不知道这个道理，而轻举妄动，那就会面临凶险。知道常道的人，能包容一切，包容一切才能对世界坦荡公平，对世界坦荡公平才能全面周到，全面周到才能与天合德，与天合德才能符合自然法则，符合自然法则才能长久，终身没有危险。</p></blockquote><h2 id="第十七章"><a href="#第十七章" class="headerlink" title="第十七章"></a>第十七章</h2><p>太上，下知有之；其次，亲而誉之；其次，畏之；其次，侮之。信不足焉，有不信焉。悠兮，其贵言。功成事遂，百姓皆谓“我自然”。</p><blockquote><p>第一等统治者，民众只知道有这样一个人；第二等统治者，民众爱戴；第三等统治者，民众恐惧他；末等统治者，民众轻蔑他。没有信用的统治者，不会有百姓信任他。第一等统治者清静无为，很少发号施令。大功告成后，老百姓都说“这是我们自己做到的”。</p></blockquote><h2 id="第十八章"><a href="#第十八章" class="headerlink" title="第十八章"></a>第十八章</h2><p>大道废，有仁义；智慧出，有大伪；六亲不和，有孝慈；国家昏乱，有忠臣。</p><blockquote><p>大道破坏，社会出现矛盾和斗争，才有了拯救这些弊端的仁义；出现矛盾和斗争后，人们就需要用小聪明取得胜利，小聪明的出现带来了欺骗、奸计等诈伪；六亲之间出现了矛盾，才有人要求父慈子孝；国家混乱后出现“不忠”现象，才有了所谓的“忠臣”。</p></blockquote><h2 id="第十九章"><a href="#第十九章" class="headerlink" title="第十九章"></a>第十九章</h2><p>绝圣弃智，民利百倍；绝仁弃义，民复孝慈；绝巧弃利，盗贼无有。此三者，以为文不足。故令有所属：见素抱朴，少私寡欲。</p><blockquote><p>统治者拒绝自作聪明，人民就能得到百倍利益；统治者拒绝假仁假义，人民就会不自觉地孝慈；消除奇技淫巧和私利，盗贼就会消失。这三点（三绝三弃）不能是耍嘴，而要落实到百姓的具体行动中，让他们知道这样做：现其本真，内心淳朴，私心减少，欲望降低，不求知识。</p></blockquote><h2 id="第二十章"><a href="#第二十章" class="headerlink" title="第二十章"></a>第二十章</h2><p>绝学无忧。唯与之阿（ā），相去几何？善之与恶，相去若何？人之所畏，不可不畏。荒兮其未央哉！众人熙熙，如享太牢，如春登台。我独泊兮，其未兆，如婴儿之未孩；儽（léi）儽（léi）兮，若无所归！众人皆有余，而我独若遗。我愚人之心也哉！沌沌兮！俗人昭昭，我独昏昏；俗人察察，我独闷闷。澹（dàn）兮其若海，飂(liáo)兮若无止。众人皆有以，而我独顽似鄙。我独异于人，而贵食母。</p><blockquote><p>放弃异化的学说可以没有搅扰。顺从与反对之间能有多少差别？善良和凶恶之间又有多少距离？别人害怕的事，我也会担心，这样的事不胜枚举啊！别人都显得高兴，如同参加盛大宴会，如同春天登上高台，只有我很害怕的样子，好像一个婴儿傻笑；形单影只，格格不入，如同孤魂野鬼。大家都显得满腹经纶，只有我一副失落模样，像傻瓜一样无知无识；别人都表现得特别精明，而我却懵懂无知：深沉如大海，行动飘忽没有固定的方向和目标。别人都能自作主张，有所作为，而我却坚持自己的简陋。我和别人不同，我只遵循道。</p></blockquote><h2 id="第二十一章"><a href="#第二十一章" class="headerlink" title="第二十一章"></a>第二十一章</h2><p>孔德之容，惟道是从。道之为物，惟恍惟惚。惚兮恍兮，其中有象；恍兮惚兮，其中有物。窃兮冥兮，其中有精；其精其真，其中有信。自古至今，其名不去，以阅众甫。吾何以知众甫之状哉？以此。</p><blockquote><p>哪怕是最大的德，也要依据道的准则。道虽然模模糊糊、混沌得难以捉摸，但它客观存在。在混沌模糊中，好像能看见它的形象，又好像能摸到它的实在。在那深远暗昧之处，有具备生命力的东西，它非常纯真，有强大的精神证明它的存在。从现在向古时考证，道的形象始终没有改变，所以可以用它来观察世间万物本原。我是如何了解万物本原的呢？凭借的就是这个。</p></blockquote><h2 id="第二十二章"><a href="#第二十二章" class="headerlink" title="第二十二章"></a>第二十二章</h2><p>曲则全，枉则直；洼则盈，敝则新；少则得，多则惑。是以圣人抱一，为天下式。不自见故明；不自是故彰；不自伐故有功；不自矜故长。夫唯不争，故天下莫能与之争。古之所谓“曲则全”者，岂虚言哉！诚全而归之。</p><blockquote><p>能弯曲才能保全，能委屈才能伸张；低洼可以充盈，破旧可以刷新；少索取才能得到多，索取多反而混乱迷惑。所以，圣人只用这种逆转法则治理天下。（圣人）对任何事没有成见，才能明察秋毫；不自以为是，才能明辨是非；不自我夸耀，功绩才能长久；不妄自尊大，才能有长进。正因为不争，所以天下没有人和他相争。古人所谓“曲则全”一类的话，岂是空话吗？当然不是，按此而行，就能够实现保全而复归自然无为的轨道。</p></blockquote><h2 id="第二十三章"><a href="#第二十三章" class="headerlink" title="第二十三章"></a>第二十三章</h2><p>希言自然。飘风不终朝，骤雨不终日。孰为此者？天地。天地尚不能久，而况于人乎？故从事于道者同于道，德者同于德，失者同于失。同于德者，德亦乐得之。同于失者，失亦乐得之。信不足焉，有不信焉。</p><blockquote><p>少说话（统治者不施加政令）合于自然。狂风不会吹整个早晨，暴雨无法下一整天。谁搞出的狂风暴雨？是天地。天地搞的狂风暴雨还不能持久，何况是人的行动？所以，从事于道的人，所作所为就与道同；从事于德的人，所作所为就与德同，从事于自然的人，所作所为就与自然同。与德相同的人，德乐于帮助他，与自然相同的人，自然乐于帮助他。统治者若欠缺诚信，那百姓就不可能相信他。</p></blockquote><h2 id="第二十四章"><a href="#第二十四章" class="headerlink" title="第二十四章"></a>第二十四章</h2><p>企者不立，跨者不行。自见者不明，自是者不彰，自伐者无功，自矜者不长。其在道也，曰余食赘行，物或恶之，故有道者不处。</p><blockquote><p>跷脚想站高的人会因为站不稳而摔跤，跨大步急于走快的人会因体力消耗累倒；处处表现自己有见识的人，其见识肯定不高。自以为是的人，其所谓的“是”可能是“非”；自我夸耀的人，不会有功劳；自高自大的人，不会有长进。以上之人的行为对道而言，好比是剩饭、赘瘤一类的东西，人们会厌恶它，所以有道之人都避免有这样的行为或成为这样的人。</p></blockquote><h2 id="第二十五章"><a href="#第二十五章" class="headerlink" title="第二十五章"></a>第二十五章</h2><p>有物混成，先天地生，寂兮寥兮，独立而不改，周行而不殆，可以为天下母。吾不知其名，字之曰道，强为之名曰大。大曰逝，逝曰远，远曰反。故道大，天大，地大，王亦大。城中有四大，而王居其一焉。人法地，地法天，天法道，道法自然。</p><blockquote><p>有个浑然一体的东西，它出现于天地之前，无声无息无形无体，它不依靠外力，循环运行永不停止，可谓是天下万物的母亲。我不知怎样称呼它，把它称作“道”，勉强再给它起名叫做“大”。大（道）是运行的，是永远运行的，是永远循环运行的。所以道是大的，天是大的，地是大的，万物之灵的人也是大的。宇宙间有四个大，而人占其中一个。人要效法地，地效法天，天效法道，道自然而然。</p></blockquote><h2 id="第二十六章"><a href="#第二十六章" class="headerlink" title="第二十六章"></a>第二十六章</h2><p>重为轻根，静为躁君。是以圣人终日行不离辎（zī）重，虽有荣观，宴处超然。奈何万乘之主，而以身轻天下？轻则失根，躁则失君。</p><blockquote><p>持重是轻浮的控制人，虚静是躁动的主宰。所以君子一举一动如同旅行之人，时刻不远离载重的车辆，纵然身处繁华，依然能超然对待。为什么万乘大国的主人却去追求荣华富贵而轻举妄动呢？轻浮会丧失控制力，浮躁则会丧失主宰。</p></blockquote><h2 id="第二十七章"><a href="#第二十七章" class="headerlink" title="第二十七章"></a>第二十七章</h2><p>善行无辙迹；善言无瑕谪（zhé）；善数不用筹策；善闭无关楗而不可开；善结无绳约而不可解。是以圣人常善救人，故无弃人；常善救物，故无弃物。是谓袭明。故善人者，不善人之师；不善人者，善人之资。不贵其师，不爱其资，虽智大迷，是谓要妙。</p><blockquote><p>善行路的人不留痕迹，善讲话的人没有语言上的漏洞，善于计算的人根本不用筹码，善锁门的人不用门闩，善打结的人不打结，他人则无法解。因此圣人常善于救人，所以没有废弃的人；常能救物，所以没有废弃的物。这叫顺应自然之理。所以善救人的人是不善救人的人的老师，后者则是前者的学生。如果后者不尊重前者，又不以其为榜样，虽然自以为聪明，却是大糊涂。这是深渊微妙的道理。</p></blockquote><h2 id="第二十八章"><a href="#第二十八章" class="headerlink" title="第二十八章"></a>第二十八章</h2><p>知其雄，守其雌，为天下溪。为天下溪，常德不离，复归于婴儿。知其白，守其黑，为天下式，为天下式，常德不忒（tè），复归于无极。知其荣，守其辱，为天下谷。为天下谷，常德乃足，复归于朴。朴散则为器，圣人用之则为官长，故大制不割。</p><blockquote><p>认识到自己能雄健，所以安心处于雌弱的地位，做天下的小溪。做天下的小溪，谦虚的德行就不会离散，则会回复道婴儿（道）的位置。认识到自己能洁白，所以安心处于污黑的地位，做天下的法式。做天下的法式，原有的德行，就不会缺损，会回复道人类的原初。认识到自己能有荣光，所以安心处于卑辱的地位，做天下的空谷。做天下的空谷，原有的德行，就能保持充足，又回复到上古的淳朴。上古的淳朴一旦分散，就变成各种器物，圣人遵循器物中的朴（道）来进行管理。所以，最高明的统治是因顺自然（遵循朴散后器物具备的朴）不必分割。</p></blockquote><h2 id="第二十九章"><a href="#第二十九章" class="headerlink" title="第二十九章"></a>第二十九章</h2><p>将欲取天下而为之，吾见其不得已。天下神器，不可为也，不可执也。为者败之，执者失之。物或行或随；或觑（qù）或吹；或强或羸；或载或隳（huī）。是以圣人去甚、去奢、去泰。</p><blockquote><p>有人治理天下希望通过有为的方式，我看他注定无计可施。天下这个神妙的器物，不能有为，不能抓住不放。有为会弄坏它，抓住不放则会失掉它。世间上的人，有前行的则有后随的，有嘘暖的则有吹冷风的，有强健的则有瘦弱的，有安全的则有危险的。所以圣人不应该过分安乐，不过分享受，不过分骄纵。</p></blockquote><h2 id="第三十章"><a href="#第三十章" class="headerlink" title="第三十章"></a>第三十章</h2><p>以道佐人主者，不以兵强天下，其事好还。师之所处，荆棘生焉。大军之后，必有凶年。善有果而已，不敢以取强。果而勿矜，果而勿伐，果而勿骄，果而不得已，果而勿强。物壮则老，是谓不道，不道早已。</p><blockquote><p>用道辅佐国君的大臣，不依赖战争逞强天下，发动战争特别爱遭到报应。军队所过之处，生机全无；大战之后，瘟疫横行，饥荒遍野。善于用道的人，只是达到济弱扶贫的目的而已，而不用武力称霸天下。达到目的而不炫耀，达到目的而不自夸，达到目的而不骄傲，达到目的是不得已，达到目的而不逞强。任何事物到达强盛就会转向衰败，这只是因为没有遵循道，不遵循道，除了早早败亡别无他路。</p></blockquote><h2 id="第三十一章"><a href="#第三十一章" class="headerlink" title="第三十一章"></a>第三十一章</h2><p>夫兵者，不祥之器，物或恶之，故有道者不处。君子居则贵左，用兵则贵右。兵者不祥之器，非君子之器，不得已而用之，恬淡为上，胜而不美，而美之者，是乐杀人。夫乐杀人者，则不可得志于天下矣。吉事尚左，凶事尚右。偏将军居左，上将军居右。言以丧礼处之。杀人之众，以哀悲泣之。战胜，以丧礼处之。</p><blockquote><p>战争，是不吉祥的事物，受到众人的憎恶，所以有道的人从来不依靠它。君子平时以左边为贵，战争时则以右边为贵。战争，是不吉祥的事物，不是君子的事物。不得已而发动，尽量平心静气，战胜了不要得意。如果喜欢战胜后得意，就是喜欢杀人。喜欢杀人的人，是无法得到天下人心的。吉事以左边为上，凶事以右边为上。军礼，偏将军在左，上将军在右，这是把军事当成了丧礼。战争时官兵死亡众多，要以悲伤心情对待。战胜了，也要用丧礼来处理这个胜利。</p></blockquote><h2 id="第三十二章"><a href="#第三十二章" class="headerlink" title="第三十二章"></a>第三十二章</h2><h2 id="第三十三章"><a href="#第三十三章" class="headerlink" title="第三十三章"></a>第三十三章</h2><h2 id="第三十四章"><a href="#第三十四章" class="headerlink" title="第三十四章"></a>第三十四章</h2><h2 id="第三十五章"><a href="#第三十五章" class="headerlink" title="第三十五章"></a>第三十五章</h2><h2 id="第三十六章"><a href="#第三十六章" class="headerlink" title="第三十六章"></a>第三十六章</h2><h2 id="第三十七章"><a href="#第三十七章" class="headerlink" title="第三十七章"></a>第三十七章</h2><h2 id="第三十八章"><a href="#第三十八章" class="headerlink" title="第三十八章"></a>第三十八章</h2><h2 id="第三十九章"><a href="#第三十九章" class="headerlink" title="第三十九章"></a>第三十九章</h2><h2 id="第四十章"><a href="#第四十章" class="headerlink" title="第四十章"></a>第四十章</h2><h2 id="第四十一章"><a href="#第四十一章" class="headerlink" title="第四十一章"></a>第四十一章</h2><h2 id="第四十二章"><a href="#第四十二章" class="headerlink" title="第四十二章"></a>第四十二章</h2><h2 id="第四十三章"><a href="#第四十三章" class="headerlink" title="第四十三章"></a>第四十三章</h2><h2 id="第四十四章"><a href="#第四十四章" class="headerlink" title="第四十四章"></a>第四十四章</h2><h2 id="第四十五章"><a href="#第四十五章" class="headerlink" title="第四十五章"></a>第四十五章</h2><h2 id="第四十六章"><a href="#第四十六章" class="headerlink" title="第四十六章"></a>第四十六章</h2><h2 id="第四十七章"><a href="#第四十七章" class="headerlink" title="第四十七章"></a>第四十七章</h2><h2 id="第四十八章"><a href="#第四十八章" class="headerlink" title="第四十八章"></a>第四十八章</h2><h2 id="第四十九章"><a href="#第四十九章" class="headerlink" title="第四十九章"></a>第四十九章</h2><h2 id="第五十章"><a href="#第五十章" class="headerlink" title="第五十章"></a>第五十章</h2><h2 id="第五十一章"><a href="#第五十一章" class="headerlink" title="第五十一章"></a>第五十一章</h2><h2 id="第五十二章"><a href="#第五十二章" class="headerlink" title="第五十二章"></a>第五十二章</h2><h2 id="第五十三章"><a href="#第五十三章" class="headerlink" title="第五十三章"></a>第五十三章</h2><h2 id="第五十四章"><a href="#第五十四章" class="headerlink" title="第五十四章"></a>第五十四章</h2><h2 id="第五十五章"><a href="#第五十五章" class="headerlink" title="第五十五章"></a>第五十五章</h2><h2 id="第五十六章"><a href="#第五十六章" class="headerlink" title="第五十六章"></a>第五十六章</h2><h2 id="第五十七章"><a href="#第五十七章" class="headerlink" title="第五十七章"></a>第五十七章</h2><h2 id="第五十八章"><a href="#第五十八章" class="headerlink" title="第五十八章"></a>第五十八章</h2><h2 id="第五十九章"><a href="#第五十九章" class="headerlink" title="第五十九章"></a>第五十九章</h2><h2 id="第六十章"><a href="#第六十章" class="headerlink" title="第六十章"></a>第六十章</h2><h2 id="第六十一章"><a href="#第六十一章" class="headerlink" title="第六十一章"></a>第六十一章</h2><h2 id="第六十二章"><a href="#第六十二章" class="headerlink" title="第六十二章"></a>第六十二章</h2><h2 id="第六十三章"><a href="#第六十三章" class="headerlink" title="第六十三章"></a>第六十三章</h2><h2 id="第六十四章"><a href="#第六十四章" class="headerlink" title="第六十四章"></a>第六十四章</h2><h2 id="第六十五章"><a href="#第六十五章" class="headerlink" title="第六十五章"></a>第六十五章</h2><h2 id="第六十六章"><a href="#第六十六章" class="headerlink" title="第六十六章"></a>第六十六章</h2><h2 id="第六十七章"><a href="#第六十七章" class="headerlink" title="第六十七章"></a>第六十七章</h2><h2 id="第六十八章"><a href="#第六十八章" class="headerlink" title="第六十八章"></a>第六十八章</h2><h2 id="第六十九章"><a href="#第六十九章" class="headerlink" title="第六十九章"></a>第六十九章</h2><h2 id="第七十章"><a href="#第七十章" class="headerlink" title="第七十章"></a>第七十章</h2><h2 id="第七十一章"><a href="#第七十一章" class="headerlink" title="第七十一章"></a>第七十一章</h2><h2 id="第七十二章"><a href="#第七十二章" class="headerlink" title="第七十二章"></a>第七十二章</h2><h2 id="第七十三章"><a href="#第七十三章" class="headerlink" title="第七十三章"></a>第七十三章</h2><h2 id="第七十四章"><a href="#第七十四章" class="headerlink" title="第七十四章"></a>第七十四章</h2><h2 id="第七十五章"><a href="#第七十五章" class="headerlink" title="第七十五章"></a>第七十五章</h2><h2 id="第七十六章"><a href="#第七十六章" class="headerlink" title="第七十六章"></a>第七十六章</h2><h2 id="第七十七章"><a href="#第七十七章" class="headerlink" title="第七十七章"></a>第七十七章</h2><h2 id="第七十八章"><a href="#第七十八章" class="headerlink" title="第七十八章"></a>第七十八章</h2><h2 id="第七十九章"><a href="#第七十九章" class="headerlink" title="第七十九章"></a>第七十九章</h2><h2 id="第八十章"><a href="#第八十章" class="headerlink" title="第八十章"></a>第八十章</h2><h2 id="第八十一章"><a href="#第八十一章" class="headerlink" title="第八十一章"></a>第八十一章</h2></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E5%A3%B0%E5%85%89/">声光</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E9%98%85%E8%AF%BB/">阅读</category>
      
      <category domain="https://www.ninojay.top/tags/%E6%91%98%E6%8A%84/">摘抄</category>
      
      <category domain="https://www.ninojay.top/tags/%E5%93%B2%E5%AD%A6/">哲学</category>
      
      
      <comments>https://www.ninojay.top/2024/dao/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>过年前关于外国人的小感悟</title>
      <link>https://www.ninojay.top/2024/foreigners-and-work/</link>
      <guid>https://www.ninojay.top/2024/foreigners-and-work/</guid>
      <pubDate>Wed, 14 Feb 2024 16:44:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>去年刚来上海工作的时候，稍微有点遗憾的是，住处附近没有一家酒吧。没想到最近，我家楼下，新开了一家酒吧。过年前，经常连续几天一下班，就泡在那里。</p><p>我知道了自己很喜欢龙舌兰，不是特别喜欢威士忌，喜爱的鸡尾酒总体都偏甜一点。</p><p>那儿经常有两个外国人，一个荷兰人，一个突尼斯人。我有机会开启了生平用英语连续输出几小时的成就。有很多很多感悟。我今天只想说的是，以前总觉得外国人应该和我这个中国人会有很多很多不一样，要是我有一天接触了外国人，和他们接触，我一定会感受到震撼。</p><p>通过连续多次的对话，我现在觉得大家都差不多。大家说白了，都是人类呀。人嘛，无非是先想着吃喝拉撒睡那点事，再然后就认同感、成就感，陌生感。所以说，不管是外国人还是中国人，成年过后，想的事也都差不多：工作上的顺利不顺利，人际关系的好与坏，男朋友女朋友，老婆老公，家庭的矛盾，未来的看法，三十岁四十岁内心开始宁静，最终接受自己的人生。除此之外，也就是文化上，行为习惯上有些不相同。人本身想的东西没有什么超级让我吃惊的东西。可以说，我对外国两个字祛魅了。</p><p>国外现在对我来说，就是得去看看异域风情，得去亲自体验下不同的文化，看看不同国家的美女。有机会的话，一定要和外国女生谈谈恋爱。</p><p>很早我就在房间里贴了一张设计精美的世界地图，提醒着我这件事。</p><p>即，谨记，世界很大，我没去，还可以去的，有意思的地方还有很多很多。</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/">情绪</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      
      <comments>https://www.ninojay.top/2024/foreigners-and-work/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>面试过程</title>
      <link>https://www.ninojay.top/programmer/interview/</link>
      <guid>https://www.ninojay.top/programmer/interview/</guid>
      <pubDate>Thu, 25 Jan 2024 10:24:00 GMT</pubDate>
      
      <description>有东西被加密了, 请输入密码查看.</description>
      
      
      
      <content:encoded><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="密码错误。" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.">  <script id="hbeData" type="hbeData" data-hmacdigest="2a7d9b9509c99cede8a2883f72584c85f4f003db70fe38c1db7b1a2b063fe3df">a7e357068c42329b8f33d37c25a789f17da67a35b47dde45e03668cf78c52877f1296ce613b69ca8273fe4c3bfe5233f311ff0992cf24b4b3905ce416e79cf1b9a92a22fded22072cb640d77ffa7d74a84181c4524825ee4835f82d8bcdd8a1a3a865ffb1ceeb3722bcc1534f81c666c2252c2142bb489cffb53c77a3ce32c78c1723bb98d42956bf921e6ea67fc70a4f1b4382435030bfa2adfeb038f6d3f2b9232450d9441620ff820c0f41c0cc81585aa5af3d3f4f1b77b79ef37f51cd94151fd1b88ed30ed8c4cee8249ba3e914723ba9cca51b77c92cc6b952ffc14d08d7e80fe297b2478b58a57ad77b88dd16cfd14a29db6cf8e7b408dc8f556775c01154a876b6a030ee4b45d137494bfb1096ba6d9a5ea5720a3d27e6933150feaaa52d0b002c28df4c90b8f79562c5545bb27b652d449e8c6141b7d3a5f6c1d336b420d09fcf876beb781fb2fb3ea531e46a6e394d5f6e7d3b33b6a57246433d4b615c8236822979e7e800add74f9dcc21c449efd21113e969c8f286a68b19b3de4c32a17f571e1a2e60f010b872f83b6a3067adab1dd3f987374e42d467591d3c0020f876345f224e08654b983fa6df3bb031f07818e0f6610eac9f05064a2413a31515f47baf5a6600a10a438aac2e33fd5f8771e64cc0e5c3dfabf2b781e3892f2fec664a53b4fc93a695e3a6be22a9119da8b5c2e466fbb13b877acd096ac6fdaa31aff67d3be52c2b18d70943014426b4691b1f97cbf1129961407b6938474ffd1e29d9a4d375fdc01d2dc8872fe2aab6667675ea6dd5333f48643b6078dd839cf93d8a1095486f234568bde5ccf30830ad96cc403a44958c62032570ce8e8c0471137c60852df6456b91058208d53e6814fe92ac1e66b83ed031c41538b61410ebcc2938bb833a4fc04c895c62257ab081e6d2313b25e0c356d1956047e79d744e3303443dc335dd65178dd77029863dbf27aa07694e21eeb503b74299d20a67c1dceaf52e617921725fa23575afe0a5ed3248af1c95d32bddf9d39c4ec43f20aa53eaed3bbaa9729421665b7dee0db15e666288089397bfeb97b37e41cadabcf5a898ee591511c151f1855b21035e6fff3496c3f83757d087d16cd31aa72cd12fff756c47f0b22028b9f16706bf2273e42b13fa981d78849feae04f3b06b4217a0d5bda223f4454cd332b04b6a441a93ac32850147cb211c9de09437cbf900ce049335c85b117c57da6ce9458393453d4c7faba73a5a681764754139faecad32674904f5e236a59ab52157fff871153a24b07a98e9d7214ce5d2ca5b825739586377d40b0371f3f8768f67f03b4559c86f2ff1196272b06ad29f5f9648b9a680f76b6f7daaeacdccb375b7139364d243b1de7e2a284551248bd7cb3b8e2d15db1c198671803e61838e11d6ae2d3cb496a8ff19d493294e7f5cef780f1413b3df339849a90765de43fe941e671603c367d3387384c013f8761c7e98978a91e16d3bfe0dbe7b2e8977102f59daa6f238c730610ec761cd48815af6c0f3067c542102993787a86055755357731f380cc54016d0979a4d7b2c2c313a47439a76e6ffb8afffd0c5d80248a17e2e3bedcd3a97dee665e3b9aa161d9c4d3b114bae7f3b2e890af967416fc074bca173ab67e185afb3f26140c228c7af31b7e1097ed11d38215d9e4f40ce385d73fe75b19ed31aec5e19f95d44baa4992fe79767cb5977a32eb0d5c2e1a759e990d74ef9f62521ee1a44033e07e18e0d26211dcbec42411efda92df14d633272096abca7a798f0a005170a6caa2613bb7a5157e6fba83afb38a194ce2aa5cf1d061f4058547fd7c4ff906b2fa8a7a642e5aade342c4cdb11abc383ce0996b75b2b7e90f85eed713335c44c2f6a678ce186fee9dbfbfc4653f529829652b4f7b8f59e2767238206bc47ea1046c3a000a98a9aaf818bd033bbea60ed778bf2976b4df98ba2fb704585dcfedd42884e34762683846b391dc8d028d5239e7795a9350178c69fc5076c83c21eb92f14c470febee8d17f65ae5abf3b494e8924ade6dcc731f114384198065413ccb4c098a9afa4bede56df0785a485c8df9d9a06decaab996f72bbce473396214c323f8bfb5b60e57b94ef4f7f2e34c6feefb809676baab47e8a4678b512e0811f21b89834c526f160ba7678eafc4cb6d14bcd9757efa7af58d20b6973c87297f8c0fe04dbc0cd939518e68a32cfe61910fb03640919f054fbacfa80688b1e7e466be17ad3752080a7ea228b127aeb52f9a73a3038f645911edf84d787a4e35227f2f61f74efe4bd94e4984c80bb648bf4551075df5575a3377d2f3653ed90e3b2e0cd38be06ff057fc13c5a985d4dbbe5c2bea8a0f038d9b830d0b8b6a2a65117ff00fabc74f0cd79688fa6908d5e09038bfe0c1edc9bb5d178bea89bd0ecefefa0704ca8f880a51400b1b9634f5ffde0047f745fff75d0dcd20bd62f0ecfadadba6929df232f980613bf49cc4e652fee41437d065b97218caccedd3b3fb8eb753db09f547470db64b494</script>  <div class="hbe hbe-content">    <div class="hbe hbe-input hbe-input-wave">      <input class="hbe hbe-input-field hbe-input-field-wave" type="password" id="hbePass">      <label class="hbe hbe-input-label hbe-input-label-wave" for="hbePass">        <span class="hbe hbe-input-label-content hbe-input-label-content-wave">您好, 这里需要密码.</span>      </label>      <svg class="hbe hbe-graphic hbe-graphic-wave" width="300%" height="100%" viewBox="0 0 1200 60" preserveAspectRatio="none">        <path d="M0,56.5c0,0,298.666,0,399.333,0C448.336,56.5,513.994,46,597,46c77.327,0,135,10.5,200.999,10.5c95.996,0,402.001,0,402.001,0"></path>      </svg>    </div>  </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/programmer/interview/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>程序员知识脑</title>
      <link>https://www.ninojay.top/programmer/knowledge/</link>
      <guid>https://www.ninojay.top/programmer/knowledge/</guid>
      <pubDate>Thu, 25 Jan 2024 10:18:00 GMT</pubDate>
      
      <description>有东西被加密了, 请输入密码查看.</description>
      
      
      
      <content:encoded><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="密码错误。" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.">  <script id="hbeData" type="hbeData" data-hmacdigest="4e30977384194e284dddb9f74e14571bbcb069d0ec2b323fac45829845d78d3e">a7e357068c42329b8f33d37c25a789f17da67a35b47dde45e03668cf78c52877f1296ce613b69ca8273fe4c3bfe5233f311ff0992cf24b4b3905ce416e79cf1b9a92a22fded22072cb640d77ffa7d74a84181c4524825ee4835f82d8bcdd8a1a3a865ffb1ceeb3722bcc1534f81c666c2252c2142bb489cffb53c77a3ce32c78c1723bb98d42956bf921e6ea67fc70a4f1b4382435030bfa2adfeb038f6d3f2b5b0b1b7e327bd91849bca829adde7e7b6129e8a7c68cf71cd962a9a81a6d7150d586cb08a0e318289e55d0a031f6950dd09840d6ef36ce5e03960966c0020c1d9a08e241f5641f3a13fe1a484fa875366395c2574f6c8ee6726d7fe6b97253e14d7a844d65ddcd51712e50a8799618c6e9debb4fda93c7a3efa29ea19e4206ac9921d6dbc3b0414cdbec3fe0e1ef5fe7e3964c35b5a28b4517cd069b09ba811110c056e16b4c375b59ad1f76fb3aac97b46070436155dbf84769c759cb003d006212dbaed0fe1f3286b55a7a1d312f92973ba03c3a0fa5634cbd4746f77b37108f63b1262c88716ef1a7425f9af1582128e72e9e933ac57259c7fd22a7438522d6661b9d6be8ab8ee8c8a825f084cbcf24f7423c9afd2a9e2db1c36cec3819f00f6ad6a9c433da2912171966e2287281fbf0db114c52f2d24df8e51051a744a10f83a1a5c34ca38529f66765c687725793d269f23cbb0c377a756e8813f629dfedd0c3ba2666beb162bd36f251d4af0300fde64f449cb1be5467910f5550382057b7b0214d84e1793ed07386baa7de6c11ff1100cecf3b6fb715cb906de1e3127932779456766bba0c4ec9ca8f428aa6ac880556926285b057e50e53188cdb184d45aaeeeea5d5a517af409d2bb514b44e8607fe7f6d08b4cf8d6d372280815bc9b0049fe9e7288351619fcb2d609c2edda292d095f6f53edb9da28234b5c3fd11fb24018a769db4566de674a0bc78f9eea382c9612512b11319037e3b2036d6d71429e4736fc54f562975d95f090bb8f023cbd4af54f5c997b510f784d8298ab18b61bcab4ade575a574379267cbd8b201ea25fd13c1fe797badcdc51c0c05830492b1dc4b9962ca3e5c563ac28d4c70df0171b90bc46a9eb7ba1a69b29b03ce109903d924da4119a50ac16271282e9bd09c394fe799aacafcb4e31b4c6fa84073206d70965dbad473927ed55c9190711dd85916e1497e80a869188edba57bb52635f0db1fc3b1d266f2c60fc55efdfed5efe0b42670ca98d6c68fb15e0ad35357fdf02a75a23c84bd66f5947729818349776d5a11066db1735ad4c8fa520d5dc77a70ed0f07fb86bd0c1417e37aa23e4e6046062a522c635b439f46cf6c1002c6e1fbeb54f98de41bdb379af8c63ac5e45f179edb9900319d812faaf09f1c9322a4695b017ab7b446360310355286ce8d19150e8d058a114016fb6d94f00633b025fb16c1a0d6d6dc7ee8b3505db69fc9128182a4a56b75f9ad3b09731c3d6934e9ab675dffee51f65ea15a42f5cd7849025f11557e2b79284786065cdfce00e42fcf9a208f228e59178af1bfe7c43dd09d6fbe65fccd55d7ffaff4340975371f4a7ee9d47bececb6fc07c62265880280cf1553fb70d5e5e3049079d0873184fe91639b01d4a42d3ddb1ede6d9d5b870dc578992f7def40fc45b5f9fc6d8b4f65869cacf33e2e6e0dea31d4eaa5629a0abd95deaafdcbe54f96a1ad251be2f8268005e2a5dab08a243f0176a5581803a3526d7fc9a0cdbc503dbf20c8dda28f73f116be9b561fc720859e5d36505ecefd33883f649389b5e93c3715fc410771397166dcf282a73b10227b2e1d5175354178541ea29c787f4995ecf55a8d46d307d5fd654e2f8a41cd8ea60ec5325bb8750296f5859d399ac42c4561f65fa7b8f7bac25cfd81aa276f4c49c8c7401b4ffda1ffff91a89da63d47f888993c403caa6ea8a3d93064a63d9107a90ef18b287f0e75c0887d49f5e29d98cf18dd7a942bdf5c295b27d5532ab1fe6c47699f504b32342264bfce1f36ec575bdfe89b45c01e7b9be52d8bbef73cb0bf55f820a40e4762c7a97d19dab9fcb7484e1a5872159682c360b4676f7de8ab275601b2c0477066ab943472e36f9ea5f06d8db2c21c199555ee0233b044be231f5d8273b3368e79888d2757a63c78f301390a421181aa90a2cc29b097f0430f28b068426bd3d3ced4e8975f26b21029750e227dcc9c315e6f1c16a3d845f456f57a8dc4371b554268a2567883e918d14599cf93fa89163ee4886d05288a0d01a5f22280f7b548392b8e4003bca71055d2034130d50d3e6b7e80bba5345b4ad0abec8f7daea3db03974bac1b14b5206c226cb385a299031d3e526df511ed109e6ad0d976d0da31216de0bef6d514e1095c4dceb31b6c0abc08d5aba2f9629f2f982f26a153f447af4186921cb5a12f528ef7ede3948bf146df9cbf24ee8302d82b232d491393cf981e34d781c5f0198c7cd72e85fb5631d24f29c6c02d829dfcf9dbbe7a210e38b1d108119193671baad646b822793f005c653ecedcbabfb69cc6afe0da813e001617477c36f38c14f159c0fe597bd44c2ce9d3553e5f678f7dc42fb562ed9a070895f44011d6f20a7041e7454ab130ac7fa0837c8195a3e771a1581274810a365cf15b92c26d32b44024bdcc967c392d773725286f31b9dbb40b20ea59e563220aaa62a338565785919e199431cc2fdbd6df6ec0bc8bcaeb0a9373c744608a4d3cb589ffbcccb67705432c35064455362d19965d5ec2b494502801ddcbb50dc0a85c3ade7fc139d5f498ef4bae04a8a83d3dea89b424bb0834acf09c93a14734bcfdd1f99a19fa2cae2a2d81003ca4bd4d36925020f8bbe7d568804e363b15226606857db307a4b25348552e80eee7c6c99bf3914271388246b94d58f9cb8730681f17ec2e1d02ba873558fdb0f3d32e34de84cc016f41195987dd09f5a0e8e56b015d6fe8e5592e020feda2de7e737f49ba4eda1b57d9066f2d40e34eadd0bb01149406214332840bb8b406d7f4095fd16a5d93d7c9ae6b378c98594b5e3887e2a6fe9e2a25ba46d7948253f02bf1f306c06683d1b30b7553cdd2d1520b92cc70dbb5aa02e2e612fa2d2a5a1013671b77fa1d94c671d47a9b8a895a30ceae499ac5f9f1213d33d5fc35aa96fbe74591f5d5eb52a40568fd6047c2a320f34a4fafa5bfe1905da8502b175920f5a7a2ba6feb42cdf50a36abbe64e02f695723341b73496ce56108f3674e15c144c27e87145106f32dff69f03c45d71944bcbdca367944ed2d17bbe80a3dbc60307a05df5a6eab014785d2bebafd4226ee3aa4a4cb6419b173aa6258ef218228d86b35ac160eb9de4b8e90935b40cfdc0c7877d4c26aa419c723322bf258e05cb454aea61b603e916edf8c8953c548374462e20131d4cc2a49ca5aad971c9f74aad8d7e8cab708e3d57a54f11506c17579a5880c9ded420b4ff2b44beaf5bee699dc2da28bb97931143b8af513bc8e2835c560e04671b7f361dd4f3fcc860cb152d648fdfc740f9b7bd7f09f278713cc62f190ddb85f18903841cd268d41125e00f57764ac907ae635dfee26f54da888a6d707afaf67ebe8a7572e0e7392d014b90493fddf81e929adff08fd4ac1a6e8bc814f0fa6ab5dded912b675d8b0a2f534c5e03ef52f129edc234b1f88a40b387f35c4904cae91097a5e497c00995c4850d40609a87709b67f294e8e3eeb73c3193bc51c7ac01b07d9ce1ec7498f9478865810b53f3cbff30ea895148c3743f2b3b4c44ee230c5ddd98724f8112d31dd5dadd4e819cad3b475774117acf345e9e5cd3fb8ffead007a558b3f6184fdca91d57d842371f1e42bddc3a205767655eea22e4fa2450fb3fb61d21808f52dd422420ea84bbde82ea41def1e8fb7239a287258349835cec53bbed1eabf7c070b0079596a3a4d62e5b92c1a86be802d2537207afff47f07ca3983b5ef914207249047bfb7045b85579ee9ac108bec6fc245c583b26d1b2185553b3f29a2920a7252a0f347155991ea57700c83a2cf2b4ffaad42d0568da9e0bbfd351e3770428c7437be8cceb4c082728b81ff65ac16145ac73a1d89a3202bf9a8a10f212ceaac9fd1ce6e1e81d60c2cbcd333eb385a86158472e0f61ae9be03c304c0a7d0fd886617cc35680aa679c57b1adbe39653177ca88e0fec7c4643a7540242cdc9357e4fcbc6056e161928b6b91fa41f56010febdcc9a573c55570ce63cf50973f0432139ae160e2089ebf16c880d5c28b4702f2cff0f448f75e421664f0c4e2fa40f7ad1ad996e5beeaec5cfdc33ad27ce5d554b8090649fd28dc99066ebb09172eb7a363b8bc4da24fccae7303653f34e2da3092744b8189284138e6fcd330ff4428893770b8a536e9344af251188c2db0ebbeff2104ea8a20c01a99f1a8a04a32833c45a19f25796c57e06f96a6cf49ceb53921f2bc516d714df54be103b58f7374d8bcfda5e6684ac09550cec40aac7dd8c023381e0cfab2c483a66473650085d8204128fe0e95a63a5236610fd3db300508f14687eed1f8cfb9e57234cc8a0dfdbc09d9c22dd89607533dbe7dd4137715cf93cb1ea288bc0308a8e01680de0d719e62178315f6ffb2c3ae52f317fe5499c02f87d1e75cd7a13de5914ebb3eca7623dddea0b30c86b5710c7ac4fd8918b5ecb19253ff2cd4a77abdf30e9ef1d37d024bbfe4311f3e518d680a16a4f116bcfcb7d8bcf2fe329e0807f6523aaa79d0089fc3680e9824001f74a2e27236b3e9156616eab07fb7dd1f5ec5429750017d398f23be291d66d6ca7e9bffdaf991276e038e006b9842c35e0ab8f974d2622b2e18f1861241b662733bcc101b08e0aaa3eb2e5bd8a34769d647a4cc95aadc89030884c55c2804208a32dd6ea54cbf89c137ecec79ca36fb3e8578f54b61c15135c4bf4a7e6c537dcfa759137ccf795ba6e6cc43f221ee80d00ed37f5b6359a8093902cb68cb8b688e55f2096c86c11dc1b4925502e1fa2dae06ada89531c4d55b4dd0477e5e131084fed959c0bcab427f5760b21520863ace0994d15d7c652e77ce1c458fcade33d4254075ec0977c56efcb962ad19ee1591c143ba0fe7be57519a58fd08a116b7347765d6fab379ef748f481fba65dfde0955e71b06042563f8b9f39711ad1a976a81ad4d1218bb86749c1a105aa38352675c9566558289c2b41de9a778423eb4b3edbf03b9350eba8faafe30bced7333a3494d2d3fea3cdf49f5aceeda86ec264c8c6d67460315ec6e3a80a58c100600384b4737ee6e251fab90bbd5364646d2486c0864213ca969829563eb1c2b333d355008195c73ed8accca9d026f1e04a2d6852f9b2384119b361ccf672e52c032bf5fae3ab5b0dfef518b9822bff75e0ad35e1a7482aedfcc048d94344b9ab4e4289037780a03444a3d095936c9ad24d9c75132742b9f7fbafc4563a86f2a7eea225979c4f3b6b55f41f348bf61870a5ebc5b9416aff0eea305d1db0900dc479a9c3fc3b80df61c9bee3236fb6c0bbdd72893edc9c079801f3cfa7411984441d40e3a9a1a3865c998a48c3dad32e291f566a9e1dd8af7662dff1597f4be7091149fc414b1350db4b0597ba3c6ee26e5f50bdfee7fadea5bff964396bf137a4227daf9cf4537ed9fb12a9290f823fb3ba62a5c04e291d2ee54d2d5eaf5a08d36fdff2f6b7a91028816b91bb04e0eca9246abcc2f6a57f6ff10125c6243a9f742195cbbc28ef5de9d9e45e38d0c5228d42c198596220cd9f36024e74a80a4f3c2dc713287a5916d7c988cdae6338ae2fd26f40c9c8684a9310b1aadf5957959a51b4fc6f087baa288e7ed6f3d29cb51ae289a59686f1ad15b0a0fdc8ee3587c39ac3405662ddc3b7b509ec37d05c478045c4f6ac91c1c9f8c3c8e131499d81f9e75943c492d7bce42e02fdd4630b94b9f18498312379c693b8f5dde3f540b284967a406f3f552be2e6f2083ef91ac4d0daae0f77b1d13a2dd88023c92281b690aae06bdf0a2f854276472bf417013340af3ce0f35ea7b09c090a33ff6260e3a356bb5e1f7f9120e045e64610ddb0e92b800137644e20faa1a61266cf0864b51b2f5849b4f42f1f7969548f0fcf848a950808f8b1e91a7b8890d11489db16e3d820808db74f1ed0bdb039e5cd2532d74c621528940cadfecc9cd76c8e35a0606faaf756882f29f31c27d30a97c67d69d9b67b12f9515af6e6772fa684ced5125d1bd2384624f626104cfa7f3464da6c0439d4a32e836e8e6e3304b271636d7ae14658b2627be1ed5bff5883817e8d4bff376d9f79e668111ee9a5da8d77ade8eac672d00ad9952b2f56ca7c7e7b526ae886a0b669ae898014671297d4d432f2c881eb04786f5d27962cd4d0638a15b6dc5bd8f9e05843ea7d7a83beb3bcd45d5042f51f7887bd82e87480f4e31aaec2aee71aeb35be742e22bf82171766eff40bb088b6a7c55a12b8aa20f2b67bfe4ecd03c24724fa2f1314cbb989a98695d4a47c32031342a1d53a640ab7d314ae3e7fef4d8677ff9f43c6d78cc9d6d4580162969ae7f2ebb6c7a0e81259537d0faa88f5e8164e9cae632ae9335fb2e83dee729d96eb6d26037d7f93625902172794c9dc02a7d0a9c9248406ba9e7889cdc05934e4a6fa776307376cf00bad8fa79b46a8140727871e61af2d8bdfca71f1544285a91d9c6a0858ac8b1289f26c4c754a5736e7c714de69ba21f47fc5cf20fb9051ec699992e5e7491b191491cbf3779c49555dd4612ae9774fd1ced3c08adafdf8377b8afdd3f7784b7fdc7dec11f98765cda7c9e81930ccee4a99c948eb77b7aa124a0cf5e8ec4dd79413e4b666b7c38f420ca6ab7e80b65e8b899e9486a40495dad0840251020d3d6e8e099d45dca0f8a0cdcc75a3a3c26ae4c25627463204a250355ea68e4e5abf74c0217973aba6dc567233d32afa74b17a11d12db63aa7641b1efa766ce80b85104c7482c62ad65f61ab066a315cb046fc4c7476d257ea9f231ad515726c8e4aae77d9a656257b6759680a9b7791c344803dd0e285f517735fd47f3e20909e8efe234cdea846e2a5511313023396ad154c340704bf208b7ef09f9d4bb7f93e19cdbeb867d2176fe7cffbe6c9c390ea70f4238d68acb15ab8f0efd8a919963e0725d4a152f80b49f9571c32d0792e45db2b75a38044d5a326fd3fd390f3d5b79f954f8ed6f32c74c155c5262bdf9d11f334408f2a58dcd7a977170142da3d0da22e2b46c4cfe8cb76338f7fb80c9ef6693499ecba7bbedeb26df731243d2c4193111ae9e3d1f1353afe41f2b5cb23be0e4c4be1fca81e94a62630e3d9547aaff000049576bbcaeeec8896605d3beb00269c1734d8412009696526567b6137e07b016a7e4db778d46b53e8c5d2944db188fb2228e073b9a01b7011a15b2a79a5b08d76590b17db18a5f2634c7a497999649b5dcb440907084a2e2dbdcc7d2dc6d8cbec4</script>  <div class="hbe hbe-content">    <div class="hbe hbe-input hbe-input-wave">      <input class="hbe hbe-input-field hbe-input-field-wave" type="password" id="hbePass">      <label class="hbe hbe-input-label hbe-input-label-wave" for="hbePass">        <span class="hbe hbe-input-label-content hbe-input-label-content-wave">您好, 这里需要密码.</span>      </label>      <svg class="hbe hbe-graphic hbe-graphic-wave" width="300%" height="100%" viewBox="0 0 1200 60" preserveAspectRatio="none">        <path d="M0,56.5c0,0,298.666,0,399.333,0C448.336,56.5,513.994,46,597,46c77.327,0,135,10.5,200.999,10.5c95.996,0,402.001,0,402.001,0"></path>      </svg>    </div>  </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/programmer/knowledge/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>2024所有碎片</title>
      <link>https://www.ninojay.top/fragments/2024/</link>
      <guid>https://www.ninojay.top/fragments/2024/</guid>
      <pubDate>Tue, 23 Jan 2024 12:33:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><br><div style="text-align: left"><h6 id="2024-11-16-23-41-冬-🧘"><a href="#2024-11-16-23-41-冬-🧘" class="headerlink" title="2024-11-16 23:41 冬 🧘"></a>2024-11-16 23:41 冬 🧘</h6></div><div class="circle-black"><p>重要的不是输赢，而是把每一把牌都打得漂亮。</p><p>结果只是过程附带的。</p><p>关注好处不如去思考如何避免痛苦。</p></div><br><div style="text-align: left"><h6 id="2024-10-08-13-37-秋-💊"><a href="#2024-10-08-13-37-秋-💊" class="headerlink" title="2024-10-08 13:37 秋 💊"></a>2024-10-08 13:37 秋 💊</h6></div><div class="circle-black"><p>看了《卡拉马佐夫兄弟》和《火之鸟》，今年算是幸福的。</p></div><br><div style="text-align: left"><h6 id="2024-09-02-11-25-秋-🧘"><a href="#2024-09-02-11-25-秋-🧘" class="headerlink" title="2024-09-02 11:25 秋 🧘"></a>2024-09-02 11:25 秋 🧘</h6></div><div class="circle-black"><p>还是需要不断提醒想过的道理。过去已过去，未来还未来。当下实在是可控的。犬儒主义不过是一种主义，还有很多主义可以选择。很多事并没有下定论，这个世界并没有生活的定论。</p></div><br><div style="text-align: left"><h6 id="2024-08-23-21-39-夏-🐫"><a href="#2024-08-23-21-39-夏-🐫" class="headerlink" title="2024-08-23  21:39  夏 🐫"></a>2024-08-23  21:39  夏 🐫</h6></div><div class="circle-black"><p>白开水的日子里很难不去思考人生的意义。似乎怎么样都行，都能活下去，同时怎么样都不行，摆不脱疑惑。束缚和自由，就是一个意思。记忆是骗局，梦想已是过去，活在当下是剥不掉的糖衣。都想开心一点，前提是持续的痛苦。佛学追求的涅槃，难。除此之外，找不到更好的手段支撑白昼的苏醒。苦笑它也是笑的一种，不是吗。</p></div><br><div style="text-align: left"><h6 id="2024-07-25-01-14-夏-☁️"><a href="#2024-07-25-01-14-夏-☁️" class="headerlink" title="2024-07-25  01:14  夏 ☁️"></a>2024-07-25  01:14  夏 ☁️</h6></div><div class="circle-blue"><p>超级开心，今天能把《卡拉马佐夫兄弟》看完，在此之前读过陀思妥耶夫斯基的《涅朵奇卡》和《地下室手记》，在读《卡拉马佐夫兄弟》的过程中才越来越体会到陀思妥耶夫斯基的牛逼。越看越想跪服。</p><p>以前读过的所有小说，都不过是这书的其中一个点。</p><p>这本书把关于陀思妥耶夫斯基所了解熟悉的人性所有的点全面地讨论。</p><p>是我活到现在，读过的最牛逼的小说。</p></div><br><div style="text-align: left"><h6 id="2024-07-07-23-53-夏-🔥"><a href="#2024-07-07-23-53-夏-🔥" class="headerlink" title="2024-07-07  23:53  夏 🔥"></a>2024-07-07  23:53  夏 🔥</h6></div><div class="circle-black"><p>流水爱对山峰说<br>我的生命将是覆盖，会是遍布<br>山峰理解不了，山峰<br>只能拥有，向上生长——<br>的资格</p><p>《向上》nino</p></div><br><div style="text-align: left"><h6 id="2024-06-22-21-15-夏-🌧️"><a href="#2024-06-22-21-15-夏-🌧️" class="headerlink" title="2024-06-22  21:15  夏 🌧️"></a>2024-06-22  21:15  夏 🌧️</h6></div><div class="circle-black"><p>不必担心<br>城市始终陌生<br>身边总是人来人往</p><p>相识已久的<br>只有这场雨<br>持续整整<br>一星期</p><p>《雨》nino</p></div><br><div style="text-align: left"><h6 id="2024-06-11-22-50-夏-☔️"><a href="#2024-06-11-22-50-夏-☔️" class="headerlink" title="2024-06-11  22:50  夏 ☔️"></a>2024-06-11  22:50  夏 ☔️</h6></div><div class="circle-blue"><p>来上海一年了。这一年，我的初中同学“悠米”和大学同学“阿远”始终陪着我，不厌烦地包容我时不时的情绪泛滥，也许他们两个都不这么觉得，是因为我知道他们两个和我在一个城市，我才能在上海踏实地回归社会，踏实工作下来。</p><p>怎么就这么巧呢，他们两个不约而同告诉我下个月要回川渝工作了。我为他们高兴的同时，我意识到我在上海没有同学了。</p><p>我居然在哭。我想起来我刚来上海，他们为我接风、一顿顿约饭、看的那些电影、相约旅游。</p><p>我想起了李叔同之所以写下了《送别》，也是因为朋友的聚散无常。</p><p>我这个以前总被评价“冷漠”、“没有感情”、”不接地气“的人，居然一直在哭。</p><p>以前都是我离开别人，原来被其他人离开，是这种感觉。</p><p>“悠米”和“阿远”让我有了这种感觉。我真的在乎他们的存在。</p><p>妈的，今晚就再放肆地、矫情地、再哭一会儿。祝我们越来越好。</p><p>“天之涯，地之角，知交半零落。”</p></div><br><div style="text-align: left"><h6 id="2024-03-03-14-25-春-☀️"><a href="#2024-03-03-14-25-春-☀️" class="headerlink" title="2024-03-03  14:25  春 ☀️"></a>2024-03-03  14:25  春 ☀️</h6></div><div class="circle-black"><p>多言数穷，不如守中。</p></div><br><div style="text-align: left"><h6 id="2024-02-24-22-19-春-🧊"><a href="#2024-02-24-22-19-春-🧊" class="headerlink" title="2024-02-24  22:19  春 🧊"></a>2024-02-24  22:19  春 🧊</h6></div><div class="circle-blue"><p>过完年，就感觉自己戾气很重，烦躁不安。应该是上班快一年的原因。</p></div><br><div style="text-align: left"><h6 id="2024-02-08-00-14-冬-🧊"><a href="#2024-02-08-00-14-冬-🧊" class="headerlink" title="2024-02-08  00:14  冬 🧊"></a>2024-02-08  00:14  冬 🧊</h6></div><div class="circle-black"><ul><li>差不多下午两点醒来，然后就在床上写代码到现在。回过神来发现深夜12点。夜晚安静地让我很失落。但又好像是幸福的失落。</li><li>已经连续四天，每天至少全神贯注写6小时代码了。</li><li>今年过年我很忙，忙着给自己打工，做一件有趣的事。<br>所以大概率是每天都在编程，从兔年到龙年。🍻</li></ul></div><div style="text-align: left"><h6 id="2024-01-23-20-16-冬-🧊"><a href="#2024-01-23-20-16-冬-🧊" class="headerlink" title="2024-01-23  20:16  冬 🧊"></a>2024-01-23  20:16  冬 🧊</h6></div><div class="circle-black"><p>《涅朵奇卡》，看完的第一本陀思妥耶夫斯基的书。和王小波说的一样，前半部分震撼。我觉得自己看这本书，有点晚，要是更早一点看到就好了。</p></div><br><div style="text-align: left"><h6 id="2024-01-02-23-10-冬-☀️"><a href="#2024-01-02-23-10-冬-☀️" class="headerlink" title="2024-01-02  23:10  冬 ☀️"></a>2024-01-02  23:10  冬 ☀️</h6></div><div class="circle-blue"><p>好像2023还没结束，2024就已经开始了。<br>是我其实还没做好准备吗？</p></div></div>]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/fragments/2024/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>碎片-归档</title>
      <link>https://www.ninojay.top/fragments/archive/</link>
      <guid>https://www.ninojay.top/fragments/archive/</guid>
      <pubDate>Tue, 23 Jan 2024 12:25:10 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>像是小时候的日记。我想，人是能随着年龄增长、某些特殊经历，思想发生改变，进而体现到行为也一并体现变化的生物。当然，万千变化之中，又保有证明我是为我的特定东西。回过头看，原来很多事都能够发生一些变化。原来还有些事始终保持原样。一切都很正常。</p><blockquote><p>以下过去的言论，轻松看待。</p></blockquote><table><thead><tr><th align="center"><a href="/fragments/2026/">2026-ing</a></th></tr></thead><tbody><tr><td align="center"><a href="/fragments/2025/">2025-游荡中国、回归主题</a></td></tr><tr><td align="center"><a href="/fragments/2024/">2024-吃喝玩乐、情绪起伏</a></td></tr><tr><td align="center"><a href="/fragments/2023/">2023-回归社会、适应社会</a></td></tr></tbody></table></div>]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/fragments/archive/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>What Was I Made For</title>
      <link>https://www.ninojay.top/2024/What-Was-I-Made-For/</link>
      <guid>https://www.ninojay.top/2024/What-Was-I-Made-For/</guid>
      <pubDate>Sun, 21 Jan 2024 18:08:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><div align="middle"><iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width="330" height="86" src="//music.163.com/outchain/player?type=2&amp;id=2063623629&amp;auto=1&amp;height=66"></iframe></div><p>都假。</p><p>深夜里，话，说给自己听。</p><p>想，多少事可以写在这里。</p><p>来去，主动浸入悲伤的容器，享受。</p><p>迷狂，腻歪，流露。</p><p>命运。</p><hr><p>他想，有这么一个人。最近帮他翻了衣领，夸赞他的衣品，劝他不要自暴自弃，是一个这么帅气的男性。</p><p>临别，拥抱。走在回家的大街上，大寒节气的风，窒息，手机一则消息：早点休息，过几天再来看你。</p><p>还是难过，他那天晚上说了很多谎，仍得到关心。</p><p>还有这么一个人，带走了他买的第二本《斜阳》。这人说：这个书名就有伤感的味道，夕阳的感觉。他惊讶，只是喜欢斜阳两字，原来在其他人眼里的，还是悲伤。</p><p>这人上一次和他见面尾声，这样说过：你看看现在的自己呀，笑起来多么灿烂阳光，我是这么想的，等我有钱了，我就帮你……</p><p>他坐在一旁，微笑随着这个人的话，越来越大方，他嘴上说：我记住了。他心里面想：我今天是最幸福的人啊。</p><p>…</p><p>又一个人，总是对他说：可以，没事，愿意。</p><p>…</p><p>又一个人，对他说：你不要伤害我。</p><p>…</p><p>讨厌冬季，满屋子塞满孤单的痕迹。</p><p>明明，这孤单。</p><p>主动的追寻。</p><p>好几年，好几年。</p><p>总是在冰冷的情绪记起，他们不断强调他的那些好。</p><p>想，这些人对他的印象。</p><p>都真吗。</p><hr><p>大声地笑，偷偷地哭。</p><p>继续活，让我们，阳光向上。</p><p>但我，还是更爱悲伤。</p><hr><center><p> I used to float, now I just fall down<br> I used to know but I’m not sure now<br> What I was made for<br> What was I made for?<br> Takin’ a drive, I was an ideal<br> Looked so alive, turns out I’m not real<br> Just something you paid for<br> What was I made for?<br> ‘Cause I, I<br> I don’t know how to feel<br> But I wanna try<br> I don’t know how to feel<br> But someday, I might<br> Someday, I might<br> When did it end? All the enjoyment<br> I’m sad again, don’t tell my girlfriend<br> It’s not what she’s made for<br> What was I made for?<br> ‘Cause I, ‘cause I<br> I don’t know how to feel<br> But I wanna try<br> I don’t know how to feel<br> But someday I might<br> Someday I might<br> Think I forgot how to be happy<br> Something I’m not, but something I can be<br> Something I wait for<br> Something I’m made for<br> Something I’m made for</p></center></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/">情绪</category>
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/2%E7%BA%A7%E6%83%85%E7%BB%AA/">2级情绪</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      <category domain="https://www.ninojay.top/tags/%E6%AD%8C%E6%9B%B2/">歌曲</category>
      
      
      <comments>https://www.ninojay.top/2024/What-Was-I-Made-For/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>《这本书能让你戒烟》-（英）亚伦·卡尔</title>
      <link>https://www.ninojay.top/2024/This-book-will-help-you-quit-smoking/</link>
      <guid>https://www.ninojay.top/2024/This-book-will-help-you-quit-smoking/</guid>
      <pubDate>Sat, 20 Jan 2024 08:45:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>这本书是我在去年（2023）12月28日看完的。来到2024年初，机缘巧合和一些身边人聊到了这本书，居然有蛮多人知道且看过，甚至在他们身上产生了真实的积极作用-即戒烟成功。</p><p>所以，这两天心里面总有这个念想，记录下这本书在我脑子里留下的东西。</p><hr><p>先声明一个背景：本人并不抽烟，上小学期间和小伙伴偷偷吸过几口，并不觉得好抽，只觉得呛，难闻，且当天就被父亲发现，痛骂一顿，随后成长至今也对烟提不起兴趣。而我的父亲吸烟的时间很长，时常扔给我钱，让我去小卖部买一包烟给他，在我快上初中的年纪 ，他通过大量嚼绿箭口香糖最终戒烟成功，十几年过去，对烟失去了兴趣。</p><p>那么我是怎么知道这本书，且感兴趣阅读完的呢？</p><p>目前在上班的公司，我和同事下午有时会去办公楼下的小河边透气。这时他会拿出随身的烟，边抽烟边跟我扯淡，聊聊家常。有一天自然就聊到了抽烟的话题，他说其实自己因为一本书戒过烟，并且一年多的时间都没有再吸烟，过程一点都不痛苦。</p><p>我听到这儿就来了兴趣，追问：“这书这么厉害？”</p><p>他说：“是的，这书的思路很不一样，作者是让你一边抽烟一边看这本书，看完了过后，你就不想抽烟了。”</p><p>听到他新奇的描述，我赶紧叫他把书名告诉我，这么有意思的书得看呀。</p><p>书名叫：《这本书能让你戒烟》。</p><hr><p>贯穿全书的主题是：烟是一种毒品。</p><p>既然是毒品，那么就百害而无一利。作者一开始讲述这个事实的时候，没有立马就说，从今天起不要接触烟，而是从人性的角度出发，鼓励你阅读的过程中继续抽烟。再接着进一步阐述烟为什么是毒品。（据我分析，这样会让读者更有兴趣和信心读下去）</p><p>从客观事实谈起，烟里让我们上瘾的物质，即尼古丁。作用于人体内，血液里的含氧量会减少，思维活动减慢，脑子更容易不清晰。烟龄久的人身体上很容易发现一个现象，一旦有了伤口，愈合的速度也会减慢…</p><p>看到这里首先让读者明确知道烟对身体的客观负面影响。接着谈论，抽烟的瘾是什么？</p><p>烟是一种毒品，烟瘾无非是戒断反应。作者用了一个很有意思的比喻。这就好比，我们人主动去穿上一双尺码小的鞋子。难受，行走不便，痛苦持续了几个小时，当我们脱下这双鞋子，发出感慨：好舒服啊。舒服了一阵后，又把这双鞋子穿上。</p><p>作者说，烟对人产生的戒断反应也是如此。问题的关键在于 ，我们人本来就不需要通过抽烟来获得愉悦。抽烟的人，点燃那支烟，主动把尼古丁、焦油这些有害物质吸入肺部，只满足了戒断反应。这支烟一旦抽完，过一段时间 ，身体又会发出信号：需要尼古丁！然后又开始吸烟。</p><p>依然是那个问题，人真的需要尼古丁吗？作者本身有长达数十年的烟瘾，他说，很多吸烟者说离不开香烟，烟能带来种种好处，但在他几十年的烟龄中，他和身边抽烟的人都无时无刻想摆脱香烟的控制，抽烟的人都体会过公众场合抽烟被歧视的感受，并且从自己的双眼看到，那些不吸烟的人更加幸福健康。</p><p>谈到这里，我阅读该书记忆深刻的有两个有意思的事情：一个是想戒烟的人会说自己没有意志力。另一个是到底该如何戒烟。</p><p>作者说，其实抽烟的人比不抽烟的人，更有意志力。</p><p>因为我们一开始都不抽烟，第一次闻到烟味不可能会有人类觉得好闻，那些意志力薄弱的普通人就立马远离了。但是我们这些被社会环境、娱乐宣传暗示鼓励，让我们强迫自己学习抽烟，依赖上了尼古丁这个毒品。</p><p>表面上，所有人甚至于烟的包装都传达烟有害，但是电影里大量男主女角帅气的吸烟画面，身边人也都在吸烟，自己不吸烟好像没法融入，而且他们好像都在享受，种种因素，让一些人强迫自己有了烟瘾。</p><p>所以，吸烟的人其实意志力更加强大，强迫自己喜欢上一开始就厌恶的东西。</p><p>既然他们意志力更加强大，那为什么总是戒烟失败呢？因为尼古丁是毒品，毒品，靠意志力是很难戒掉的。</p><p>所以到底该如何戒烟？作者列举了很多常见的戒烟方法，这里面就包括我父亲使用的嚼口香糖。但是作者提到这些方法，都是反人性的，说白了，也是身体强迫自己，脑子里面甚至在每天强调：今天我已经戒烟第十天、第二十天、第三十天…</p><p>这种意志力戒烟法，坚持时间足够长是有可能戒烟成功的，只不过中途很容易，且一旦破功，造成的反噬也相当大！极有可能的事实是，你知道且在强调今天是戒烟的第几天，就在想今天可以抽一支烟，想各种理由支持自己，比如说检验下自己是不是已经讨厌烟了。这一支，就是复吸的开始。</p><p>所以作者的终极目的，就是让读者在脑海中，构建对烟的理性认识，并且一旦戒烟，就要知道，下一支烟，将让戒烟这件事前功尽弃。</p><p>所以作者在书后半部分说，你现在拿出一支烟，吸这最后一支吧。有了前面对烟的各种理性认识 ，全身心感受这最后一支烟，你会对烟产生厌恶。接着从当下就对自己有这样的心理暗示：我已经戒烟了。</p><p>不需要每天明确自己持续了多少天没抽烟。而是从下一秒钟，就明确这个念头：我已经不抽烟了。抽烟对我没有任何好处。</p><p>在我看来，就是把明面上主动但实际上被动的戒烟，变为真正的理性的全身心的主动戒烟。</p><p>ps：我写的只是一篇感想，更何况本人并不吸，而原书有自身的排版结构，<strong>阅读原书才会让读者有真正的戒烟正向感受。</strong></p><hr><p>我想再谈论自己为什么要看这本书。除了因为同事的新奇描述，一开始我也想把这本书的“戒”方法运用在其他自己的坏习惯上。比如，我咬指甲，程度很严重，指甲被我咬的很短，本来就不好看的肉手，更加不好看了。</p><p>这个坏习惯快十年了，我每年心里面都说 ，今年开始不要再咬指甲，然后每天默默数数，今天是我不咬指甲的第几天，但是一遇到焦虑的情况，我就无意识，也有可能是有意识的让自己又咬指甲，因为我实际上是被动不咬指甲，一旦我咬指甲反而加大了（反叛的）愉悦。所以就这样咬指甲到去年。 </p><p>我看完这本书后，2023年的年末，有一天我就对自己说：我已经不咬指甲了。</p><p>现在是2024年的1月20日，10根手指，我已经有7根手指长出了我很久没见到的白色指甲。而且我一旦无意识把手靠近嘴，我会条件反射想起：我已经不咬指甲了。我很自豪，很骄傲。</p><p>这是一种正向的情绪。</p><p>我已经不再抽烟了 ！我已经不再咬指甲了 ！所以把烟或指甲放我嘴边，我也不感冒。因为我不再是傻子，百害而无一利嘛。</p><hr><p>“系统性看一本书带来的感受还是不一样呀。”<br>“确实是。”<br>“你是怎么知道这本书的？”<br>“我在图书馆无意间发现的。”<br>“那你现在怎么又在吸烟了 ？”<br>“唉，公司今年来了个新同事，天天问我要不要来一根，要不要来一根，没忍住，这一根就让我又沦陷了。“<br>”环境的副作用呀…“<br>”应该…还是我自己想吸烟，其实我知道这一根的后果，可能当时对生活无所谓了吧。”</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E5%A3%B0%E5%85%89/">声光</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E9%98%85%E8%AF%BB/">阅读</category>
      
      <category domain="https://www.ninojay.top/tags/%E6%96%B9%E6%B3%95%E8%AE%BA/">方法论</category>
      
      
      <comments>https://www.ninojay.top/2024/This-book-will-help-you-quit-smoking/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>过往年份首页归档</title>
      <link>https://www.ninojay.top/past-years/</link>
      <guid>https://www.ninojay.top/past-years/</guid>
      <pubDate>Tue, 02 Jan 2024 14:40:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>每一年的首页归档。</p><hr><h2 id="2025"><a href="#2025" class="headerlink" title="2025"></a>2025</h2><p>🎯项目：</p><ul><li>《半导体物理基础》、《半导体制造技术导论》</li></ul><br><p>🌟期待：</p><ul><li>出国玩🇯🇵🇲🇾🇹🇭</li><li>文娱100：电影🎬、书籍📚、剧院💃</li></ul><br><p>💪年度任务（0/1）：</p><ul><li>投稿</li></ul><hr><h2 id="2024"><a href="#2024" class="headerlink" title="2024"></a>2024</h2><p>🎯项目：</p><ul><li><del>leetcode300道</del></li><li><del>阅读《卡拉马佐夫兄弟》</del>（2024.7.25往前的18天）</li></ul><br><p>🌟期待：</p><ul><li><del>看海（厦门实现）</del></li><li><del>《我的天才女友》第四季</del></li><li>出国玩一次</li></ul><br><p>💪年度任务（2/2）：</p><ul><li><del>投稿</del></li><li><del>跳槽</del></li></ul><p><a href="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/a4color/tree_bird.jpg" title="安静地飞吧" class="gallery-item" style="box-shadow: none;"> <img src="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/a4color/tree_bird.jpg" alt="安静地飞吧"></a></p><hr><h2 id="2023"><a href="#2023" class="headerlink" title="2023"></a>2023</h2><p>项目：</p><ul><li><del>博客网站搭建：最终定型为A4纸风格</del></li><li><del>开源博客主题</del> <a href="https://github.com/HiNinoJay/hexo-theme-A4.git">hexo-theme-A4</a>（正在活跃维护）</li><li><del>系统阅读奥威尔、卡夫卡</del></li><li>写30篇文章，不包括摘抄（18/30）</li></ul><br><p>期待：</p><ul><li><del>hexo官方收录hexo-theme-A4</del></li><li><del>玩《塞尔达·王国之泪》</del></li><li><del>2023 GitHub star数获得100个</del></li></ul><br><p>年度任务（1/2）：</p><ul><li><del>回归社会，找到工作</del></li><li>去看海</li></ul></div>]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/past-years/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>2023的结束和2024的开始</title>
      <link>https://www.ninojay.top/2023/the-end-of-2023-and-the-beginning-of-2024/</link>
      <guid>https://www.ninojay.top/2023/the-end-of-2023-and-the-beginning-of-2024/</guid>
      <pubDate>Sat, 30 Dec 2023 16:00:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>带着焦虑的心，还是来写下这点东西。2024的主题就是：<strong>继续焦虑，直面恐惧</strong>。</p><h2 id="2023"><a href="#2023" class="headerlink" title="2023"></a>2023</h2><p>2023最后一条朋友圈文案：</p><blockquote><p>今年在老家玩了半年，回归社会上班半年。<br>就这样吧。</p></blockquote><p>就这样吧，是呀，还能怎么样呢。已经体验了足够多的事情，真正成为了一名社畜，精神也开始麻木。除此之外，和我的朋友们团聚，开始有了节假日的概念。</p><p>每一次的相聚，我总在朋友面前这样感慨：好神奇呀，我现在的生活，6月份之前我还躺在家里呢。同样，也渐渐又有了一些反思，在和朋友探讨。比如说最近的一次，我和朋友这样分享：我原来在大公司每天晚上十点过到家，只想躺在床上，现在小公司可以六点下班到家，可我还是只想躺在床上休息。所以其实，还是我这个人太懒了。</p><p>我个人虽然觉得2023自己的懒惰，浪费了很多珍贵的时间，内心里却也并不后悔这些时间的浪费。因为我知道所有的事情对我都是新鲜的：初次全身心体验工作和生活的交织，当好一名打工人的角色，安排下班后的时间，处理口袋有了一点闲钱后的消费欲望。</p><p>也就是说，同龄人早已经适应了两年的社会人身份，2023我才刚刚适应呀。所以，我虽然懒惰，但是我收获了懒惰带来的休闲快乐，不亏，很值，哈哈哈哈。多么快乐呢？12月31日，白天我和大学同学一起旅游度过，我对大学同学说：“我才来上海6个月，好像去过的地方，比已经在上海待了两年多的你还多。”大学同学点了点头：“确实。“</p><p>写到这里，我突然想到，6月开始打工以来最大的两次痛苦，都是因为身体上的不舒服。一次是因为吃坏了肚子，肚子持续疼到凌晨的我差一点打120。另一次是因为寒潮来袭，感冒发烧持续了四五天，甚至发烧的第二天在床上精神产生了幻觉。很难忘的两次经历，让我切身体会独自在大城市打工的不容易，稍微严重一点的病，没有人照顾，夸张了说，死在房间里都没人知道。我撑到身体恢复后，跟同在上海的初中同学说起来，朋友说，我随时可以来照顾你，下次可以直接告诉我。<strong>我应该学会麻烦朋友。</strong></p><p>快乐，结束于痛苦的开始，也开始于痛苦的结束。一些值得纪念的快乐：github开源A4在几乎没有宣传的情况下，预料之内得到了超过100star；我回归了社会，兑现承诺来到了喜欢的上海工作；吃喝玩乐花费了1个w；阅读了27本书；在上海，我有起码三个对我温柔的朋友，客观来说并不孤单。</p><p>我选择来上海，朋友问过我为什么。<br>”我喜欢上海带给我的疏离感，你明白吗。“<br>”我明白。“</p><blockquote><p>对了，2023还有一些没达到目标，比如写30篇文章。我本人没有什么执念，没达到，就说明自己的内驱力不强，明年继续努力就行，放过2023的自己～再狠狠对待2024的自己！</p></blockquote><h2 id="2024"><a href="#2024" class="headerlink" title="2024"></a>2024</h2><p>对我来说，吃喝玩乐，只是一种体验。我经常想，既然我活到了今天，那么我昨天，前天，前几个月吃的一次大餐还是街边苍蝇馆，去没去过这个名胜古迹，本质上都一样。因为我活到了今天嘛，过去的都已经过去，所有的经历都被拉平。真正重要的是，沉淀下来的，属于自己的记忆。留不下深刻记忆的吃喝玩乐，也只是在消磨时光。</p><p>2024，我只想踏实一点。减少无意义的吃喝玩乐。<strong>直面恐惧，继续焦虑。</strong></p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/">情绪</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      
      <comments>https://www.ninojay.top/2023/the-end-of-2023-and-the-beginning-of-2024/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>《山音》-（日）川端康成</title>
      <link>https://www.ninojay.top/2023/sound-of-the-mountain/</link>
      <guid>https://www.ninojay.top/2023/sound-of-the-mountain/</guid>
      <pubDate>Sat, 09 Dec 2023 08:51:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h2 id="之感"><a href="#之感" class="headerlink" title="之感"></a>之感</h2><p>这是我完整读过的第一本川端康成的小说。所谓日本这一代的“物哀”之美，随着这段时间平静的心，也真正通过安静的阅读感受到了。</p><p>阅读过程是这样：纸张一页页翻过去，文字映入眼帘，内心品尝场景里的滋味，右手不经意勾画，在留白处不断写下“细腻”、“细腻”、“细腻”。也就是说，我通过这本书，凭借自己的真实感受，给第一次接触的川端康成贴上了“细腻”之标签。</p><p>回想所看过的日本文学，我又觉得，这一份细腻，也是整个日本文学在我眼的一个大标签。细腻，是日本文学永远带给我的吸引力。当然，事实上，其他国家的文学也必然有细腻的体现，但是日本文学的细腻对我是有特殊的意味。</p><p>我最为喜欢日本文学的是，随着事发生，人内心世界微观描写，内心里情绪流动，直白又富有诗意描述出来。又加上都是亚洲文化，理解起来格外触动。</p><p>书里发生的事，在现实中也并不稀奇，稀奇的是，每个人对待事情发生的情绪细微变化让我在一个大平面清楚的看到。</p><p>看到最后，我总是得出一个相同结论：<strong>人，实在是复杂。</strong></p><blockquote><p>奇怪，我又觉得这不光是日本文学带给我的感受，好像是全世界文学带给我的感受，为什么特意要说日本文学呢。</p><p>我想，可能还是因为，更容易感同身受吧。</p><p>最近，心平静下来了，但是脑子有些许乱。</p></blockquote><p>《山音》，很适合现在内心终于平静下来的我，静静地在一个周六下午，阅读完毕。</p><h2 id="摘抄"><a href="#摘抄" class="headerlink" title="摘抄"></a>摘抄</h2><ul><li>女佣加代在这个家里待了半年，只给信吾留下在门厅里为主人送行的记忆。想到这里，信吾感到自己的人生在逐渐消逝。</li><li><strong>蝉也会害怕做噩梦吗？</strong></li><li>月夜深沉，可以感受到夜的深沉向着一侧一直延续到远方。</li><li>还可以听到夜露从一些枝叶滴落到另一些枝叶上的响声。</li><li>或许是没看见本应一道回家的修一，为了掩饰对他的一份挂念吧。</li><li>婚后漫长的岁月未必会为刚开始时的情感所限。</li><li>信吾和保子对于姐姐的事闭口不提，但谁也没有将她忘记。</li><li>“用一个壶烧海螺，能暗示公婆应有的歉意吗？”信吾一个人嘀咕着。</li><li>信吾猛然一惊。自己把这件事忘了，真是没救了呀。听到山的声音，怎么就没想起来这件事呢？</li></ul><hr><ul><li>“相原认为，只要我没钱就不会逃走，所以钱包里什么也没有。”房子说。</li><li>信吾由其秩序整然的体量蓦然联想到人类的大脑。同时，又由其高涨着自然力的体量，猛然想到高大男性的特征。</li><li>莫非是菊子来到身旁，才使他泛起这些奇怪的想象？</li><li>到了这个年纪，亲友大多故去，梦中出现逝者，或许是很自然的事。</li><li>他只是记住了感觉上的失望罢了。</li><li>信吾知道，问题不在于蝉。</li><li>自己的亲生骨肉，不但不能使自己满意，他们自己在这个世上也活得很不容易。信吾感到，亲骨肉的重负将要降临到自己头上。看到年轻的儿媳妇，他自然觉得很安心。</li></ul><hr><ul><li>看起来，菊子似乎也一边唱着摇篮曲，一边沉浸在少女时代的回忆之中。</li><li>“我说的没错，您过去不喜欢房子，只疼爱修一一人，不是吗？您就是这么一个人！眼下，修一外头有相好的了，您倒什么话也没有了，反而莫名疼爱菊子，这太无情了。那孩子为了不使公公难堪，连嫉妒心都不敢有，真叫人忧郁。<strong>台风要能把这些忧郁刮走，那该多好。</strong>”</li><li>明明都是自己的女儿和外孙女，做父母的怎么会有这样的感受呢？太可怕了，我是受了您的影响呀！</li><li>这么说，保子姐姐去世时正赶上秋天，信吾思忖。信浓的秋天来得早。</li><li>红叶烂漫，供在佛坛上，似乎有些太合宜了。</li><li>信吾在少年时代爱慕过保子的姐姐，他和保子结婚已经三十多年了，那灼灼艳红的枫叶似乎化作一道古老的伤疤，始终闪现于头脑一隅。</li></ul><hr><ul><li>信吾感到，<strong>菊子的心上似乎有着什么空白。</strong></li><li>她好像说着什么，但因为流水声，信吾没听清楚。</li><li>长年以来，保子不曾为那个家付出一分一文，同时也没有获得一分一文。</li><li>忘却和丧失，信吾走路时可以从后勃颈里感觉到。</li><li>就算如此交心，也无法获得对方任何帮助，自己也不愿增加这个麻烦。谈论一路，不过是最后走到车站，挥手告别。</li><li>信吾以为，自己仅仅羞辱英一，蹂躏一下她的感情，心里就很沉重。其实这也等于羞辱了自己和儿子修一。</li></ul><hr><ul><li>梦中同女人相拥，很是可厌，不过那时的自己保持着衰朽容貌而重焕青春，浑然天成。</li><li>知道相互间的青春时光，不仅包含亲密与怀念，同时也流露出一种对于老朽的自私世故的厌恶。</li></ul><hr><ul><li><strong>房子既没有获得精神创伤的治愈，也没有建立起生活的根基。</strong></li><li>修一竟然将妻子的事告诉绢子和英子，其原因也来自于缺乏谨慎的麻木不仁。</li><li>然而，正是因为修一的麻木与残忍，反而催发了菊子作为女人的情欲。</li><li>所谓“寒樱”，是指年末开始绽放的樱花。信吾觉得，仿佛另一个世界的春天来到了。</li></ul><hr><ul><li><strong>不是自然出现的奇迹就不会持续太久。</strong></li><li>信吾说着笑了，他的话和笑都没有发出声音，只有自己听得到。</li><li>老人一旦谈起其他老人，总是轻薄而又残酷。信吾总觉得不是滋味。</li><li>在信吾看来，这种良心与善意，来自未婚女子的那份清纯。</li><li><strong>“没有个平静的去处，平静不下来啊。”</strong></li></ul><hr><ul><li>人在痛苦苦闷之极，声明垂危之际，才会像幼儿唤母那样悲切呼喊。那是发自罪念底层的呼唤。</li><li>他对儿媳菊子一片温情，其根源依然是为了自己的亲生儿子。</li><li>菊子即是修一的受害者，又是修一的赦免者。</li><li><strong>但所谓夫妻，也是一座阴森可怖的沼泽，无限度地原谅和吸纳对方的丑行。</strong></li><li><strong>忘记的梦，其后不会再来。再有，阅读这种故事产生的感情，也属于这场梦。</strong></li><li>总之，梦中出现了善意。</li><li>一个能够听自己倾诉的丈夫，对于女人来说至关重要。</li><li>亲生女儿也不会对父亲袒露一切。</li><li>“不不，即便爸爸您什么也不说，但我心里明白。您对我知冷知热，疼爱我，我就是靠着这份温情过日子的。”</li></ul><hr><ul><li>信吾忖度着，拣四月的一个星期天，围在餐厅里一边观樱花，一边听撞钟，那是多么悠闲自在啊。</li><li>一想到人还活着却被社会遗忘的那种悲惨境况，就不想再熬到那么时候了。</li><li>生而为人，最好是在众人的爱中消逝，为家人深深的爱所包围，在众多朋友、同辈及晚辈的友情拥抱之中离去。</li><li>一个人单独死时，怨恨之事当如山积。</li><li>是因长年相守而变得一心同体，还是因为失去了个性和遗言呢？</li><li>保子说：“您只顾一门心思疼儿媳妇，又不肯为她解决难题，对房子也是这样。”</li><li><strong>花开满树，讨人欢心。</strong></li><li>那白色的呼气是少女的温柔与芬芳。</li></ul><hr><ul><li>她很想要个孩子，而你偏不让她生。你这样就等于扼杀了菊子的灵魂。</li></ul><hr><ul><li>松树已经不单是松树了，它们已和菊子堕胎的事缠绕在一起。也许以后上下班途中每每看到这两颗松树，信吾就不由联想起儿媳妇的事。</li><li>“能行，我想早点见到您，免得直接回家，太难为情啦。”</li><li>顺其自然、随意生长的树木的姿态，使得信吾获得了丰盈的感动。</li><li>那高耸的绿色所蕴含的格调与力量感真切地传到给了信吾，大自然为他和菊子洗涤了郁闷。</li><li>广阔的枝叶仿佛要把他们俩抱住隐藏起来。</li><li>信吾对儿子精神上的麻木和颓废大惑不解，他本人似乎也深陷泥沼之中。他害怕黑暗的恐怖。</li><li>信吾感到英子的良心与善意。他曾经认定英子神经大条，因为她请绢子介绍自己到同一家店里工作。岂不知神经大条的人是修一和他自己。</li></ul><hr><ul><li>这些在意料之外吐露新芽的纤弱幼枝，多年后犹如新宿御苑树木的底枝一般，向四方伸展。</li><li>倘若长条垂挂于地、繁华缀满枝头，那该是多么豪奢的景象！</li><li>俗话说，一场雨浇得地基更瓷实了。</li><li>全家人一起朝他望着，似乎都在关心电动剃刀的效果。</li><li>较之淫乱，这更显丑恶。这就叫衰老的丑恶吧？</li><li>在战争的压抑之下，无法恢复原来的生命力，考虑问题的方法也被战争逼入偏狭的常识。</li><li>“谁知道呢，被我的机关枪射中的人也许死了吧。但可以说，机关枪不能算我开的火。”</li></ul><hr><ul><li>“<strong>这就是所谓的时间能解决一切吗？</strong>”信吾嘀咕道。</li><li>失掉的婴儿的生命，也在菊子体内增长，信吾一边想象着，一边跨出家门。<blockquote><p>很多人只是活着，从不反思。</p></blockquote></li><li>“剩下来的是我孙子吗？”信吾自言自语。</li></ul><hr><ul><li>作为女人希望有个孩子的悲切愿望也十分强烈。<blockquote><p>我的难过谁又知道呢？</p></blockquote></li><li><strong>他想，所谓幸福，或许就是转瞬即逝的渺茫之物。</strong></li></ul></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E5%A3%B0%E5%85%89/">声光</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E9%98%85%E8%AF%BB/">阅读</category>
      
      <category domain="https://www.ninojay.top/tags/%E5%B0%8F%E8%AF%B4/">小说</category>
      
      <category domain="https://www.ninojay.top/tags/%E6%91%98%E6%8A%84/">摘抄</category>
      
      
      <comments>https://www.ninojay.top/2023/sound-of-the-mountain/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>归零</title>
      <link>https://www.ninojay.top/2023/zero/</link>
      <guid>https://www.ninojay.top/2023/zero/</guid>
      <pubDate>Sat, 14 Oct 2023 12:45:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><div align="middle"><iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width="330" height="86" src="//music.163.com/outchain/player?type=2&amp;id=1334667454&amp;auto=1&amp;height=66"></iframe></div><br><center><p>归零 - 林忆莲</p><p>词：常石磊</p><p>曲：常石磊</p><p>编曲：常石磊</p><p>制作：常石磊/恭硕良</p><p>这世界 从来没有如果</p><p>在后悔之前 让懵懂承受</p><p>这世界 从来都在改变</p><p>在明亮之前 跟黑暗蔓延</p><p>还有什么能再回来</p><p>还有什么人在未来</p><p>既然 未知 是唯一的期待</p><p>索性将平淡劈成干柴</p><p>Reset Reset Reset</p><p>点燃眼前的徘徊</p><p>如果重生 能真实的存在</p><p>此刻将一切归零再来</p><p>Reset Reset Reset</p><p>梦想就等于未来 未来 未来</p><p>这世界 从来没有如果</p><p>在后悔之前 让懵懂承受</p><p>这世界 从来都在改变</p><p>在明亮之前 跟黑暗蔓延</p><p>还有什么能再回来</p><p>还有什么人在未来</p><p>既然 未知 是唯一的期待</p><p>索性将平淡劈成干柴</p><p>Reset Reset Reset</p><p>点燃眼前的徘徊</p><p>如果重生 能真实的存在</p><p>此刻将一切归零再来</p><p>Reset Reset Reset</p><p>梦想就等于未来</p><p>未来 未来 未来</p><p>未来</p></center></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E5%A3%B0%E5%85%89/">声光</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E6%AD%8C%E6%9B%B2/">歌曲</category>
      
      
      <comments>https://www.ninojay.top/2023/zero/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>2023上半年小结</title>
      <link>https://www.ninojay.top/2023/2023-summer/</link>
      <guid>https://www.ninojay.top/2023/2023-summer/</guid>
      <pubDate>Mon, 04 Sep 2023 12:13:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>从我6月15日回归社会到现在，情绪由散发正能量转而跌宕起伏转而趋于平静。工作、人际关系、内心世界，也都陷入了一种轻微的麻木。这种麻木不是遭受社会打击的无奈。恰恰相反，回归社会对我实在是太过于游刃有余，顺畅地以至于让我觉得在家躺了两年后重新出发，这个社会本身却没有一点点变化，我很失望。我的心对社会麻木，对社会里的我麻木。这份麻木促使我不得不想起来，互联网上我还有一片天空。</p><hr><p>先说人际关系吧，上半年阅读完青鸟出版社的全系列丛书，这套书让我对正向的情感充满期待，重燃信心。渲染的纯爱风画面印在了我总是轻易对其他人失望的心上。我开始反思过去自己对待情感的悲观，回归社会前，也默默下了一个决心，接下来要试着认真对待这些年总是包容我的朋友。</p><p>带着这样的心情，我离开了家，来到了上海。将近三个月过去，喜欢上海，喜欢在上海的自己。前两个月赶上了这家公司的系统重构时期，几乎是007的工作作息，不少新老员工离职，公司氛围可以说怨声载道，但由于我在家躺了两年后的第一份工作，新鲜感，责任心，能够立马派上用场的价值感使我不觉得累，每天都很快乐，很积极，工作完成的很漂亮。同事们都说：把我招进来真是招对了。我喜欢这个评价。也不乏有的同事接着说：不愧是阿里出来的。听到这个评价我倒犯起了嘀咕：我觉得自己现在的能力都是自己独处琢磨出来的，阿里带给我的收获其实很少很少。</p><p>就这样我积极向上地度过了这家小公司据称自2014年创办以来最卷的时期：6月15日至8月30日。尽管忙到我没空没心思去做工作以外的安排，回归社会前想好的下班后要读书写字维护开源项目也都被搁置，但我那段时间过得很满足。前段时间老板心情好，我拿到了属于我的项目奖金，很意外，金额比一些更早的员工还多一点。当然当我真正拿到手，人的贪婪本性也浮现出来，我觉得这个奖金对我还是太少了，并不匹配我的付出。</p><p>这份全职工作，情况就这样。技术上，这家小公司两个月时间自己掌握地也差不多了，很难再有进步，似乎开始了工作的重复，更多进步还是得抽时间自学。总得来说我对这份工作没有大的不满，但也时常在想，这里不属于我。</p><p>最近工作作息也已经基本恢复正常，6点就能下班，上海的天空似乎比我家乡的天空更多变又漂亮。入秋之前的夏日黄昏，头顶呈现的云彩层次分明，颜色妖媚。看着云彩，我总是在想三件事： 一是今年我看的第一本书，是讲述云彩的，但是我却似乎没有记住任何细节，无法说出眼睛此时看到的云叫什么名字，一般位于多高，接着将会产生什么气象。二是，粉色的天空和我大学有一天早上五六点起床看到的世界好像，那一天，我很幸福。三是，我现在的生活，很平静，好像就是我高中期盼的平静的生活。</p><p>但真的足够平静吗？</p><p>这三个月除了工作上按部就班，我见了老友，去了崇明岛见了新朋友，去亲戚家吃了一顿饭。遇到了几个让我心情起伏的女生。一个人去看了电影，听了音乐剧。 </p><p>走过这段时间 ，我觉得今年在这家公司工作的自己，还是适合把时间花在继续提升自己上。</p><p>接着走向适合自己的地方。</p><hr><p>真正回归社会，才觉得6月前还在家乡的自己，那段时间经历的必然和奇妙。1月至5月的自己，终日游荡在一家自习室、一座山、一座寺庙、河边。在这些地方看书，发呆，思考。</p><p>我现在和刚毕业在阿里时的感受一样，我认为盲目的上班让我自己越来越笨了。所谓混社会的阿谀奉承、讨好、抑或踏实做事、负责到底，这些对我都太容易了，容易到我始终觉得一旦只关注这份工作的工资，那么我就不再有时间真正有所想要的进步，我实际上将会变得单一，我总是这么觉得。所以我又开始，明明由我热情交友，大家都喜欢我，接着我沉默，大家都疑惑我怎么了 。</p><p>我思考，所以我经常难过。</p><p>这两天强迫自己下班后，看完了崇明岛朋友借给我的书，又翻开从家乡带来的书，好像找回了一点属于自己的自由 。</p><p>我又开始快乐。</p><p>总的来说，我真的很满意现在生活，期待自己不浪费时间的未来，就像我哥安慰我说的那句话：大家的日子一定会越来越好的。</p><p>是的。</p><hr><p>今年，存一点钱，在明年25岁之前，独自去看大海的第一面吧。</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/">情绪</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      
      <comments>https://www.ninojay.top/2023/2023-summer/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>泪和抑郁</title>
      <link>https://www.ninojay.top/2023/cry/</link>
      <guid>https://www.ninojay.top/2023/cry/</guid>
      <pubDate>Fri, 21 Jul 2023 18:05:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width="330" height="86" src="//music.163.com/outchain/player?type=2&amp;id=1933553440&amp;auto=1&amp;height=66"></iframe><p>6月之前，先在耳机里播放这首歌。夜晚八九点，穿着整齐，走出小区，不太远的河边。沿着岸上栏杆走过一个、两个、三个亭子。左转的平台-码头，继续向下延伸的河堤。</p><p>会先在阶梯上站一会儿，望着河面反射的对岸高楼斑斓灯光，就这么站着看一会儿。身后，身前，零丁往来的人，都撇我一眼。</p><p>踏着阶梯往下，码头本身，河边。船在这个时间点已经没有。被散发橘黄色光芒的路灯照耀的码头水波轻拂岸边，让人很容易在深夜看清，岸边的阶梯由明显的两三级接着往下若隐若现于河水中，我盯着这河边发呆。</p><p>没有像其他人选择坐在码头三张椅子上，我就坐在离河水三个台阶的位置，抬头又望着对岸的灯火，低头可以凝视脚前的水波。</p><p>今年我在这岸边默默地哭过，两次吧。</p><p>第一次是今年过年和许久不见的亲戚吃那每年约定俗成的饭。亲戚们对我的关心，使得我不知道该说些什么。和舅舅表弟表姐喝完一瓶白酒，我先告别了。胸膛里的酒精冲上我的大脑，我的灵魂好像钻进了十六岁的身体，又去走那明明更远的回家路。明明到了楼下，还是继续往前走，走到了河边。</p><p>河边，泪，都许久不见。</p><p>我说不清楚我在为什么哭泣。我只是觉得自己好累，我记得就在那河边，反复问自己，从什么时候开始，为什么亲人朋友对我的关心，会让我受不了呢。我究竟成为了一个怎样的人呢，大家为什么都说只希望我快乐呢。为什么听到大家这么说我很难过呢。为什么我从一个从小给身边带来欢乐的人变为了一个只想独处的人呢？</p><p>已经独处了一年多的我，是不是其实一点没变呢。</p><p>那天晚上，十二点，河边，为自己流泪，直到路灯熄灭。</p><hr><p>那之后的第二次哭泣，我此刻在上海，忘了因为什么。但是两次这总的次数，我却记得无比清楚。</p><hr><p>我是否有了抑郁症。</p><p>在我毕业之前，有一位高中同学、一位大学同学、两位初中同学都建议都说带我去看心理医生，我的亲人也都希望我不抗拒去看看心理医生。我都拒绝了。我知道自己不用看，必然是我得了这一场心灵感冒。同时我也不觉得，所谓的中国应试教育环境下的心理医生就能帮助我，开导我，共情我。</p><p>“这是华西的心理医生，你愿意去看看吗，平时挺难预约的，听说非常厉害。”</p><p>“关心收到，但我不相信这些心理医生，华西的又怎么样呢，他能做的无非就是听我说完过往，假装理解我，想尽办法假装和我共情，就算恰巧碰到了一个和我有类似经历的心理医生，他本质上也依然解决不了一个陌生人的内心问题。我觉得一个人要想治疗自己的心灵疾病，最终还是靠自己的力量。所以他能做什么？给我开点精神上的药物？以小时收父母的金钱？我清楚知道我不需要鼓励、安慰、批评、关心。说实话，我觉得这些心理医生大概率还不如我会安慰其他人。说不准我就算去看了，也跟他扯弗洛伊德、荣格、阿德勒、心理学、哲学，他也不一定能扯过我。”</p><p>…</p><p>…</p><p>…</p><p>“我知道你想关心我，我需要的真的只是一个人独处。我觉得自己就是，社交一阵过后，就需要独处一阵，然后才有能力接着社交。”</p><p>“去看看吧，也许你正常了，甚至可以不用独处一阵。”</p><p>下面这句话我没说出口：</p><p>“我觉得，我这样不叫不正常。我现在喜欢独处这件事，就会让我舒服。难道我觉得舒服的事，也有错吗。”</p><hr><p>这两年，我觉得自己凭借自己的力量变得积极阳光了很多很多。而且这一次的阳光，不像小时候的外表傻乐，心里悲伤。我觉得活着本身确确实实是一件美好的事，痛苦本身也是一种美好。</p><p>我坚信人是有能力积极向上改变很多东西的。</p><p>我叫不叫治好了自己的抑郁呢。我也不清楚自己是不是学会了和抑郁症患者交流相处。有一个事实，这些年我接触过的医院确诊过吃药住院的好几位抑郁症朋友，他们都跟我说过，“跟你聊天比跟心理医生有用多了，中国的这些心理医生就给我开药住院，没有实际上的帮助。”</p><hr><p>我非常喜欢加缪的一句话：<code>重要的不是治愈，而是带着病痛活下去。</code></p><p>同时我现在也非常喜欢积极的有力量感的人。</p><p>Best Day of My Life.</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/">情绪</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      <category domain="https://www.ninojay.top/tags/%E6%AD%8C%E6%9B%B2/">歌曲</category>
      
      
      <comments>https://www.ninojay.top/2023/cry/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>摘抄-《西西弗神话》</title>
      <link>https://www.ninojay.top/2023/excerpt-from-the-myth-of-sisyphus/</link>
      <guid>https://www.ninojay.top/2023/excerpt-from-the-myth-of-sisyphus/</guid>
      <pubDate>Sun, 02 Jul 2023 12:08:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h2 id="轶闻"><a href="#轶闻" class="headerlink" title="轶闻"></a>轶闻</h2><p>《西西弗神话》，是我前往上海的路途上，飞机上，正式打工前，看完的第一本书。</p><p>忘了是怎么知道《西西弗神话》的，也许是全国同名书店的印象，也许是在此之前我就看过加缪的《局外人》、《鼠疫》。</p><p>我依然记得的是，第一次拿到这本实体书的感觉：在四川图书馆，被当时无业游民的我使用图书馆的搜索引擎定位到哲学分类的书架。绿色的封皮，比巴掌大不了多少，正好可以放在我的羽绒服口袋里。一眼就喜欢上了。</p><p>那时我看它总是看不完，断断续续，读的不知所云。我知道全书在描述荒诞、荒诞感、荒诞人、自杀。但总是抓不住加缪文字背后的深意，读来读去都像是文字在眼前闪过，并没有交流。</p><p>所以，这本书被我在四川图书馆借阅了一次又一次。借阅记录打印出来的纸条一张又一张放在我的钱包中。</p><p>终于有一天，我想，要不骗骗图书管理员，这本书被我弄丢了，交点罚款“买下来”好了。我预谋好说辞，来到图书馆前台，向工作人员说明情况。</p><p>工作人员说：“建议你还是找一找，否则要赔偿的，或者你可以买一本同样出版社的该书给我们。”</p><p>我说：“没事，请问要赔偿多少啊。”</p><p>工作人员说：”五倍赔偿。“</p><p>我说：”谢谢，那我再回去找找，应该能找到。“</p><p>我后来又在家乡的书店买了一本，不是同一个出版社，翻译不相同，大小也放不了我的羽绒服口袋了。终于在来到上海的飞机上，我硬着头皮看了三分之一。</p><p>在正式打工之前，看了剩余的部分。囫囵吞枣的看完了第一遍《西西弗神话》。</p><p>对了，我还买过《西西弗神话》英文版，至今仍在我哥哥家的书架上。有机会，再看一遍纯英文版吧。</p><h2 id="摘抄"><a href="#摘抄" class="headerlink" title="摘抄"></a>摘抄</h2><ul><li><p>真正严肃的哲学命题只有一个，那便是自杀。判断人生是否值得，就是回答哲学的根本问题。</p></li><li><p>自杀，在一定意义上，如同在情节剧中那样，就是承认了，就是承认自己跟不上或者不理解生活了。</p></li><li><p>情愿死亡就意味着确认了——即使本能地确认了这种习惯的可笑性，确认了活在世上缺乏深刻的理由，确认了每天这样躁动的荒谬性，毫无必要受苦受难。</p></li><li><p>反之，那些自杀的人，则往往确信了生命的意义。</p></li><li><p>弄虚作假赋予人生以某种意义，同时也背叛了人生。</p></li><li><p>人自杀就因为获得不值，这无疑是一条真理，但这不言自明，因而很贫乏。这种对人生的侮辱，这种对人生的彻底戳穿，难道是源于人生根本无意义吗？难道人生荒诞就要求人通过希望或自杀逃避人生吗？荒诞就导致轻生吗？</p></li></ul><hr><ul><li><strong>真正的努力反而在于坚持，竭尽可能地坚持，并且近距离查看那种遥远国度的怪异的草木。</strong></li></ul><hr><ul><li><p>深挚的情感犹如伟大的作品，总比有意表达出来的蕴含更多。</p></li><li><p>同样道理，一种低调、一些心中难容的情感，也会因其激发起来的行为，因其假定的精神姿态，总能部分地暴露出来。</p></li><li><p>唯有表象可以量化，氛围可以感知。</p></li><li><p><strong>但凡伟大的行动，但凡伟大的思想，都有一个不起眼的开端。</strong></p></li></ul><hr><ul><li>被对方爱的人都心知肚明。</li></ul><hr><ul><li>一种机械生活的行止，到头来就是厌倦，但是厌倦也同时开启了意识的活动。</li><li>厌倦是有益的。因为，一切都始于意识，只有通过意识才有价值。</li><li>简单的“思虑”是一切的开始。</li><li>同样，日复一日，生活毫无光彩，同时裹挟着我们。然而，总会有那么一刻，应当裹挟时间了。</li><li><strong>肉体的这种反抗，就是荒诞。</strong></li><li>这些由习惯遮饰的布景，又恢复了本来的面目，离我们远去了。</li><li>我们也许渴望使我们如此孤独的东西。</li><li><strong>世界的这种厚实和这种陌生性，正是荒诞。</strong></li><li>我所感兴趣的，再重复一遍，主要不是荒诞的发现，而是发现荒诞的后果。</li></ul><hr><ul><li>思想头一个活动，就是辨识真伪。然而，思想一旦反思，那么首先发现的却是一种矛盾。在这个问题上，极力说服人是徒劳的。</li><li><strong>肯定一切皆真，我们就肯定了对立观点肯定的真理，从而也就肯定我们自己论点的谬误（因为对立观点的认证不容许我们的论点是真的）。</strong></li><li>对人而言，理解世界，就是把世界压缩为人性，打上人的烙印。</li><li>同样，精神力图理解现实，只有把现实压缩成为思想术语时，才能心满意足。如果能看出世界也同样，会爱和感到痛苦，那么人就会心平气和了。</li><li>这种对一体化的眷恋，这种对绝对的渴求，表明了人类悲剧的基本演变。</li><li>我再次重复，它们的趣味不在于本身，而在于可能引出的后果中。</li></ul><hr><ul><li>如果只能写一部人类思想有深意的历史，那么就应该写成人不断懊悔而又无能为力的历史。</li><li>胸膛里这颗心，我能感受到，能判断它存在。</li><li><strong>大地的全部知识，却没有向我提供任何东西让我确信，这个世界是属于我的。</strong></li><li>你们用一种形象给我解释这个世界。于是我承认，你们到了诗的境界：那是我永远也不能了解的。</li><li>纵然我用手指顺着起伏的地势摸遍了世界，我也不见得了解更多。</li><li>对于我本人和这个世界，我都是陌生者，唯一可以求救的就是一种意念，而这种意念一旦要肯定什么，就自我否定了。</li><li>我要想得到安宁，就只能放弃认知和生存，想进取的渴求处处碰壁，遇到坚不可摧的壁垒！</li><li>一有意愿，就要引起混乱。一切都排列有序，从而诞生一种毒化的安宁，始作俑者，就是这种无忧无虑、心灵的这种睡眠状态，以及坐以待毙的放弃。</li></ul><hr><ul><li><p><strong>智慧的反面，即盲目的理性。</strong></p></li><li><p>荒诞将人与世界捆绑在一起，正如仇恨，唯有仇恨能把世人联系起来。</p></li><li><p>荒诞被承认之时起，就是一种激情，最撕肝裂胆的激情。</p></li><li><p>然而，我们的时代却重又出现这些荒谬的体系，千方百计地让理性蹒跚而行，就好像理性真的在一直往前走似的。</p></li><li><p>唯一的现实，就是人在各个阶段的“思虑”。对于迷失在世界和自身迁徙的人来说，这种思虑是一种转瞬即逝的忧虑。不过，这种忧虑一旦意识到了，就会转化为惶恐，清醒者永久的氛围。</p></li><li><p><strong>“最可靠的缄默，不是三缄其口，而是开口说话。”</strong></p><blockquote><p>三缄其口：形容说话极其谨慎，不轻易开口（缄：关闭）。</p></blockquote></li><li><p>一边是人的呼唤，另一边是世界毫无理性的沉默，这两者对峙便产生了荒诞。</p></li><li><p>非理性、人的怀旧眷恋，以及由这两者冲撞而产生的荒诞，这就是人生悲剧的三个特点，而人生悲剧，势必同一种生存成为可能的全部逻辑一起收场。</p></li></ul><hr><ul><li>荒诞感无非是判断世界的那个瞬间，并没有概括成为概念。</li><li>荒诞感是鲜活的，也就是说要么自生自灭，要么风风火火往前闯。</li><li><strong>生活在令人窒息的天空下，就是要求人要么离开，要么留下来。问题是要弄明白，在头一种情况该如何离开，在第二种情况又为什么留下来。</strong></li><li>断定为荒诞，也仅仅根据他的意图和等待他的现实之间完全失衡，仅仅根据我在他的实力和设定的目标之间所抓住的矛盾。</li><li>有些婚姻是荒诞的，有些挑战，有些怨恨，有些沉默，有些战争，也有些和平是荒诞的。这些当中无论是哪一种，荒诞性都产生于比较。</li><li><strong>因此，我有理由讲，荒诞感并不产生于对一种事实或一种印象的简单考察，而应当是从一种事实状态跟某种现实，一种行为跟超越行为的世界比较中激发出来。</strong></li><li><strong>荒诞本质上是一种离异。</strong></li><li>离开人的思想，荒诞就不复存在了。</li><li>唯一的已知数是荒诞。<strong>问题在于了解如何走出荒诞，能否从这种荒诞中得出自杀的结论。</strong></li><li>也只有在不赞同荒诞派的情况下，荒诞才有意义。</li><li><strong>一个人总是他的真理的猎物。人一旦确认了某些真理，就再也摆脱不了了，总要付出点代价。</strong></li><li>一个人没了希望，并且意识到了无望，就不再属于未来了。</li></ul><hr><ul><li><p>大家转向上帝，只为获取不可能得到的东西。至于办得到的事，有人就足够了。</p></li><li><p>这个上帝的伟大，就在于他不合逻辑。</p></li><li><p>荒诞如果存在，那就存在于人的世界中。</p></li><li><p>非理性的陶醉，加之心醉神迷的使命，便使一种透亮的精神从荒诞脱颖而出。</p></li><li><p>对一种荒诞精神来说，理性毫无意义，理性之外什么也没有。</p></li><li><p>我们知道，只有在一种平衡中，荒诞才显示价值</p><blockquote><p>荒诞反而是平衡的一部分。</p></blockquote></li><li><p>完全否定理性并无意义。理性自有其程序，相当有效。理性也恰恰是人类体验的程序。</p></li><li><p>他童年多么惧怕基督教，最终却又趋向基督教那副最严峻的面孔。</p></li><li><p><strong>最重要的不是治愈，而是与病疾共存。</strong></p></li></ul><hr><ul><li>“我所欠缺的，正是兽性，其实兽性也是人类命定的一部分······不过，总得给我一个躯体吧。”</li><li><strong>荒诞，则是觉悟人的原本状态，并不通向上帝。</strong></li><li><strong>荒诞，就是没有上帝的罪孽。</strong></li><li>我知道荒诞建在什么基础上：这种精神和这个世界彼此支撑，却又不能拥抱在一起。</li><li>对于存在哲学家们来说，否定，就是他们的上帝。而这个上帝，恰恰通过否定人的理性才得以确立。</li><li>我们论证的目的，其实就是要阐明精神的行程，如何从世界无意义的一种哲学出发，最终为世界找到一种意义和一种深度。</li><li><strong>我们重复一遍，思想，不是一统天下，不是让表象以大原则的面目变得家喻户晓。思想，就是重新学会观察，就是引导自己的意识，将每个形象都变成一块福地。</strong></li><li>意识在体验中，让他注意的对象处于悬浮状态，并且通过神奇效果，将其孤立起来。</li><li><strong>不是用一种事物解释所有事物，而是用所有事物解释所有事物。</strong></li><li>对我而言并非所有本质都是形式的，但有些事物质的，前者是逻辑的对象，后者是科学的对象，这样讲仅仅是个定义的问题。</li></ul><hr><ul><li>对荒诞精神而言，世界既不那么合理，也不那么非理性。世界是不可理喻的，也只能这么说。</li><li><strong>荒诞，则是清醒的理性，确认了自己的局限。</strong></li><li>罪孽主要不在乎认知（照这么说，人人都是无辜的），而在于求和。</li><li>荒诞人不要听说教。</li><li>必须要弄明白人能否活在荒诞中，逻辑是否要求人因荒诞而死。</li></ul><hr><ul><li>如果不说谎，如果不塞进来我没有的、在我有限的生存条件中毫无意义的希望，我还能找出别的什么真理呢？</li><li>我要表现自己的全部意识，表现对熟识事物的全部要求。</li><li>什么冲突都没有解决，可是又全部改观了。</li><li>人在这世上，又终将尝到荒诞的美酒和冷漠的面包：人正是以此滋养自身的伟大。</li><li><strong>有人要荒诞人纵身一跳，荒诞人所能回答的，无非是他不大理解，世界并不一目了然，而他恰恰只想做他完全理解的事。别人却明白地告诉他，这样高傲事罪过，可是他不懂这种罪过的概念。</strong></li><li>别人回答他说，什么也不能确定。可是，至少这一点事确定的。那他就同这种确定打交道：他要弄清楚，能否义无反顾地生活。</li></ul><hr><ul><li>谈自杀之前，先得了解，人生是否有意义，是否值得一过。在这里似乎正相反：<strong>人生正因为没有意义，就更值得一过。</strong>人生经历一种体验，遭遇一种命运，就是完全接受。然而，知道这命运是荒诞的，人就不会去经历了，除非自己千方百计，要把意识认清的这种荒诞保持在面前。</li><li><strong>自杀意味着首肯，恰恰同反抗背道而驰。</strong></li><li><strong>反抗贯穿人生的始末，恢复了生存的伟大。</strong></li><li>人心中一切难以克制的、激情澎湃的力量，无不激励意识和反抗同他的生活较劲。死也不会和解，也绝不会甘愿自杀。</li><li>自杀就是一种无知。</li><li><strong>荒诞人只能穷尽一切，并且耗尽自己。荒诞就是他的极度紧张，一种独自努力而不断保持的紧张状态，因为他知道，再这种日复一日的意识和反抗中，他证明着他的唯一真理，即挑战。</strong></li><li>我唯一熟识的自由，就是思想和行为的自由。</li><li>确定个目标，有所偏好，这一切表明还相信有自由，即使有时候着实感觉不到。</li><li>我同样没有永生的自由，而是奴隶，尤其是不肯求助于藐视的态度，无望永恒革命的奴隶。</li><li>但是与此同时，我却坚持这种公设，认同我周围的人相信的事，认同我的人文环境的偏见。</li><li>荒诞是在这一点上启迪了我：人没有未来。</li></ul><hr><ul><li>一个人的道德、他的价值等次，只有统观他积累的经验的数量和种类才有意义。然而，现代生活条件将同样数量的经验，也就是同样深刻的经验，强加给了绝大部分人。</li><li>然而，最终还是荒诞及其矛盾的生活能给我们教益。</li><li>在清醒主宰的地方，价值等次就失去作用了。</li></ul><hr><ul><li><strong>荒诞人究竟是什么？就是毫不否认，不为永恒做任何事的人。</strong>并不是说怀旧对他是陌生之物，但是他偏爱自己的勇气和自己的推理。勇气教他义无反顾地生活，满足于现有的东西；推理则让他明白自己的局限。</li><li>我在这里甚至不提称之为后世的那种可笑的永恒。</li><li>荒诞不是大撒手，而是套牢。并不是什么行为荒诞都允许。为所欲为并不意味着毫无禁忌。</li><li>一切道德的基石，就是后果能使一种行为正当或废止的观念。</li><li>邮局的临时工和一位征服者，如果有相同的意识，那么两者就是平等的。</li></ul><hr><ul><li><p>如果有爱就足够了，那事情就太简单了。人越爱，荒诞就越牢固。</p></li><li><p>为什么爱得深刻，就必须爱得少呢？</p></li><li><p>忧伤的人有两个感伤的缘由：要么蒙昧无知，要么抱有希望。</p></li><li><p>直到死亡的边界，唐璜都不识愁滋味。从他知道的那一刻起，他便敞声大笑，让人宽恕了一切。他抱定希望的时候，就伤感不已。</p></li><li><p>然而，抱着希望生活的人，却与这个世界格格不入，只因这个世界善良让位给了慷慨，柔情让位给了男性的沉默，同心同德让位给了孤独的勇气。人人都这么说：“他就是个弱者，一个理想主义者，或者一个圣徒。”</p></li><li><p>然而，对于追求欢乐数量的人，唯有效率才是硬道理。</p></li><li><p><strong>荒诞人，就是须臾不离开时间的人。</strong></p><blockquote><p>须臾 xū yú：一会儿；片刻。</p></blockquote></li><li><p>收藏，就是尽量活在过去。但是他拒不追悔，这是希望的另一种形式。他不善于观赏肖像。</p></li><li><p>有的人生来为活一世，有的人生来为爱一生。</p></li><li><p>荒诞人在这方面，也同样分身有术，不可能整齐划一。从而他发现了一种新的存在方式，这种方式既解放与他接近的人，至少也同样解放他自身。</p></li></ul><hr><ul><li>哈姆雷特说到：“演戏，就是陷阱，我用来逮住国王的意识。”</li><li>在所有的荣耀中，欺骗性最小的就是能当场感受到的荣耀。</li><li>不为人知，就等于没演戏，如不演戏，那就等于随着所有那些人物死去上百次，而他本来可以使那些人物活跃或复活在舞台上。</li><li>他是时间的旅行者，在最好的情况下，堪称灵魂追逐的旅行者。</li><li><strong>一个人要成为什么样子和他原本样子之间，并不存在什么界限。</strong></li><li>人生有一半时间是暗示，掉过头去，沉默不语。</li><li>这是十足的荒诞的矛盾：这个人什么都想达到，什么都想经历，这是徒劳的企图，这是毫无意义的固执。总是出尔反尔，在他身上却协调一致。</li><li><strong>重要的不是永恒的生命，而是永恒的活力。</strong></li><li><strong>有人谈起他，说什么天才原谅一切。其实，天才什么也不原谅，恰恰是因为天才本来就拒绝。</strong></li></ul><hr><ul><li><strong>一个人沉默多于讲话，必成为一个强人。</strong></li><li>可能出现这种状况，首先由于人心的这种根深蒂固的谬见，即人生于世不是伺候人，就是受人服侍。还有一种缘由：无论社会还是个人，都还没有充分展现各自的本领。</li><li>我意识到我离不开自己的时间，就决定同时间合为一体。</li><li>我知道没有胜利的事业，那么就把兴趣放到失败的事业：这些事业需要一颗完整的心灵，对自己的失败和暂时的胜利都无所谓。</li><li>在历史和永恒之间，我选择了历史，只因我喜爱确定的东西。</li><li><strong>在静观和行动之间，总有事到临头必须选择的时候。这就叫作长大成人。</strong></li><li>只有一种行动有效用，即重造人和大地。我永远也改造不了世人。但是，一定得“死马当作活马医”。</li><li><strong>紧绷的面孔，受到威胁的博爱、人与人之间既特别牢固又特别羞怯的友谊，这些都是真正的财富，因为无不转瞬即逝。</strong></li><li>但是心中有数，这便是智力的自由。</li></ul><hr><ul><li>我对那些理念和永恒根本没兴趣。适合我的真理，我一抬手就能触碰到，而且形影不离。这就是为什么，你们以我为依据，什么也确立不起来：征服者身上什么都长不长久，甚至包括他的学说。</li><li>人只美化喜爱的东西，而对于死亡，我们又反感又厌倦。死亡也同样，需要人征服。</li><li>然而，这些富有才智的人却从中汲取力量和自身存在的依据。</li><li>命运就面对着我们，我们不断挑战的也正是命运。</li></ul><hr><ul><li>我力图描述，并以不同方式让人感受经验时，一种烦恼消亡之处，必定出现另一种烦恼。</li><li><strong>在这洞天地里，要想维系自己的意识，确定哪些冒险，作品则是唯一的机会。创作，就是活两次。</strong></li><li>对荒诞人来说，问题不再是解释乃至解决了，而是体验和描述。一切都始于富有洞察力的冷漠。</li><li>人可能走进误区，从中看到一种象征，以为艺术作品终究可以认作荒诞的庇护所。须知艺术作品本身，也是一种荒诞现象，仅仅在于描述荒诞，并不能给精神痛苦打开一条出路，反而是这种痛苦在一个人全部思想中回响的一种征象。</li><li>脱离创作者的艺术构思，不仅过时了，而且还是虚假的。</li><li>为了创作出一部荒诞作品。思想务必以最清醒的状态参与进来。然而，与此同时，思想也绝不可以在作品中显山露水，顶多作为统筹安排的智力。这种反常现象用荒诞解释得通。</li><li>正是清醒的思想激发作品，但是就在这种创作行为中又舍弃了自我。</li><li>真正的艺术作品总合乎人性的尺度。</li><li>如果作品硬要把全部经验置于一种解释文学的花边纸上，那么这种关系就很糟糕。</li><li>总之，伟大的艺术家身处这种环境，首先就要成为人生的大行家，懂得活在世上，既是体验又是思考。</li></ul><hr><ul><li>这里不谈形式艺术或色彩艺术：在那些艺术中，唯独描绘栈统治地位，以谦虚姿态显示其流光溢彩。</li><li>如果说有一种艺术剥离了教导，那恰恰是音乐。</li><li>创造的起点，就是将人与其经验分离的根本矛盾，进而沿着人怀旧的思路，找到一块融洽的领地，一个由理性掌握的，或者由类似理想的东西照亮的宇宙，从而解决这种难以容忍的分离。</li><li><strong>伟大的小说家是哲理小说家，亦即命题作家的对立面。这里只列举几位，诸如巴尔扎克、萨德、麦尔维尔、斯丹达尔、陀思妥耶夫斯基、普鲁斯特、马尔罗、卡夫卡。</strong></li><li>不过，他们选择了用形象，而非用推理写作，这恰恰透露出他们有某种共同的思想，即确信任何解释的原则都用不上了，还坚信感性的表象含有教育的信息。他们认为作品既是一种终结，又是一场开端。</li><li><strong>少许思想使人远离生活，更多思想把人带回生活。</strong></li><li><strong>以爱情为题的小说创作既有初恋时的惊喜，又有无穷的回味。</strong></li><li>我就是想知道，人义无反顾地接受生活之后，是否还能同义无反顾地工作和创作，究竟是什么道路通向这些自由。</li></ul><hr><ul><li>人的存在，要么是虚假的，要么是永恒的。</li><li>这个绝望者确信，对于一个不相信永生的人来说，人生是一种十足的荒诞。</li><li>他想自杀以便化为神。</li><li>方方面面，他都是个普遍人，唯独在逻辑和固定理念上，他是个超人。正是这样一个人，平心静气，谈论着他的神性。他没有疯，那么就是陀思妥耶夫斯基疯了。</li><li>当时他已经了解，拜拜受酷刑，根本没有作用。</li><li>由此可见，所谓的神性，不折不扣是人间的事。</li><li>我的神性的标志，就是独立性。</li><li>可见，促使他决心一死的并不是绝望，而是同胞对他本人的爱。</li><li>人可以同时为基督徒和荒诞人。</li><li>人生是虚幻的，也是永恒的。</li><li>至此我便领悟到，不可能永远回避希望，甚至那些意欲摆脱希望的人，也可能受到困扰。</li></ul><hr><ul><li>这表明荒诞的苦行有多么艰难，尤其表明不断保持觉醒又有多么必要，同时也吻合本论著的大框架。</li><li>艺术的隐晦与谦卑的手段。</li><li>一方面否定，另一方面又激励，这便是为荒诞作品创造者敞开的道路。他必须给虚无涂上色彩。</li><li>一些作品可以补充另一些作品，可以修改或校正，也可以反驳另一些作品。</li><li>我曾在别处指出，人的意志旨在保持意识，并无别种目的。</li><li>凡是放弃一统的思想，势必激发多样性。而多样性就是艺术的地盘。唯一能解放精神的思想，就是放任精神不管，任由精神确信自己的界限和临近的结局。</li><li>作品一旦离开了精神，就会头一个再次让人听见一颗心尚未低沉的声音，永远摆脱希望的心声。抑或，不会让人听见任何声音，假如创造者厌倦了这场游戏，力图转身了。这还是一码事儿。</li><li><strong>演员已经教我们明白，在表象和存在之间并没有界限。</strong></li><li>维系着人的，是对另一个世界的幻想。</li></ul><hr><ul><li>每逢这种时刻，他离开山顶，渐渐深入神仙的洞府，那形象就高出他的命运，比他的那块巨石更坚忍而强大。</li><li>如果每走一步，都有成功的希望来支撑，那么他的痛苦又焉在？</li><li>然而，只有在工人变得有意识的少许时刻，命运才是悲惨的。</li><li><strong>他每次下山时，思考的正是生存境况。可以说，洞察力既造成他的痛苦，同时也完成了他的胜利。以鄙视的态度，就没有战胜不了的命运。</strong></li><li>当大地景象过分强烈地占据记忆，当幸福的呼唤冲击太大的时候，人心就难免油然而生忧伤的情绪，这就是巨石的胜利，人就成为巨石的化身。</li><li>没有写一本幸福教科书的意愿，就发现不了荒诞。</li><li>幸福和荒诞时同一片大地的孪生子。两者时分不开的，若说幸福势必诞生于荒诞的发现，这恐怕是谬见。荒诞感也完全可能诞生于幸福。</li></ul><hr><p>西西弗交给人升华的忠诚，既否定诸神又推动石上山。他也一样，断定一切皆善。这片天地，从此没有了主子，在他看来既没有更贫瘠，也不是更无价值。</p><p>这块石头的每一颗粒、这座夜色弥漫的高山每道矿石的闪光，都单独为他形成一个世界。推石上山顶这场搏斗本身，就足以充实一颗人心。</p><p>应该想象一下幸福的西西弗。</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E5%A3%B0%E5%85%89/">声光</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E9%98%85%E8%AF%BB/">阅读</category>
      
      <category domain="https://www.ninojay.top/tags/%E6%91%98%E6%8A%84/">摘抄</category>
      
      <category domain="https://www.ninojay.top/tags/%E5%93%B2%E5%AD%A6/">哲学</category>
      
      
      <comments>https://www.ninojay.top/2023/excerpt-from-the-myth-of-sisyphus/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>招聘信息</title>
      <link>https://www.ninojay.top/programmer/company/</link>
      <guid>https://www.ninojay.top/programmer/company/</guid>
      <pubDate>Sun, 02 Jul 2023 09:58:00 GMT</pubDate>
      
      <description>有东西被加密了, 请输入密码查看.</description>
      
      
      
      <content:encoded><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="密码错误。" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.">  <script id="hbeData" type="hbeData" data-hmacdigest="695b37d7017e77e3c00ba9a34d71f2bdb2d881637602b2a9238a242c84e562fd">a7e357068c42329b8f33d37c25a789f17da67a35b47dde45e03668cf78c52877f1296ce613b69ca8273fe4c3bfe5233f311ff0992cf24b4b3905ce416e79cf1b9a92a22fded22072cb640d77ffa7d74a84181c4524825ee4835f82d8bcdd8a1a3a865ffb1ceeb3722bcc1534f81c666c2252c2142bb489cffb53c77a3ce32c78c1723bb98d42956bf921e6ea67fc70a4f1b4382435030bfa2adfeb038f6d3f2b51656baca8d7c5fa5a88bea95993bbdd8560b48476d29822f317bd2165a7393bdd6c020d1203fdc42766a921a8bb1efb97166df74d1e6e51f16e6ca74cdecaf15bc210f491b61fdb898f2bb627de671bd5e1f0ec9632dda8059e38629d41f1cdfb3f4147e9ba2132384154c0a82e64474c36d1bb24be386b2a47fc16c139fb142689b687f7ffcf91c795ac5c52a3128c53e22e7db261eb241b1c0e4d2da5ce3198cfee7a86471151807935660d1c114a47512f931281b8ba74ffcd7e7b87050a5d634eed04df5b4897e6084707772c55e47ee281af65f4495f59a64badf52d428af0b406c66730a78336d383c0c4520c12406b1c7e1bfc9c23204633942d1669b1b6f5c061d4235653f40520ac4e7b2d49d711951eea581ad8ed1d305919f2dc679f8296df3200a445a05cb7b114ac1c323a6ccbeebe66b008edb6ce16c674fbd4bd657c2385a6c7d93bd5a19362622871abea817013a97bdabf06b0a4c2e6a5835fc108834da5234a07b3e55df3c5873ccfc103fbd84b594bf07f92a0a09003640482261aabfd66714c8cb308223933509cc0b8a1063d988c53bb2466b5b7d9615555a651a01baa16c5409bb21a1e8674fc4041532b94603f708e0d5f8671d5643ead65bc67f542bf5b6ca509abf236bd796f4cb89f5929486ad7d21be93f983aeaa7703a67b61cb59865df17891695afb55e228891762b7bb09b7f6c0cdebdf4e89d424ff724adde87ea2153929373a9dccb786dd8b22dc3b3f90c45e9ddefcdad422902a71f4e843b42325c1f6248e76d4dee358e4907b33647066a1615850174551bc017ceff5c7adaf011950786d15e8b75729abc35ec1ed9d6811892f473a95fd580b73525b311ab2d9f89bd2a6d75e56f8c8afe021f4e83c82d46cabd5c5ab9ee584fd7c1022e312babbc17373ba7ab48ef49fbecdb7e4e4443a63ef874f37ed9ac286c11ca0e1c91863e6d9d410cdb2174fe17704c9a3611fa97ab4c14e2b4b7d9656a97c7feb0cf12b78604d169504b9f9c82adc3f051f5853dfa38a1ba161dcbf5a905c55d2c46d7b3f98ba65d12074db48f3c021e60193d89c91ae3a65c181254b18f91a673800d8cd692bbf5329542d27a348a2ce734772abf62e0f5f2fd36d07de43e98f532b9744b8a95db3ec26a9bbd6dfcc36e35b6c14ae4825bdb4139b57ff998e8f0d01f5b43f8e611b967d181f75021d36c3af63ac5597f6691498e083c32043389ad5ec3361282af51be5c68fbf3f75f332f8588d0ab9f230494653d38107bebcf0fe9458b0aca743f9f109e83f53054248c555835eadffa3b384e72079f1bdde52c536449f38219aea55564f48e91d67d9e0a5afd0338b8ba34de41661513d4b70165e11ec3a9ba00c3d957adf1b3d2f4868a10ebee46aa224af2ac275fa55f34922a79a2e3ccaab47fcae72d2a3c9339fb488f048d92b8bf12bac6cd7976c930ec7a057b42013de05b64862b5559aa17da4b04bfac28c30e14633aeb118ef53b60bf34e3824ea63a9884bd00b5f42e1cc04cc49298a33d7ec0c553e70544932b9cfd4ba9afb0029323758b1112a42396df1719f4d41cbaae2d6930e50629f74262e38ae818b020b2f90d40d7bd41aecf4cc6727f9be231bfbfd94b959861187f29a1fd0c3141272e82458f8baddd365aca33ac4aa8323bcc79b370955a17841faa7a02e7c875ced5d9aa4285ece4fd5e3fcb8839db1794c7e3a9f98e283ffd6a0097d3d9135c9783097697d2e360c8f3b0cb8c75e29084c17c67a91b7f1f5efe77f0fff25ba4450a8cef9b5351636d3bd68963515e5415389496ea6bbc613a19cd02fd944c06d1cfecc5919f71460e1e0fc606a95c359ab9554656564b1e2ef7842067bf32ed43b7e34896f6d96646137a70977cf6cf54f29513a95b2c86783400dd494b36afdef00cc72c8bcd81d868d87bd5720d744eef3357e7278cac2d8365fc96ec78391acdddc426b4669ff5d1d8e0f65be67094b536f8dd3a94b9c10cae78ec86f6176f67e22ee26398b06b4490695e054b99f5b3599c63848e2fa01cd51767a9c6cc855586768b219e90f8b21b3f97defac57f1bb8a48cdbdcc512eb196996675066f5a3e5750e7fd7314a01a71bdb725346761d3fa535382f195cb55ca1a1b54de0c59d85ba8f7507134622b3945ad733e0a7e88787cd4a5e20ab9aca66c2b08e56bfebcf861e9270b59dbc4e7a7ff8722fd9e84324c155e36c2244d73dbe4582791abd6ed9c8c78dba703c5eba35b2f19e49103f6c939c217adf2053e7eebc37f9ea14ce3d8797588665a059f38a41079fae83bf0dffb2b6966c312afdd16f442c63bdd1fc4fc321ee85e4d5076e971e7cb612be5b1faa01a6f3377009d7924d0b31699d336a4258853a909877fc3ec8cb99adfd2380f64ab53d2c96beb233ba0c99c380576791ad95b379fa035199f1daa97ddffc260029847f78008cdd8ea60b4ef0779e55ed60f5b69831a4af0288c0e0e5cfbed9bf65ccad260a1fe8494afd464c86781355f9bd9802c113b1ff1dd669a49dcec4580e3c2d1ba97b5fbcf0dfd1b2191900832899a2d2a92a92f0b60a5dd7cbf5480deda9e03097b60105a39cc14de2ac4971ff5465058a280bd5e2353029e9ef86f4b4d1bcf3e6c39c87496ad59e15e420e4dde97cc9afc644c44da15b9a82cbedd2be53fc993deab9d7c3623cb83c4446f452306afcbdc8a7416c60b9fa262baf97431e2b561263c86b6ab15fa5a440de37d1250323ade2aba48b6a18323bce28a0eab1b03427a344d55c8594bfdb67a76c56fb3e3b0071280cb18fa6aca9e53d48a9d62c4f1bc77a240dfb3e73c6d27259d5af2e8e3511c846e3882f66ec9c7691c6fbe30e715aaf64efeed297308f15cc4a26680fea078042ad3d47416018a6b19f0448b0bcede8503d8cbd74a2773ea3f3de80245c05c1dafe8cdd2ce6b5189a497532afed9c24159de9a210ddc1e7c158bb0e79a4aa4a06492c7096fd1ff4c1321200e53a82e7c098a64659d0fa88ba37a303ac27a3d6192c3aa86e7519c7994c4a195cfc5b90f4dcb1945804646c8a9da2c57de8d9bc8573237fe8db642464152c41e7c6c30ff1111e4e0f100fe371504b9c37e8755fbcdc7003d39a5ccbd3ff5eb8bdaa1d8802c6d3b6d6e3297351a4dab961abcdf63822b54a8686cddd549ce86b69d09c0adee1e354b267f8954c57d1c4661976193c6cba029657148fcb0913142939f3851085ab7b00829068611e3def3132015eaa6ba1f2133074f3c45d8bdc9f89d9c606832604fb3a62d5eced58da8dd86cbcbf6557516cb28ec35f9792a3c42b651d2c06b42be5ae91b14d366002ed3cc0ce916c424d4bb2ed2bf52d7e67e8eee73d5c5f2dcf225f286ebf6bc438453f54688edb742af74b197ffc99cc29937f5ef37e40ff22c0befc8a16dadb25da371d734f8ccc5517acda5d774081a84953eaa9a7d6a6235b01457c9f7d27015f4db63e75b344f5027c8be734dc30183a8853055104ac30f330776045d8434af4ceb99eb7c73a72210f4aaccfbe41e463858bd458d2ce89cea72ae30a6edd73d437d8fce61e8562b11f9d324ae45f8548fe994853bdbbf27918b8c580a370c9a4114f9e0e4178c3c302a6c48bdd43417f1d7cf09d135a4204bea0d5baae8066c5921cbf2d32f48e1384b73b3fdf66713b2024aac06b48b7171b0ec5e7b4affbf9d76ad0b83287379423d53c97576e29cf4c154a4c895cf46d7e5b0ed6cbb37c3441ee634b7badc9c48143ea5473173b596e48e66e381d22eb42c5f45e6b3b2d315bfb34d6a13a8f740a7506595afc6beee67f82e54d60d62bd744ec08a4ae58419832c9578083edd259d0c1a0cfa692b800adca5c3a0fe034adcf2bb3080daba98b211273a5530ce6f3ea1984f7ec7fc0df738b09ea6c73fa2f5ed14faa13cd378dd55e2247c8c76c7b0f8a5533c7f69cc8834bfd663856af2333465863c90b6cd4ccf572fe013fee85cf85f25e03ca5f8a715b84694bf9180d2f0f0b6a789a5dcccd37f1cd39bfa467a227274f9a2d24e0a9d52d00bdb776169bd5f4cf140dccf21add7e296f6ebff1b1c04d72d146c88a7d083fc2e2e91cb6fc7d1399382604de81822a6d3f8e8e5c6af3902a1c4459592c9d0ca40bc1b47b3ba2b3e485cef988446395b25aa6cde88dbe2da12cdc6ee20b9e84bdc14e2a11729a7ed83c56730b81e5250a0c0ae833c39369b4b3747d2f80e8012f85683ae7c97f9b6a390496fd81389992e19d1784cf99e56b9787ae61e1fec966e698ae27292d17740fb53af911f485273effe5594ff0392b85eb81097ae79781cc0d6214e5f8088a6cdf62aa8fb0e0f2015753574a79ad419831e699f2b3d0eb443bcf06f4b922d30d2ca00fa8ea79970760de50df6dcc70cf65f3868f2c5ad431076b40953c8ef69e28f3329f96e5e66bfec712db5a15a4a650a552e1b64bdd5d7070fcc3f9be866a531d82cf6a82888d9fbb842d54979d34272949c115526351e8a38b27006a373d0f1f9da4f973286108ca6c4b91206b12ff272708d62bbedc25839c03e6e92e1a0758afe6b8e8045d530a2760397b38bfefcae43b9b2c7764bfefd62c9817198c8167460fdb3828359c383acef81c88b2a63143c532420a48189c644db44d3c455eab45290a09a9ce6f91af96dbd7e44cc3652c13f947ccb1060935e0e60b147968e1bb1bdbe85121f1c0f4aeb0ccb41cab28708b8007d18b5588de2b165f688dd77bf89f506d1121f83ad10704bce16acc65d87748020201d7c68774e0500641ea0c349cf52dae7f404bbbf942af4b2450cb7914104b99ba4a91ad1e86af2379ffc46e230dda4f592f56d103bb1b0793ab5b724debc23dcc67a845cebe63dcfdf6eaa4915553e45526a45db22f93e7149bed869f48987db5387c4a1b1e064c3a2af5ca3edd3f424eb468fa74e049358257717c23049a8ab3e5e2d8d4835019a567d8a6d58342bb3a59d516f4688648e309c2397ee954e7450267352cfcfeeadbc9eea3d236d83738b00edb2c3c5e4fd7e91b520d2431f738fed160ff16baa9697e618c7cb3405cffde1818d3d1add967985c02ed0709162b316c74537c05ca90d988ee991bf33a761b7fef8d55e895862a1fe3aa113fa48d650f3f854764746e24ff103a2f3bfeef1e05653f935aed3c01c5fb91b9daec2c1b803c15efe390302717538f1b6c5e80d4904a66dc2f2762005d7bfa8278b759cf54ace7dd20439ca94d7eb80d3280b00d9a41c7a9d3cd816d97d8d4b6c3ebed72046569576699e5ddf235418478073af596d77c20488194b1d2c80a8d1bdba177b7d5d8af929c1136ed93902f3e2ca7c5694c058c7ffd447a28dee16465a34fe31344b420d2db1bfab5a3d7dd7a3f2ef74ccf55c25d60da991b7796367c5e768f2a9033f262d5c8c1020b67f9830ef5f8167d1d4617efcd0df697170d01392cfaa8353c62d08a7ec842f118379b9bcdeac9021affb3b0ddc785565dfc5b5e2049c177fbb388a6e25229ecc73aaf50e54f130e1e6343ba29f7dbb9a29e2f3b554218d618d42f740de16431867474b2757a117848861a2fe414a3e183b9ecee8017f261528487ea010d7485fb970e1aa75ac5e4f702d438208530e5fc8cb75d8acd61960bc8a93f254531529d826a9c831d8e42fcb21fb00ca95ec810f1e09f5009652905731e6502dc9aed7680622a9c8fd36840a674d9194969b625c4091391bbb1041fa0f52d43c06c43632437c342a6810c47b394a36bdcca4cf1ac369866a50e7720b83a72286d11ce789c8d523c59a8072de780e0d7770205ffc4af9d91cca6de721dba9ba4d408d66c6a1f2e8f700f3fca03a7f6c5f7864a97b43f3e40ae4ed4ddb4141cb6e4998a7ff7a0ff1eedd39de7cd664e2f1458b228aa37c724503955df99781bb223c757d9686f6429de9b2c98c0d9156ad62574942128499926c683c2129230d858b36ca6c78b0819cff88c9263328781d65a8a44847685db41d3c070b295d1bc4d159016ca665dd8b68ddab4d6c0fd6f6f0d3a210dc5884fa5f5b44e173b9ffa9c2b999eae5627306a07f35bb3aa3e9e4fbe802b538ccb8f0dc43bbacb6ea2bcb70105107af8c0fd692aa397b35d44fc5275423869e23698e527b2ccbc470ce608ed37592888e6f9c2d2dd9be1b6ab5808f04e6649d291125da15c6d899ac1b68a3cb323384cbc876a952a3f10b82fd4a08e3139f4626f3a37577c825311e64768f580e4fad8a0742baa7bd19f9eaa725491d00369af96a1860e04841b7d1d2220119afee0837222e88e3dd16e1a69825b836a631f46bdecb597d93c6c10672fdca299a8bab27d54d6a83bbffef724f7af98b6717e3a6972a8d708e837d517d141ec71b5ca6a39bff47b920ed88eacda3c3cdc2e27e5c8d9de2385b521cfea55eb0e8308f75ed37d37f78ed7f6e0ec8279875209c85686d601c3574388350632baa45e4f64f36c9665cae450a938757f8c774a94b92ca876145e6277eaf370b4f4052c2f44b15d905670e7f587c5aeac7aa1607dfcff979cd53208d7cd77d9a493ff7d5a2384afa186d5835b701c6c57fd1b9213ca5555709c757579c9d11b6ca18aee02886bacf866cc844fd78c52bcd87f4ce51fa23c3c6a0ecf0feb96a6146ae59eaaf4ac66179f0182fd901cc9d27b869d60fed7a389819b8c6d7ef92786ca24ed76307ae0873e0d66bff0cc71b61de9aec42754bedd427c797a7b9ed6552aabc892b56cb1ca8cc363619d45ac9b78d27c01dee2557ff60997f5adee6a293c30dc193b1e468d5ae9eef9ad282f1103556331ae66c8ecc69f01288ea549e725caa87912df917c557647545f43e080f61ba69c6d3b6dadb63419bd716cc5fb2a2f2799241288e1c56c1dbd332c658e982482199c2d3a8b09ece75e0401681e413248966a0010795c2d6d4ddbdc2d403a246bee44bfd5499a65910c2583702b43cf872204810737b095cd53759a59b5f25d61482918c281fe31c79a4b026588f65631cdfe45fba0059a944f2453741d880ef85f3398b3f8ee49fd4a65022a35d306c9e10e72ac000833b979237879c5efbcc1b32137590e7aed564b4afdf2ba3761c5b4cf681ad23aaaf7648e5ef6f2ed85e8d529953d83397ed03867e7d4956bcb3bb0d948ac85a3a76aed2fa93dc0ef2a261ecdf7a4485f94da83f22ee29519ff235fef62adabeba69315a8026a31f38bfa952c1123f418356458516b6e00a7362be537715e6be1e4cb7b9267b40216e53f6e793db50b664345947e4c4785cf9e8bc5c37450267e04d47defc5606b3ba3ef877c5fb9df70365d3ed5357278e8d7da39562f774d34a07de553436edb74ebe1df2ce61f6367cb5056181915bcff41b5e0d5ed2da82ca21c63c04ebf9d38e16e31653ba3b74709d26d9089587494f3a8f6f006042e5068ed828c3e668dbda74e81906627ed57cf5da2ec532f6ba7bbbe6df8b576564cfc9607558237f7a0065a48fd3e253db3bdf8efb78086acfa719fcb341688d0b7b786339b2622d17b92f2177a6defd484eacbd401b91c763be8e88c3f526cb5176b260c6b197a4399170b3391bcf7f90137ead870a297fbc5c3ec9ebc7b32c24557611c612a1befaf71d5f31750e06e9c115671d5b6bd1c336812a9fa88ab0ed3ea37a50373c601fb2f0bb623e910951677c5bc70acb58cd2d529dad9a7f18395027659f746ac6484f3c0e5a13acea9a65064fdbe3d16d386d47321461e4877d602a230adf1510584beca2f67ea9d5e83384aae86838f05bbe8529105f087bd08d13022faf31040ad5b4edce993466ad2e7bf8d3523c52dfad36c3cb2246acc0502a4520e4db9e373633ae43167b256f41c6661350043003fc9421f5047422e01ee51829aeed366ed13b86e4f8e40fc5ee3330ee8e4d6e095eb6feb42c8f8376818ee3a8e031ce3c83eb2841ae91f48fb9cec379812e3b72794ba4e933ad0da54085b412775c8a3dcb5259630cf3f47a79a1ab204a1d87d75ec342af7443a9a48acbf991223d3c55c6f0469f6a11ca82f2de31b13c2fe61be0992f0a37e1ed093c472f0441876f930984f74280e08a8e80d745e1a156f351dcec808cb66961ec6b541dc692fb44e7faec25f46e36cc0d7a3530814f38ce2916e2c77c54d4ad770fdf53540dd025b3543240e9c9d5d84c77c45da3f028ef774e266cda9008df425df8ba87444ca8d871bc9e157878dcde16f8078a3ca00131c66e20a456f1face55f6a87cab895dc4e5d3aa9844f6587e88af31fa278c68d1b391b8903f3833b57fb5a89fe5424d6901d1c47a5b91851676dd21ab9647dbfa85bb8f98972a15f6e701592bee0e7cd90a0f2d1a360792ab28ff29540d228d96d8c42b1b89869e1f35d6e25047669c35fdfd8921ccc72f806f106ed306f7349a6a51394806662bc3dc4bd5cde2eb6a33a3f10cefee335f2e57651c9ad0c74cecb825f55a5afc7a26de6b0c3f4f5e99dc2009547e98dd355f44b20b4b0059bef52ed1846f81aba8328dea2f296d50714537f3f1f92cbc01b340f6aaf28ce7b931eb906a9e221cc79dfb2197677c8f775d76e833a61574cecebd6fec7947b096dd781700a30a2604f59e98abea2c1716d9c1d64af7c7c6ab8416cc09abd937f49b4c159cda25d1e05f4936f9effca71c8f32e249bfed1a0a677490e5e41392601b2b419a4cb744bd7f26ae2882707a57de6d740d40b89ee4b9a9bf8efb657e02772460a6527a55bf641c6dcc89ce11619a33fa3df0b3065554be1dfa344454943a084a5043279ca862a9cd97e56b0054a1872ee85cb7beaabb21df8fe0da86fca19ff3f133dd032d866f324e1eb66188870e28a4d30f38fd31fbbd94ce6cfabfe7946e5ee3f98b59a45442b33f21340ce7c0a305bf3c1a05f90be5b409bfbf8622eb2e49209343ffcd0e9394f51cdfcfbba0dea1eb713ef7bd768b86879097e9b62bcb7e60e14182f1b5045d1589bb0c5240a273c74b437c7836c123343c3e7559d8faeb961e55fadd37e47ffe9508fb12050c32ae8a9087c6f47e0d769ac54166e8d33a24ccb576e927fe736a98dc23a90508605d982a7a838fd97086cb0711a66a4a2b5811dd496981ae843b0fd1182e73e35f84233e1c6d6801565c1065608d366fe4245dc80d479bac5299cdc528e0c483fdf5a91d63656d64aa950b113daf3fda4464f2c08ec44d00b70ca97d371130610f8a2dfd028e81c22d9fd1716c13ca167799e627e5f9d31e3c182fd6c4a702b572753ddd5f687908076fed86f3f99b449e237a6edd9d92835879e711760834dddddd15719f64f5faa5f58ccaa68cdcda82b77c17f2ba55ca4fbadea28453f689ae1268b980242d37fb7e57e00481ff488a67ffd7ce25730db12c23e78b3d6745b73cfa43967823dd8c489849d6066877c86394a61ccdd908b93fd2a14b34ac10b50d3927513f4389adbe8abf17d8208660fbaa845fb8415653b0e1e913e74e81e51de01311c94adc66e58b42db9db51e66b8008d7ba21cbb974b109c2f688fd540aa7be0a187e9d45ef6a8d89a1ecdbefa3bbf4dc92ab73ffb0604783df03e06419e29a4c46d72b1dc6b37be9931193d57b7837ac</script>  <div class="hbe hbe-content">    <div class="hbe hbe-input hbe-input-wave">      <input class="hbe hbe-input-field hbe-input-field-wave" type="password" id="hbePass">      <label class="hbe hbe-input-label hbe-input-label-wave" for="hbePass">        <span class="hbe hbe-input-label-content hbe-input-label-content-wave">您好, 这里需要密码.</span>      </label>      <svg class="hbe hbe-graphic hbe-graphic-wave" width="300%" height="100%" viewBox="0 0 1200 60" preserveAspectRatio="none">        <path d="M0,56.5c0,0,298.666,0,399.333,0C448.336,56.5,513.994,46,597,46c77.327,0,135,10.5,200.999,10.5c95.996,0,402.001,0,402.001,0"></path>      </svg>    </div>  </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/programmer/company/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>中文字/词语/成语解释</title>
      <link>https://www.ninojay.top/writing/Chinese-keyword/</link>
      <guid>https://www.ninojay.top/writing/Chinese-keyword/</guid>
      <pubDate>Sat, 27 May 2023 11:40:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>[TOC]</p><h5 id="字"><a href="#字" class="headerlink" title="字"></a>字</h5><h6 id="咲-xiao"><a href="#咲-xiao" class="headerlink" title="咲 /xiào/"></a>咲 /xiào/</h6><p>古同“笑”，露出喜悦的表情，发出高兴的声音。</p><h5 id="词语"><a href="#词语" class="headerlink" title="词语"></a>词语</h5><h6 id="斧正"><a href="#斧正" class="headerlink" title="斧正"></a><strong>斧正</strong></h6><p><em>动词</em>，<em>敬词</em>，用于请他人指正、修改诗文。</p><hr><h6 id="砥砺"><a href="#砥砺" class="headerlink" title="砥砺"></a>砥砺</h6><p>/dǐ lì/</p><p><em>名词</em> 磨刀石。</p><p><em>动词</em> 磨炼。</p><hr><h6 id="存殁"><a href="#存殁" class="headerlink" title="存殁"></a>存殁</h6><p>/cún mò/</p><p>生存和死亡。</p><hr><h6 id="占筮"><a href="#占筮" class="headerlink" title="占筮"></a>占筮</h6><p>/zhàn shì/</p><p>它是通过特定的方法，通过抛筛、抽签或摇筛等方式，来预测未来或者解决问题。</p><hr><h6 id="临沂"><a href="#临沂" class="headerlink" title="临沂"></a>临沂</h6><p>/lín yí/</p><p>临沂是中国山东省的一个城市，位于山东省南部。</p><hr><h6 id="新贵"><a href="#新贵" class="headerlink" title="新贵"></a>新贵</h6><p>/xīn guì/</p><p>新近作高官的人；新的贵族。</p><hr><h6 id="檄文"><a href="#檄文" class="headerlink" title="檄文"></a>檄文</h6><p>/xí wén/</p><p>(<strong>也说檄书</strong>)</p><p>古代用于征召、声讨、晓谕等的政府文告；特指声讨、揭发罪行的文告。</p><hr><h6 id="须臾"><a href="#须臾" class="headerlink" title="须臾"></a>须臾</h6><p>/xū yú/</p><p>一会儿；片刻</p><hr><h6 id="祛魅"><a href="#祛魅" class="headerlink" title="祛魅"></a><strong>祛魅</strong></h6><p>/qū mèi/</p><p>意为对于科学和知识的神秘性、神圣性、魅惑力的消解。</p><h5 id="成语"><a href="#成语" class="headerlink" title="成语"></a>成语</h5><h6 id="治丝益棼"><a href="#治丝益棼" class="headerlink" title="治丝益棼"></a>治丝益棼</h6><p>/zhì sī yì fén/</p><p>（棼：纷乱）意思是理丝不找出头绪，只能越理越乱。后用「治丝益棼」比喻解决问题不得要领，反而使问题更加复杂。</p><hr><h6 id="聚讼不已"><a href="#聚讼不已" class="headerlink" title="聚讼不已"></a>聚讼不已</h6><p>/jù sòng bù yǐ/</p><p>形容许多人在一起争论不休，没有一致看法。</p><hr><h6 id="和而不同"><a href="#和而不同" class="headerlink" title="和而不同"></a>和而不同</h6><p>/hé ér bù tóng/</p><p>尽管各自有所不同，但是可以和睦相处，避免冲突。</p><hr><h6 id="三缄其口"><a href="#三缄其口" class="headerlink" title="三缄其口"></a>三缄其口</h6><p>/sān jiān qí kǒu/</p><p>形容说话极其谨慎，不轻易开口（缄：关闭）。</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E5%A3%B0%E5%85%89/">声光</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E6%91%98%E6%8A%84/">摘抄</category>
      
      
      <comments>https://www.ninojay.top/writing/Chinese-keyword/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>常见英文缩写解释</title>
      <link>https://www.ninojay.top/writing/English-keyword/</link>
      <guid>https://www.ninojay.top/writing/English-keyword/</guid>
      <pubDate>Sat, 27 May 2023 11:40:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>[TOC]</p><h3 id="生活常见"><a href="#生活常见" class="headerlink" title="生活常见"></a>生活常见</h3><h4 id="ps（postscript）"><a href="#ps（postscript）" class="headerlink" title="ps（postscript）"></a>ps（postscript）</h4><p>又写作“P.S.”，附言。</p><h4 id="FAQ（Frequently-Asked-Questions）"><a href="#FAQ（Frequently-Asked-Questions）" class="headerlink" title="FAQ（Frequently Asked Questions）"></a>FAQ（Frequently Asked Questions）</h4><p>“常见问题解答”。通常在网站、论坛或应用程序中，FAQ是一份列出常见问题和答案的文档，旨在帮助用户解决问题。</p><h4 id="DLC（Downloadable-Content）"><a href="#DLC（Downloadable-Content）" class="headerlink" title="DLC（Downloadable Content）"></a>DLC（Downloadable Content）</h4><p>即可下载内容。在游戏中，DLC是指玩家可以通过下载的方式获得的额外游戏内容，如新地图、新任务、新角色、新道具等。这些DLC通常需要额外付费，可以为游戏增添新的玩法和体验。</p><h4 id="eldest和oldest"><a href="#eldest和oldest" class="headerlink" title="eldest和oldest"></a>eldest和oldest</h4><p>“Eldest” 和 “oldest” 是英语中两个不同的词，它们的意思都是”最年长的”。</p><p>“Eldest” 通常用于描述家庭中年龄最大的<strong>孩子</strong></p><p> “oldest” 通常用于描述年龄最大的人或物体。</p><hr><h3 id="网站相关"><a href="#网站相关" class="headerlink" title="网站相关"></a>网站相关</h3><h4 id="UV-unique-visitors"><a href="#UV-unique-visitors" class="headerlink" title="UV (unique visitors)"></a>UV (unique visitors)</h4><p>独立访问者数量，00：00——23：59，也即1天内某站点的访问人数（以cookie为依据）。一天内同一个访客的多次访问只记为1个UV。</p><h4 id="PV-page-views"><a href="#PV-page-views" class="headerlink" title="PV (page views)"></a>PV (page views)</h4><p>页面浏览数，用户每打开/刷新一次页面就记录一次，多次打开会累计。</p><hr><h3 id="开发接口相关"><a href="#开发接口相关" class="headerlink" title="开发接口相关"></a>开发接口相关</h3><h4 id="QPS（Queries-Per-Second）"><a href="#QPS（Queries-Per-Second）" class="headerlink" title="QPS（Queries Per Second）"></a>QPS（Queries Per Second）</h4><p>每秒查询率，是一台服务器每秒能够相应的查询次数，是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。</p><p>互联网中，作为域名系统服务器的机器的性能经常用每秒查询率来衡量。</p><h4 id="TPS（TransactionsPerSecond）"><a href="#TPS（TransactionsPerSecond）" class="headerlink" title="TPS（TransactionsPerSecond）"></a>TPS（TransactionsPerSecond）</h4><p>每秒事务数。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。</p><p>客户机在发送请求时开始计时，收到服务器响应后结束计时，以此来计算使用的时间和完成的事务个数。</p><h5 id="QPS-vs-TPS"><a href="#QPS-vs-TPS" class="headerlink" title="QPS vs TPS"></a>QPS vs TPS</h5><p>QPS基本类似于TPS，但是不同的是，对于一个页面的一次访问，形成一个TPS；</p><p>但一次页面请求，可能产生多次对服务器的请求，服务器对这些请求，就可计入“QPS”之中。</p><p>如，访问一个页面会请求服务器2次，一次访问，产生一个“T”，产生2个“Q”。</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E7%A8%8B%E5%BA%8F%E5%91%98/">程序员</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E6%91%98%E6%8A%84/">摘抄</category>
      
      
      <comments>https://www.ninojay.top/writing/English-keyword/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>hexo | A4支持资源压缩部署加速网站访问</title>
      <link>https://www.ninojay.top/hexoplugin/hexo-all-minifier/</link>
      <guid>https://www.ninojay.top/hexoplugin/hexo-all-minifier/</guid>
      <pubDate>Thu, 25 May 2023 04:48:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h2 id="效果演示"><a href="#效果演示" class="headerlink" title="效果演示"></a>效果演示</h2><p>如果你的网站内容较多。</p><p>安装此款插件后，本地启动/部署过程中会压缩网站源码中的图片，csss，js等资源，部署成功后将大幅度提升你的网站访问速度。</p><p>如下图所示，有的图片经过压缩后，节省超过50%的空间。</p><p><a href="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/postImages/hexo-all-minifier.png" title="image-20230525125619014" class="gallery-item" style="box-shadow: none;"> <img src="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/postImages/hexo-all-minifier.png" alt="image-20230525125619014"></a></p><p>缺点在于，本地启动/部署耗费的时间多一些。</p><h2 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h2><p>你的网站文件夹，举例为<code>website</code>。</p><ol><li><p>命令行进入到<code>webiste</code>目录。</p></li><li><p>执行命令安装hexo插件：</p></li></ol><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">npm</span> <span class="string">install</span> <span class="string">hexo-all-minifier</span></span><br></pre></td></tr></tbody></table></figure><ol start="3"><li>添加如下配置到<code>_config.yml</code>文件（注意不是A4主题的配置文件）</li></ol><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 资源进行打包压缩</span></span><br><span class="line"><span class="attr">all_minifier:</span> <span class="literal">true</span> </span><br></pre></td></tr></tbody></table></figure><ol start="4"><li>执行命令查看效果</li></ol><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">hexo</span> <span class="string">clean</span> <span class="string">&amp;&amp;</span> <span class="string">hexo</span> <span class="string">g</span> <span class="string">&amp;&amp;</span> <span class="string">hexo</span> <span class="string">s</span></span><br></pre></td></tr></tbody></table></figure><p>引用：</p><ul><li><strong><a href="https://github.com/chenzhutian/hexo-all-minifier">hexo-all-minifier</a></strong></li></ul></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E8%BD%AF%E4%BB%B6/">软件</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E6%90%AD%E5%BB%BA%E7%BD%91%E7%AB%99/">搭建网站</category>
      
      <category domain="https://www.ninojay.top/tags/hexo/">hexo</category>
      
      <category domain="https://www.ninojay.top/tags/hexoPlugin/">hexoPlugin</category>
      
      
      <comments>https://www.ninojay.top/hexoplugin/hexo-all-minifier/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>hexo | A4支持生成RSS订阅文件</title>
      <link>https://www.ninojay.top/hexoplugin/hexo-generator-feed/</link>
      <guid>https://www.ninojay.top/hexoplugin/hexo-generator-feed/</guid>
      <pubDate>Thu, 25 May 2023 04:48:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h2 id="效果演示"><a href="#效果演示" class="headerlink" title="效果演示"></a>效果演示</h2><p>安装此款插件，会自动生成atom.xml文件，让你的网站具备RSS订阅功能（可以通过使用RSS软件订阅你的网站）。</p><p><a href="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/a4color/hexo-generator-feed.png" class="gallery-item" style="box-shadow: none;"> <img src="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/a4color/hexo-generator-feed.png"></a></p><h2 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h2><p>你的网站文件夹，举例为<code>website</code>。</p><ol><li><p>命令行进入到<code>webiste</code>目录。</p></li><li><p>执行命令安装hexo插件：</p></li></ol><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">$</span> <span class="string">npm</span> <span class="string">install</span> <span class="string">hexo-generator-feed</span> <span class="string">--save</span></span><br></pre></td></tr></tbody></table></figure><ol start="3"><li>添加如下配置到<code>_config.yml</code>文件（注意不是A4主题的配置文件）</li></ol><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">feed:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">type:</span> <span class="string">atom</span></span><br><span class="line">  <span class="attr">path:</span> <span class="string">atom.xml</span></span><br><span class="line">  <span class="attr">limit:</span> <span class="number">20</span></span><br><span class="line">  <span class="attr">hub:</span></span><br><span class="line">  <span class="attr">content:</span></span><br><span class="line">  <span class="attr">content_limit:</span> <span class="number">140</span></span><br><span class="line">  <span class="attr">content_limit_delim:</span> <span class="string">' '</span></span><br><span class="line">  <span class="attr">order_by:</span> <span class="string">-date</span></span><br><span class="line">  <span class="attr">icon:</span> <span class="string">icon.png</span></span><br><span class="line">  <span class="attr">autodiscovery:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">template:</span></span><br></pre></td></tr></tbody></table></figure><ol start="4"><li>执行命令查看效果</li></ol><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">hexo</span> <span class="string">clean</span> <span class="string">&amp;&amp;</span> <span class="string">hexo</span> <span class="string">g</span> <span class="string">&amp;&amp;</span> <span class="string">hexo</span> <span class="string">s</span></span><br></pre></td></tr></tbody></table></figure><p>引用：</p><ul><li><strong><a href="https://github.com/hexojs/hexo-generator-feed">hexo-generator-feed</a></strong></li></ul></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E8%BD%AF%E4%BB%B6/">软件</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E6%90%AD%E5%BB%BA%E7%BD%91%E7%AB%99/">搭建网站</category>
      
      <category domain="https://www.ninojay.top/tags/hexo/">hexo</category>
      
      <category domain="https://www.ninojay.top/tags/hexoPlugin/">hexoPlugin</category>
      
      
      <comments>https://www.ninojay.top/hexoplugin/hexo-generator-feed/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>hexo | A4支持生成sitemap站点地图</title>
      <link>https://www.ninojay.top/hexoplugin/hexo-generator-sitemap/</link>
      <guid>https://www.ninojay.top/hexoplugin/hexo-generator-sitemap/</guid>
      <pubDate>Thu, 25 May 2023 04:48:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h2 id="效果演示"><a href="#效果演示" class="headerlink" title="效果演示"></a>效果演示</h2><p>通常想要搜索引擎比如谷歌/百度，收录我们的网站，提供一个更好的搜索效果，为后期的搜索引擎优化(SEO)工作提供有力的帮助。我们需要提供sitemap。</p><blockquote><p>sitemap（网站地图）通常就是一个展示网站所有链接的页面。</p></blockquote><p>安装插件即可自动生成sitemap.txt和sitemap.xml文件。</p><p><a href="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/a4color/hexo-generator-sitemap.png" class="gallery-item" style="box-shadow: none;"> <img src="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/a4color/hexo-generator-sitemap.png"></a></p><h2 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h2><p>你的网站文件夹，举例为<code>website</code>。</p><ol><li><p>命令行进入到<code>webiste</code>目录。</p></li><li><p>执行命令安装hexo插件：</p></li></ol><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">npm</span> <span class="string">install</span> <span class="string">hexo-generator-sitemap</span> <span class="string">--save</span></span><br></pre></td></tr></tbody></table></figure><ol start="3"><li>添加如下配置到<code>_config.yml</code>文件（注意不是A4主题的配置文件）</li></ol><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">sitemap:</span></span><br><span class="line">  <span class="attr">path:</span> </span><br><span class="line">    <span class="bullet">-</span> <span class="string">sitemap.xml</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">sitemap.txt</span></span><br><span class="line">  <span class="attr">template:</span> <span class="string">./sitemap_template.xml</span></span><br><span class="line">  <span class="attr">template_txt:</span> <span class="string">./sitemap_template.txt</span></span><br><span class="line">  <span class="attr">rel:</span> <span class="literal">false</span></span><br><span class="line">  <span class="attr">tags:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">categories:</span> <span class="literal">true</span></span><br></pre></td></tr></tbody></table></figure><ol start="4"><li>执行命令查看效果</li></ol><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">hexo</span> <span class="string">clean</span> <span class="string">&amp;&amp;</span> <span class="string">hexo</span> <span class="string">g</span> <span class="string">&amp;&amp;</span> <span class="string">hexo</span> <span class="string">s</span></span><br></pre></td></tr></tbody></table></figure><p>引用：</p><ul><li><strong><a href="https://github.com/hexojs/hexo-generator-sitemap">hexo-generator-sitemap</a></strong></li></ul></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E8%BD%AF%E4%BB%B6/">软件</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E6%90%AD%E5%BB%BA%E7%BD%91%E7%AB%99/">搭建网站</category>
      
      <category domain="https://www.ninojay.top/tags/hexo/">hexo</category>
      
      <category domain="https://www.ninojay.top/tags/hexoPlugin/">hexoPlugin</category>
      
      
      <comments>https://www.ninojay.top/hexoplugin/hexo-generator-sitemap/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>hexo | A4支持markdown脚标便捷显示</title>
      <link>https://www.ninojay.top/hexoplugin/hexo-reference/</link>
      <guid>https://www.ninojay.top/hexoplugin/hexo-reference/</guid>
      <pubDate>Wed, 24 May 2023 13:02:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h2 id="效果演示"><a href="#效果演示" class="headerlink" title="效果演示"></a>效果演示</h2><p>markdown文件中末尾使用如下语法，定义一个脚标：</p><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[ <span class="string">^</span> <span class="number">1</span>]<span class="string">:</span> <span class="string">第一个脚标，信息显示成功</span> <span class="comment"># 把[]里的空格去除，演示需要加空格</span></span><br></pre></td></tr></tbody></table></figure><p>在文件内容里想要引入脚标的位置使用如下语法：</p><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">这里有一个脚标[</span> <span class="string">^</span> <span class="number">1</span> <span class="string">]</span> <span class="comment"># 把[]里的空格去除，演示需要加空格</span></span><br></pre></td></tr></tbody></table></figure><p>将呈现如下效果：</p><p>这里有一个脚标<sup id="fnref:1"><a href="#fn:1" rel="footnote"><span class="hint--top hint--error hint--medium hint--rounded hint--bounce" aria-label="第一个脚标，信息显示成功">[1]</span></a></sup>，鼠标放上去会显示内容。<sup id="fnref:2"><a href="#fn:2" rel="footnote"><span class="hint--top hint--error hint--medium hint--rounded hint--bounce" aria-label="第二个脚标">[2]</span></a></sup></p><p><a href="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/postImages/hexo-reference.png" class="gallery-item" style="box-shadow: none;"> <img src="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/postImages/hexo-reference.png"></a></p><h2 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h2><p>你的网站文件夹，举例为<code>website</code>。</p><ol><li><p>命令行进入到<code>webiste</code>目录。</p></li><li><p>执行命令安装hexo插件：</p></li></ol><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">npm</span> <span class="string">install</span> <span class="string">hexo-reference</span> <span class="string">--save</span></span><br></pre></td></tr></tbody></table></figure><ol start="3"><li>执行命令查看效果</li></ol><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">hexo</span> <span class="string">clean</span> <span class="string">&amp;&amp;</span> <span class="string">hexo</span> <span class="string">g</span> <span class="string">&amp;&amp;</span> <span class="string">hexo</span> <span class="string">s</span></span><br></pre></td></tr></tbody></table></figure><h2 id="其他"><a href="#其他" class="headerlink" title="其他"></a>其他</h2><p>经过A4使用者<a href="https://github.com/AllenGo912">AllenGo912</a>使用测试，中国大陆使用hexo-reference插件可能会有加载速度变慢的情况（该插件自带CDN的链接缘故）。</p><p>如果需要，可安装经过@AllenGo912调整CDN后的<a href="https://github.com/AllenGo912/hexo-reference-new">hexo-reference-new</a>。</p><p>1.执行命令删除hexo-reference插件</p><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">npm</span> <span class="string">uninstall</span> <span class="string">hexo-reference</span></span><br></pre></td></tr></tbody></table></figure><p>2.执行命令安装hexo-reference-new插件</p><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">npm</span> <span class="string">install</span> <span class="string">hexo-reference-new</span> <span class="string">--save</span></span><br></pre></td></tr></tbody></table></figure><p>引用：</p><ul><li><strong><a href="https://github.com/kchen0x/hexo-reference">hexo-reference</a></strong></li><li><strong><a href="https://github.com/AllenGo912/hexo-reference-new">hexo-reference-new</a></strong></li></ul><div id="footnotes"><hr><div id="footnotelist"><ol style="list-style: none; padding-left: 0; margin-left: 40px"><li id="fn:1"><span style="display: inline-block; vertical-align: top; padding-right: 10px; margin-left: -40px">1.</span><span style="display: inline-block; vertical-align: top; margin-left: 10px;">第一个脚标，信息显示成功<a href="#fnref:1" rev="footnote"> ↩</a></span></li><li id="fn:2"><span style="display: inline-block; vertical-align: top; padding-right: 10px; margin-left: -40px">2.</span><span style="display: inline-block; vertical-align: top; margin-left: 10px;">第二个脚标<a href="#fnref:2" rev="footnote"> ↩</a></span></li></ol></div></div></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E8%BD%AF%E4%BB%B6/">软件</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E6%90%AD%E5%BB%BA%E7%BD%91%E7%AB%99/">搭建网站</category>
      
      <category domain="https://www.ninojay.top/tags/hexo/">hexo</category>
      
      <category domain="https://www.ninojay.top/tags/hexoPlugin/">hexoPlugin</category>
      
      
      <comments>https://www.ninojay.top/hexoplugin/hexo-reference/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>hexo | A4支持emojis语法</title>
      <link>https://www.ninojay.top/hexoplugin/hexo-filter-github-emojis/</link>
      <guid>https://www.ninojay.top/hexoplugin/hexo-filter-github-emojis/</guid>
      <pubDate>Mon, 22 May 2023 05:55:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h2 id="效果演示"><a href="#效果演示" class="headerlink" title="效果演示"></a>效果演示</h2><p>在md文件中使用如下语法：</p><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">:smile:</span> <span class="string">:taco:</span> <span class="string">:santa:</span></span><br></pre></td></tr></tbody></table></figure><p>即可显示：</p><p><span class="github-emoji"><span>😄</span><img src="https://github.githubassets.com/images/icons/emoji/unicode/1f604.png?v8" aria-hidden="true" onerror="this.parent.classList.add('github-emoji-fallback')"></span> <span class="github-emoji"><span>🌮</span><img src="https://github.githubassets.com/images/icons/emoji/unicode/1f32e.png?v8" aria-hidden="true" onerror="this.parent.classList.add('github-emoji-fallback')"></span> <span class="github-emoji"><span>🎅</span><img src="https://github.githubassets.com/images/icons/emoji/unicode/1f385.png?v8" aria-hidden="true" onerror="this.parent.classList.add('github-emoji-fallback')"></span></p><h2 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h2><p>你的网站文件夹，举例为<code>website</code>。</p><ol><li><p>命令行进入到<code>webiste</code>目录。</p></li><li><p>执行命令安装hexo插件：</p></li></ol><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">npm</span> <span class="string">install</span> <span class="string">hexo-filter-github-emojis</span></span><br></pre></td></tr></tbody></table></figure><ol start="3"><li>添加如下配置到<code>_config.yml</code>文件（注意不是A4主题的配置文件）</li></ol><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># hexo 支持 emojis语法 插件</span></span><br><span class="line"><span class="attr">githubEmojis:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">className:</span> <span class="string">github-emoji</span></span><br><span class="line">  <span class="attr">unicode:</span> <span class="literal">false</span></span><br><span class="line">  <span class="attr">styles:</span></span><br><span class="line">  <span class="attr">localEmojis:</span></span><br></pre></td></tr></tbody></table></figure><ol start="4"><li>执行命令查看效果</li></ol><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">hexo</span> <span class="string">clean</span> <span class="string">&amp;&amp;</span> <span class="string">hexo</span> <span class="string">g</span> <span class="string">&amp;&amp;</span> <span class="string">hexo</span> <span class="string">s</span></span><br></pre></td></tr></tbody></table></figure><p>引用：</p><ul><li><strong><a href="https://github.com/crimx/hexo-filter-github-emojis">hexo-filter-github-emojis</a></strong></li></ul></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E8%BD%AF%E4%BB%B6/">软件</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E6%90%AD%E5%BB%BA%E7%BD%91%E7%AB%99/">搭建网站</category>
      
      <category domain="https://www.ninojay.top/tags/hexo/">hexo</category>
      
      <category domain="https://www.ninojay.top/tags/hexoPlugin/">hexoPlugin</category>
      
      
      <comments>https://www.ninojay.top/hexoplugin/hexo-filter-github-emojis/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>hexo | A4颜色搭配推荐</title>
      <link>https://www.ninojay.top/hexoplugin/A4-color-change/</link>
      <guid>https://www.ninojay.top/hexoplugin/A4-color-change/</guid>
      <pubDate>Sun, 21 May 2023 13:55:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>在hexo-theme-A4即本主题更新了1.6.7版本后，支持页面所有颜色自定义调整，只需要在<code>_config.a4.yml</code>配置文件中相应配置修改为你喜欢的颜色即可。<sup id="fnref:1"><a href="#fn:1" rel="footnote"><span class="hint--top hint--error hint--medium hint--rounded hint--bounce" aria-label="脚标测试">[1]</span></a></sup></p><p>但是<code>颜色搭配是一门学问</code>，以下直接告诉你可供选择使用的配色，利于切换主题风格。</p><blockquote><p>你有自己研究出来的顺眼配色，也可在下方评论区留言，我看到后将更新到此页面。</p></blockquote><h3 id="灰白配色-默认"><a href="#灰白配色-默认" class="headerlink" title="灰白配色-默认"></a>灰白配色-默认</h3><h4 id="效果演示"><a href="#效果演示" class="headerlink" title="效果演示"></a>效果演示</h4><p><a href="https://jsd.cdn.zzko.cn/gh/hininojay/images/a4color/greywhite.png" title="灰白A4" class="gallery-item" style="box-shadow: none;"> <img src="https://jsd.cdn.zzko.cn/gh/hininojay/images/a4color/greywhite.png" alt="灰白A4"></a></p><h4 id="如何启用？"><a href="#如何启用？" class="headerlink" title="如何启用？"></a>如何启用？</h4><p>该配色为A4启动后默认配色。保证<code>_config.a4.yml</code>配置文件中<code>color</code>设置为<code>false</code>即可</p><p>或者<code>color</code>设置为<code>true</code>采用以下配置</p><figure class="highlight yml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 实验性功能：A4色调调整：颜色搭配是很主观的行为</span></span><br><span class="line"><span class="comment"># 设置为 false 为 A4 默认色调，可设置为 true 直接hexo s 体验下 另一种预置色调</span></span><br><span class="line"><span class="comment"># 注：颜色代码需加“#”，颜色单词不需要加“#”</span></span><br><span class="line"><span class="attr">color:</span> </span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span> <span class="comment"># true | false</span></span><br><span class="line">  <span class="attr">font:</span> <span class="string">"#000000"</span> <span class="comment"># 字体颜色</span></span><br><span class="line">  <span class="attr">background:</span> <span class="string">"#e4e4e4"</span> <span class="comment"># 最底部层背景颜色</span></span><br><span class="line">  <span class="attr">indexBackGround:</span> <span class="string">"#ffffff"</span> <span class="comment"># 首页层颜色</span></span><br><span class="line">  <span class="attr">postBackGround:</span> <span class="string">"#ffffff"</span> <span class="comment"># 文章页层颜色</span></span><br><span class="line">  <span class="attr">codeBackGround:</span> <span class="string">"black"</span> <span class="comment"># 代码行和块的背景色</span></span><br><span class="line">  <span class="attr">codeFont:</span> <span class="string">"white"</span>  <span class="comment"># 代码块字体颜色 </span></span><br><span class="line">  <span class="attr">linkBeforeClick:</span> <span class="string">"#fec591"</span> <span class="comment"># 链接点击前的颜色，标题也是链接，所以标题颜色也在此修改</span></span><br><span class="line">  <span class="attr">linkAfterClick:</span> <span class="string">"#fec591"</span> <span class="comment"># 链接点击后的颜色</span></span><br></pre></td></tr></tbody></table></figure><h3 id="棕色墨绿护眼配色-预置"><a href="#棕色墨绿护眼配色-预置" class="headerlink" title="棕色墨绿护眼配色-预置"></a>棕色墨绿护眼配色-预置</h3><h4 id="效果演示-1"><a href="#效果演示-1" class="headerlink" title="效果演示"></a>效果演示</h4><p><a href="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/a4color/brownRed.png" title="棕红" class="gallery-item" style="box-shadow: none;"> <img src="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/a4color/brownRed.png" alt="棕红"></a></p><h4 id="如何启用？-1"><a href="#如何启用？-1" class="headerlink" title="如何启用？"></a>如何启用？</h4><p>该配色<code>_config.a4.yml</code>配置文件中预置，将<code>color</code>设置为<code>true</code>，采用以下配置</p><figure class="highlight yml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 实验性功能：A4色调调整：颜色搭配是很主观的行为</span></span><br><span class="line"><span class="comment"># 设置为 false 为 A4 默认色调，可设置为 true 直接hexo s 体验下 另一种预置色调</span></span><br><span class="line"><span class="comment"># 注：颜色代码需加“#”，颜色单词不需要加“#”</span></span><br><span class="line"><span class="attr">color:</span> </span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span> <span class="comment"># true | false</span></span><br><span class="line">  <span class="attr">font:</span> <span class="string">"#9e5345"</span> <span class="comment"># 字体颜色</span></span><br><span class="line">  <span class="attr">background:</span> <span class="string">"#e8e0c9"</span> <span class="comment"># 最底部层背景颜色</span></span><br><span class="line">  <span class="attr">indexBackGround:</span> <span class="string">"#efeae2"</span> <span class="comment"># 首页层颜色</span></span><br><span class="line">  <span class="attr">postBackGround:</span> <span class="string">"#efeae2"</span> <span class="comment"># 文章页层颜色</span></span><br><span class="line">  <span class="attr">codeBackGround:</span> <span class="string">"#e8e0c9"</span>  <span class="comment"># 代码行和块的背景色</span></span><br><span class="line">  <span class="attr">codeFont:</span> <span class="string">"#2e5041"</span> <span class="comment"># 代码块字体颜色 </span></span><br><span class="line">  <span class="attr">linkBeforeClick:</span> <span class="string">"#2e5041"</span> <span class="comment"># 链接点击前的颜色，标题也是链接，所以标题颜色也在此修改</span></span><br><span class="line">  <span class="attr">linkAfterClick:</span> <span class="string">"#9c9caf"</span> <span class="comment"># 链接点击后的颜色</span></span><br></pre></td></tr></tbody></table></figure><h3 id="青花瓷配色"><a href="#青花瓷配色" class="headerlink" title="青花瓷配色"></a>青花瓷配色</h3><h4 id="效果演示-2"><a href="#效果演示-2" class="headerlink" title="效果演示"></a>效果演示</h4><p><a href="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/a4color/blueAndWhite.png" title="青蓝A4" class="gallery-item" style="box-shadow: none;"> <img src="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/a4color/blueAndWhite.png" alt="青蓝A4"></a></p><h4 id="如何启用？-2"><a href="#如何启用？-2" class="headerlink" title="如何启用？"></a>如何启用？</h4><p>该配色<code>_config.a4.yml</code>配置文件中预置，将<code>color</code>设置为<code>true</code>，采用以下配置</p><figure class="highlight yml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 实验性功能：A4色调调整：颜色搭配是很主观的行为</span></span><br><span class="line"><span class="comment"># 设置为 false 为 A4 默认色调，可设置为 true 直接hexo s 体验下 另一种预置色调</span></span><br><span class="line"><span class="comment"># 注：颜色代码需加“#”，颜色单词不需要加“#”</span></span><br><span class="line"><span class="attr">color:</span> </span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span> <span class="comment"># true | false</span></span><br><span class="line">  <span class="attr">font:</span> <span class="string">"#323e74"</span> <span class="comment"># 字体颜色</span></span><br><span class="line">  <span class="attr">background:</span> <span class="string">"#eaeae8"</span> <span class="comment"># 最底部层背景颜色</span></span><br><span class="line">  <span class="attr">indexBackGround:</span> <span class="string">"#f2fafc"</span> <span class="comment"># 首页层颜色</span></span><br><span class="line">  <span class="attr">postBackGround:</span> <span class="string">"#f2fafc"</span> <span class="comment"># 文章页层颜色</span></span><br><span class="line">  <span class="attr">codeBackGround:</span> <span class="string">"#e7f7f3"</span>  <span class="comment"># 代码行和块的背景色</span></span><br><span class="line">  <span class="attr">codeFont:</span> <span class="string">"#7f688d"</span> <span class="comment"># 代码块字体颜色 </span></span><br><span class="line">  <span class="attr">linkBeforeClick:</span> <span class="string">"#7f688d"</span> <span class="comment"># 链接点击前的颜色，标题也是链接，所以标题颜色也在此修改</span></span><br><span class="line">  <span class="attr">linkAfterClick:</span> <span class="string">"#767c7c"</span> <span class="comment"># 链接点击后的颜色</span></span><br></pre></td></tr></tbody></table></figure><h3 id="绿金配色"><a href="#绿金配色" class="headerlink" title="绿金配色"></a>绿金配色</h3><h4 id="效果演示-3"><a href="#效果演示-3" class="headerlink" title="效果演示"></a>效果演示</h4><p><a href="https://jsd.cdn.zzko.cn/gh/hininojay/images/a4color/greengolden.png" title="绿金A4" class="gallery-item" style="box-shadow: none;"> <img src="https://jsd.cdn.zzko.cn/gh/hininojay/images/a4color/greengolden.png" alt="绿金A4"></a></p><h4 id="如何启用？-3"><a href="#如何启用？-3" class="headerlink" title="如何启用？"></a>如何启用？</h4><p>该配色<code>_config.a4.yml</code>配置文件中预置，将<code>color</code>设置为<code>true</code>，采用以下配置</p><figure class="highlight yml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 实验性功能：A4色调调整：颜色搭配是很主观的行为</span></span><br><span class="line"><span class="comment"># 设置为 false 为 A4 默认色调，可设置为 true 直接hexo s 体验下 另一种预置色调</span></span><br><span class="line"><span class="comment"># 注：颜色代码需加“#”，颜色单词不需要加“#”</span></span><br><span class="line"><span class="attr">color:</span> </span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span> <span class="comment"># true | false </span></span><br><span class="line">  <span class="attr">font:</span> <span class="string">"#fec591"</span> <span class="comment"># 字体颜色</span></span><br><span class="line">  <span class="attr">background:</span> <span class="string">"#005454"</span> <span class="comment"># 最底部层背景颜色</span></span><br><span class="line">  <span class="attr">indexBackGround:</span> <span class="string">"#005454"</span> <span class="comment"># 首页层颜色</span></span><br><span class="line">  <span class="attr">postBackGround:</span> <span class="string">"#005454"</span> <span class="comment"># 文章页层颜色</span></span><br><span class="line">  <span class="attr">codeBackGround:</span> <span class="string">"black"</span> <span class="comment"># 代码块背景颜色</span></span><br><span class="line">  <span class="attr">codeFont:</span> <span class="string">"white"</span> <span class="comment"># 代码块字体颜色 </span></span><br><span class="line">  <span class="attr">linkBeforeClick:</span> <span class="string">"#fec591"</span> <span class="comment"># 链接点击前的颜色，标题也是链接，所以标题颜色也在此修改</span></span><br><span class="line">  <span class="attr">linkAfterClick:</span> <span class="string">"#fec591"</span> <span class="comment"># 链接点击后的颜色</span></span><br></pre></td></tr></tbody></table></figure><h3 id="你想推荐你的配色？"><a href="#你想推荐你的配色？" class="headerlink" title="你想推荐你的配色？"></a>你想推荐你的配色？</h3><p>请在评论区回复你的配置文件<code>color</code>部分代码。</p><figure class="highlight yml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 实验性功能：A4色调调整：颜色搭配是很主观的行为</span></span><br><span class="line"><span class="comment"># 设置为 false 为 A4 默认色调，可设置为 true 直接hexo s 体验下 另一种预置色调</span></span><br><span class="line"><span class="comment"># 注：颜色代码需加“#”，颜色单词不需要加“#”</span></span><br><span class="line"><span class="attr">color:</span> </span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span> <span class="comment"># true | false </span></span><br><span class="line">  <span class="attr">font:</span> <span class="string">"#fec591"</span> <span class="comment"># 字体颜色</span></span><br><span class="line">  <span class="attr">background:</span> <span class="string">"#005454"</span> <span class="comment"># 最底部层背景颜色</span></span><br><span class="line">  <span class="attr">indexBackGround:</span> <span class="string">"#005454"</span> <span class="comment"># 首页层颜色</span></span><br><span class="line">  <span class="attr">postBackGround:</span> <span class="string">"#005454"</span> <span class="comment"># 文章页层颜色</span></span><br><span class="line">  <span class="attr">codeBackGround:</span> <span class="string">"black"</span> <span class="comment"># 代码块背景颜色</span></span><br><span class="line">  <span class="attr">codeFont:</span> <span class="string">"white"</span> <span class="comment"># 代码块字体颜色 </span></span><br><span class="line">  <span class="attr">linkBeforeClick:</span> <span class="string">"#fec591"</span> <span class="comment"># 链接点击前的颜色，标题也是链接，所以标题颜色也在此修改</span></span><br><span class="line">  <span class="attr">linkAfterClick:</span> <span class="string">"#fec591"</span> <span class="comment"># 链接点击后的颜色</span></span><br></pre></td></tr></tbody></table></figure><p>我看到后将更新到此页面。</p><div id="footnotes"><hr><div id="footnotelist"><ol style="list-style: none; padding-left: 0; margin-left: 40px"><li id="fn:1"><span style="display: inline-block; vertical-align: top; padding-right: 10px; margin-left: -40px">1.</span><span style="display: inline-block; vertical-align: top; margin-left: 10px;">脚标测试<a href="#fnref:1" rev="footnote"> ↩</a></span></li></ol></div></div></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E8%BD%AF%E4%BB%B6/">软件</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E6%90%AD%E5%BB%BA%E7%BD%91%E7%AB%99/">搭建网站</category>
      
      <category domain="https://www.ninojay.top/tags/hexo/">hexo</category>
      
      <category domain="https://www.ninojay.top/tags/hexoPlugin/">hexoPlugin</category>
      
      
      <comments>https://www.ninojay.top/hexoplugin/A4-color-change/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>hexo | A4支持文章密码访问</title>
      <link>https://www.ninojay.top/hexoplugin/hexo-blog-encrypt/</link>
      <guid>https://www.ninojay.top/hexoplugin/hexo-blog-encrypt/</guid>
      <pubDate>Sun, 21 May 2023 04:11:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h2 id="效果演示"><a href="#效果演示" class="headerlink" title="效果演示"></a>效果演示</h2><p>以下页面已加密，密码为：123456</p><p><a href="https://ninojay.top/hexoplugin/test-encrypt">点击访问</a></p><h2 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h2><p>你的网站文件夹，举例为<code>website</code>。</p><ol><li><p>命令行进入到<code>webiste</code>目录。</p></li><li><p>执行命令安装hexo插件：</p></li></ol><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">npm</span> <span class="string">install</span> <span class="string">hexo-blog-encrypt</span></span><br></pre></td></tr></tbody></table></figure><ol start="3"><li>添加如下配置到<code>_config.yml</code>文件（注意不是A4主题的配置文件）</li></ol><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># hexo 支持 加密访问文章 插件</span></span><br><span class="line"><span class="attr">encrypt:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">abstract:</span> <span class="string">Here's</span> <span class="string">something</span> <span class="string">encrypted,</span> <span class="string">password</span> <span class="string">is</span> <span class="string">required</span> <span class="string">to</span> <span class="string">continue</span> <span class="string">reading.</span></span><br><span class="line">  <span class="attr">message:</span> <span class="string">Hey,</span> <span class="string">password</span> <span class="string">is</span> <span class="string">required</span> <span class="string">here.</span></span><br><span class="line">  <span class="attr">wrong_pass_message:</span> <span class="string">Oh,</span> <span class="string">this</span> <span class="string">is</span> <span class="string">an</span> <span class="string">invalid</span> <span class="string">password.</span> <span class="string">Check</span> <span class="string">and</span> <span class="string">try</span> <span class="string">again,</span> <span class="string">please.</span></span><br><span class="line">  <span class="attr">wrong_hash_message:</span> <span class="string">Oh,</span> <span class="string">these</span> <span class="string">decrypted</span> <span class="string">content</span> <span class="string">cannot</span> <span class="string">be</span> <span class="string">verified,</span> <span class="string">but</span> <span class="string">you</span> <span class="string">can</span> <span class="string">still</span> <span class="string">have</span> <span class="string">a</span> <span class="string">look.</span></span><br></pre></td></tr></tbody></table></figure><ol start="4"><li>在想要文章支持加密的post的<code>front-matter</code>中添加</li></ol><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">password:</span> <span class="number">123456</span></span><br></pre></td></tr></tbody></table></figure><ol start="5"><li>执行命令查看效果</li></ol><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">hexo</span> <span class="string">clean</span> <span class="string">&amp;&amp;</span> <span class="string">hexo</span> <span class="string">g</span> <span class="string">&amp;&amp;</span> <span class="string">hexo</span> <span class="string">s</span></span><br></pre></td></tr></tbody></table></figure><p>引用：</p><ul><li><strong><a href="https://github.com/D0n9X1n/hexo-blog-encrypt">hexo-blog-encrypt</a></strong></li></ul></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E8%BD%AF%E4%BB%B6/">软件</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E6%90%AD%E5%BB%BA%E7%BD%91%E7%AB%99/">搭建网站</category>
      
      <category domain="https://www.ninojay.top/tags/hexo/">hexo</category>
      
      <category domain="https://www.ninojay.top/tags/hexoPlugin/">hexoPlugin</category>
      
      
      <comments>https://www.ninojay.top/hexoplugin/hexo-blog-encrypt/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>hexo | A4支持数学公式渲染</title>
      <link>https://www.ninojay.top/hexoplugin/hexo-filter-mathjax/</link>
      <guid>https://www.ninojay.top/hexoplugin/hexo-filter-mathjax/</guid>
      <pubDate>Sun, 21 May 2023 04:11:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h2 id="效果演示"><a href="#效果演示" class="headerlink" title="效果演示"></a>效果演示</h2><p>根据极坐标系中位置矢量的定义，速度和加速度可以被定义为</p><p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -1.773ex;" xmlns="http://www.w3.org/2000/svg" width="21.689ex" height="4.676ex" role="img" focusable="false" viewBox="0 -1283.5 9586.4 2067"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mtable"><g data-mml-node="mtr" transform="translate(0,-86.5)"><g data-mml-node="mtd"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D42F" d="M401 444Q413 441 495 441Q568 441 574 444H580V382H510L409 156Q348 18 339 6Q331 -4 320 -4Q318 -4 313 -4T303 -3H288Q273 -3 264 12T221 102Q206 135 197 156L96 382H26V444H34Q49 441 145 441Q252 441 270 444H279V382H231L284 264Q335 149 338 149Q338 150 389 264T442 381Q442 382 418 382H394V444H401Z"></path></g></g></g><g data-mml-node="mtd" transform="translate(607,0)"><g data-mml-node="mi"></g><g data-mml-node="mo" transform="translate(277.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(1333.6,0)"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D45F" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(281.1,-2) translate(-250 0)"><path data-c="2D9" d="M190 609Q190 637 208 653T252 669Q275 667 292 652T309 609Q309 579 292 564T250 549Q225 549 208 564T190 609Z"></path></g></g></g><g data-mml-node="mo" transform="translate(2006.8,0)"><path data-c="22C5" d="M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(2507,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D42B" d="M405 293T374 293T324 312T305 361Q305 378 312 394Q315 397 315 399Q305 399 294 394T266 375T238 329T222 249Q221 241 221 149V62H308V0H298Q280 3 161 3Q47 3 38 0H29V62H98V210V303Q98 353 96 363T83 376Q69 380 42 380H29V442H32L118 446Q204 450 205 450H210V414L211 378Q247 449 315 449H321Q384 449 413 422T442 360Q442 332 424 313Z"></path></g><g data-mml-node="mo" transform="translate(237,35) translate(-287.5 0)"><path data-c="5E" d="M207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632Z"></path></g></g></g></g><g data-mml-node="mo" transform="translate(2981,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mi" transform="translate(3370,0)"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="mo" transform="translate(3839,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mo" transform="translate(4450.2,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mi" transform="translate(5450.4,0)"><path data-c="1D45F" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mfrac" transform="translate(5901.4,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(400.5,676)"><g data-mml-node="mi"><path data-c="64" d="M376 495Q376 511 376 535T377 568Q377 613 367 624T316 637H298V660Q298 683 300 683L310 684Q320 685 339 686T376 688Q393 689 413 690T443 693T454 694H457V390Q457 84 458 81Q461 61 472 55T517 46H535V0Q533 0 459 -5T380 -11H373V44L365 37Q307 -11 235 -11Q158 -11 96 50T34 215Q34 315 97 378T244 442Q319 442 376 393V495ZM373 342Q328 405 260 405Q211 405 173 369Q146 341 139 305T131 211Q131 155 138 120T173 59Q203 26 251 26Q322 26 373 103V342Z"></path></g></g><g data-mml-node="mrow" transform="translate(220,-686)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="64" d="M376 495Q376 511 376 535T377 568Q377 613 367 624T316 637H298V660Q298 683 300 683L310 684Q320 685 339 686T376 688Q393 689 413 690T443 693T454 694H457V390Q457 84 458 81Q461 61 472 55T517 46H535V0Q533 0 459 -5T380 -11H373V44L365 37Q307 -11 235 -11Q158 -11 96 50T34 215Q34 315 97 378T244 442Q319 442 376 393V495ZM373 342Q328 405 260 405Q211 405 173 369Q146 341 139 305T131 211Q131 155 138 120T173 59Q203 26 251 26Q322 26 373 103V342Z"></path></g></g><g data-mml-node="mi" transform="translate(556,0)"><path data-c="1D461" d="M26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26Z"></path></g></g><rect width="1117" height="60" x="120" y="220"></rect></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(7258.4,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D42B" d="M405 293T374 293T324 312T305 361Q305 378 312 394Q315 397 315 399Q305 399 294 394T266 375T238 329T222 249Q221 241 221 149V62H308V0H298Q280 3 161 3Q47 3 38 0H29V62H98V210V303Q98 353 96 363T83 376Q69 380 42 380H29V442H32L118 446Q204 450 205 450H210V414L211 378Q247 449 315 449H321Q384 449 413 422T442 360Q442 332 424 313Z"></path></g><g data-mml-node="mo" transform="translate(237,35) translate(-287.5 0)"><path data-c="5E" d="M207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632Z"></path></g></g></g></g><g data-mml-node="mo" transform="translate(7732.4,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mi" transform="translate(8121.4,0)"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="mo" transform="translate(8590.4,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g></g></g></g></g></g></svg></mjx-container></p><p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -1.969ex;" xmlns="http://www.w3.org/2000/svg" width="34.449ex" height="5.07ex" role="img" focusable="false" viewBox="0 -1370.4 15226.4 2240.9"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mtable"><g data-mml-node="mtr" transform="translate(0,-139.5)"><g data-mml-node="mtd"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D41A" d="M64 349Q64 399 107 426T255 453Q346 453 402 423T473 341Q478 327 478 310T479 196V77Q493 63 529 62Q549 62 553 57T558 31Q558 9 552 5T514 0H497H481Q375 0 367 56L356 46Q300 -6 210 -6Q130 -6 81 30T32 121Q32 188 111 226T332 272H350V292Q350 313 348 327T337 361T306 391T248 402T194 399H189Q204 376 204 354Q204 327 187 306T134 284Q97 284 81 305T64 349ZM164 121Q164 89 186 67T238 45Q274 45 307 63T346 108L350 117V226H347Q248 218 206 189T164 121Z"></path></g></g></g><g data-mml-node="mtd" transform="translate(559,0)"><g data-mml-node="mi"></g><g data-mml-node="mo" transform="translate(277.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(1333.6,0)"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D45F" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(281.1,-7) translate(-250 0)"><path data-c="A8" d="M95 612Q95 633 112 651T153 669T193 652T210 612Q210 588 194 571T152 554L127 560Q95 577 95 612ZM289 611Q289 634 304 649T335 668Q336 668 340 668T346 669Q369 669 386 652T404 612T387 572T346 554Q323 554 306 570T289 611Z"></path></g></g></g><g data-mml-node="mo" transform="translate(2006.8,0)"><path data-c="22C5" d="M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(2507,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D42B" d="M405 293T374 293T324 312T305 361Q305 378 312 394Q315 397 315 399Q305 399 294 394T266 375T238 329T222 249Q221 241 221 149V62H308V0H298Q280 3 161 3Q47 3 38 0H29V62H98V210V303Q98 353 96 363T83 376Q69 380 42 380H29V442H32L118 446Q204 450 205 450H210V414L211 378Q247 449 315 449H321Q384 449 413 422T442 360Q442 332 424 313Z"></path></g><g data-mml-node="mo" transform="translate(237,35) translate(-287.5 0)"><path data-c="5E" d="M207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632Z"></path></g></g></g></g><g data-mml-node="mo" transform="translate(2981,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mi" transform="translate(3370,0)"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="mo" transform="translate(3839,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mo" transform="translate(4450.2,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(5450.4,0)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(5950.4,0)"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D45F" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(281.1,-2) translate(-250 0)"><path data-c="2D9" d="M190 609Q190 637 208 653T252 669Q275 667 292 652T309 609Q309 579 292 564T250 549Q225 549 208 564T190 609Z"></path></g></g></g><g data-mml-node="mfrac" transform="translate(6401.4,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(400.5,676)"><g data-mml-node="mi"><path data-c="64" d="M376 495Q376 511 376 535T377 568Q377 613 367 624T316 637H298V660Q298 683 300 683L310 684Q320 685 339 686T376 688Q393 689 413 690T443 693T454 694H457V390Q457 84 458 81Q461 61 472 55T517 46H535V0Q533 0 459 -5T380 -11H373V44L365 37Q307 -11 235 -11Q158 -11 96 50T34 215Q34 315 97 378T244 442Q319 442 376 393V495ZM373 342Q328 405 260 405Q211 405 173 369Q146 341 139 305T131 211Q131 155 138 120T173 59Q203 26 251 26Q322 26 373 103V342Z"></path></g></g><g data-mml-node="mrow" transform="translate(220,-686)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="64" d="M376 495Q376 511 376 535T377 568Q377 613 367 624T316 637H298V660Q298 683 300 683L310 684Q320 685 339 686T376 688Q393 689 413 690T443 693T454 694H457V390Q457 84 458 81Q461 61 472 55T517 46H535V0Q533 0 459 -5T380 -11H373V44L365 37Q307 -11 235 -11Q158 -11 96 50T34 215Q34 315 97 378T244 442Q319 442 376 393V495ZM373 342Q328 405 260 405Q211 405 173 369Q146 341 139 305T131 211Q131 155 138 120T173 59Q203 26 251 26Q322 26 373 103V342Z"></path></g></g><g data-mml-node="mi" transform="translate(556,0)"><path data-c="1D461" d="M26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26Z"></path></g></g><rect width="1117" height="60" x="120" y="220"></rect></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(7758.4,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D42B" d="M405 293T374 293T324 312T305 361Q305 378 312 394Q315 397 315 399Q305 399 294 394T266 375T238 329T222 249Q221 241 221 149V62H308V0H298Q280 3 161 3Q47 3 38 0H29V62H98V210V303Q98 353 96 363T83 376Q69 380 42 380H29V442H32L118 446Q204 450 205 450H210V414L211 378Q247 449 315 449H321Q384 449 413 422T442 360Q442 332 424 313Z"></path></g><g data-mml-node="mo" transform="translate(237,35) translate(-287.5 0)"><path data-c="5E" d="M207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632Z"></path></g></g></g></g><g data-mml-node="mo" transform="translate(8232.4,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mi" transform="translate(8621.4,0)"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="mo" transform="translate(9090.4,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mo" transform="translate(9701.7,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mi" transform="translate(10701.9,0)"><path data-c="1D45F" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mfrac" transform="translate(11152.9,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(400.5,676)"><g data-mml-node="msup"><g data-mml-node="mi"><path data-c="64" d="M376 495Q376 511 376 535T377 568Q377 613 367 624T316 637H298V660Q298 683 300 683L310 684Q320 685 339 686T376 688Q393 689 413 690T443 693T454 694H457V390Q457 84 458 81Q461 61 472 55T517 46H535V0Q533 0 459 -5T380 -11H373V44L365 37Q307 -11 235 -11Q158 -11 96 50T34 215Q34 315 97 378T244 442Q319 442 376 393V495ZM373 342Q328 405 260 405Q211 405 173 369Q146 341 139 305T131 211Q131 155 138 120T173 59Q203 26 251 26Q322 26 373 103V342Z"></path></g><g data-mml-node="TeXAtom" transform="translate(589,363) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g></g></g><g data-mml-node="mrow" transform="translate(220,-719.9)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="64" d="M376 495Q376 511 376 535T377 568Q377 613 367 624T316 637H298V660Q298 683 300 683L310 684Q320 685 339 686T376 688Q393 689 413 690T443 693T454 694H457V390Q457 84 458 81Q461 61 472 55T517 46H535V0Q533 0 459 -5T380 -11H373V44L365 37Q307 -11 235 -11Q158 -11 96 50T34 215Q34 315 97 378T244 442Q319 442 376 393V495ZM373 342Q328 405 260 405Q211 405 173 369Q146 341 139 305T131 211Q131 155 138 120T173 59Q203 26 251 26Q322 26 373 103V342Z"></path></g></g><g data-mml-node="msup" transform="translate(556,0)"><g data-mml-node="mi"><path data-c="1D461" d="M26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26Z"></path></g><g data-mml-node="TeXAtom" transform="translate(394,289) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g></g></g><rect width="1553.6" height="60" x="120" y="220"></rect></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(12946.4,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D42B" d="M405 293T374 293T324 312T305 361Q305 378 312 394Q315 397 315 399Q305 399 294 394T266 375T238 329T222 249Q221 241 221 149V62H308V0H298Q280 3 161 3Q47 3 38 0H29V62H98V210V303Q98 353 96 363T83 376Q69 380 42 380H29V442H32L118 446Q204 450 205 450H210V414L211 378Q247 449 315 449H321Q384 449 413 422T442 360Q442 332 424 313Z"></path></g><g data-mml-node="mo" transform="translate(237,35) translate(-287.5 0)"><path data-c="5E" d="M207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632Z"></path></g></g></g></g><g data-mml-node="mo" transform="translate(13420.4,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mi" transform="translate(13809.4,0)"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="mo" transform="translate(14278.4,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g></g></g></g></g></g></svg></mjx-container></p><p>根据极坐标的定义中给出的四个数学结果，可以将上述公式简化为</p><p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -0.943ex;" xmlns="http://www.w3.org/2000/svg" width="12.391ex" height="3.018ex" role="img" focusable="false" viewBox="0 -917 5477 1334"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mtable"><g data-mml-node="mtr" transform="translate(0,-167)"><g data-mml-node="mtd"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D42F" d="M401 444Q413 441 495 441Q568 441 574 444H580V382H510L409 156Q348 18 339 6Q331 -4 320 -4Q318 -4 313 -4T303 -3H288Q273 -3 264 12T221 102Q206 135 197 156L96 382H26V444H34Q49 441 145 441Q252 441 270 444H279V382H231L284 264Q335 149 338 149Q338 150 389 264T442 381Q442 382 418 382H394V444H401Z"></path></g></g></g><g data-mml-node="mtd" transform="translate(607,0)"><g data-mml-node="mi"></g><g data-mml-node="mo" transform="translate(277.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(1333.6,0)"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D45F" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(281.1,-2) translate(-250 0)"><path data-c="2D9" d="M190 609Q190 637 208 653T252 669Q275 667 292 652T309 609Q309 579 292 564T250 549Q225 549 208 564T190 609Z"></path></g></g></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(1784.6,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D42B" d="M405 293T374 293T324 312T305 361Q305 378 312 394Q315 397 315 399Q305 399 294 394T266 375T238 329T222 249Q221 241 221 149V62H308V0H298Q280 3 161 3Q47 3 38 0H29V62H98V210V303Q98 353 96 363T83 376Q69 380 42 380H29V442H32L118 446Q204 450 205 450H210V414L211 378Q247 449 315 449H321Q384 449 413 422T442 360Q442 332 424 313Z"></path></g><g data-mml-node="mo" transform="translate(237,35) translate(-287.5 0)"><path data-c="5E" d="M207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632Z"></path></g></g></g></g><g data-mml-node="mo" transform="translate(2480.8,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mi" transform="translate(3481,0)"><path data-c="1D45F" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(3932,0)"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="mo" transform="translate(317.8,261) translate(-250 0)"><path data-c="2D9" d="M190 609Q190 637 208 653T252 669Q275 667 292 652T309 609Q309 579 292 564T250 549Q225 549 208 564T190 609Z"></path></g></g></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(4401,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="mo" transform="translate(317.8,290) translate(-287.5 0)"><path data-c="5E" d="M207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632Z"></path></g></g></g></g></g></g></g></g></g></svg></mjx-container></p><p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -0.943ex;" xmlns="http://www.w3.org/2000/svg" width="57.672ex" height="3.018ex" role="img" focusable="false" viewBox="0 -917 25490.9 1334"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mtable"><g data-mml-node="mtr" transform="translate(0,-167)"><g data-mml-node="mtd"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D41A" d="M64 349Q64 399 107 426T255 453Q346 453 402 423T473 341Q478 327 478 310T479 196V77Q493 63 529 62Q549 62 553 57T558 31Q558 9 552 5T514 0H497H481Q375 0 367 56L356 46Q300 -6 210 -6Q130 -6 81 30T32 121Q32 188 111 226T332 272H350V292Q350 313 348 327T337 361T306 391T248 402T194 399H189Q204 376 204 354Q204 327 187 306T134 284Q97 284 81 305T64 349ZM164 121Q164 89 186 67T238 45Q274 45 307 63T346 108L350 117V226H347Q248 218 206 189T164 121Z"></path></g></g></g><g data-mml-node="mtd" transform="translate(559,0)"><g data-mml-node="mi"></g><g data-mml-node="mo" transform="translate(277.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(1333.6,0)"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D45F" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(281.1,-7) translate(-250 0)"><path data-c="A8" d="M95 612Q95 633 112 651T153 669T193 652T210 612Q210 588 194 571T152 554L127 560Q95 577 95 612ZM289 611Q289 634 304 649T335 668Q336 668 340 668T346 669Q369 669 386 652T404 612T387 572T346 554Q323 554 306 570T289 611Z"></path></g></g></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(1784.6,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D42B" d="M405 293T374 293T324 312T305 361Q305 378 312 394Q315 397 315 399Q305 399 294 394T266 375T238 329T222 249Q221 241 221 149V62H308V0H298Q280 3 161 3Q47 3 38 0H29V62H98V210V303Q98 353 96 363T83 376Q69 380 42 380H29V442H32L118 446Q204 450 205 450H210V414L211 378Q247 449 315 449H321Q384 449 413 422T442 360Q442 332 424 313Z"></path></g><g data-mml-node="mo" transform="translate(237,35) translate(-287.5 0)"><path data-c="5E" d="M207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632Z"></path></g></g></g></g><g data-mml-node="mo" transform="translate(2480.8,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(3481,0)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(3981,0)"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D45F" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(281.1,-2) translate(-250 0)"><path data-c="2D9" d="M190 609Q190 637 208 653T252 669Q275 667 292 652T309 609Q309 579 292 564T250 549Q225 549 208 564T190 609Z"></path></g></g></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(4432,0)"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="mo" transform="translate(317.8,261) translate(-250 0)"><path data-c="2D9" d="M190 609Q190 637 208 653T252 669Q275 667 292 652T309 609Q309 579 292 564T250 549Q225 549 208 564T190 609Z"></path></g></g></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(4901,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="mo" transform="translate(317.8,290) translate(-287.5 0)"><path data-c="5E" d="M207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632Z"></path></g></g></g></g><g data-mml-node="mo" transform="translate(5592.2,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mi" transform="translate(6592.4,0)"><path data-c="1D45F" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(7043.4,0)"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="mo" transform="translate(317.8,256) translate(-250 0)"><path data-c="A8" d="M95 612Q95 633 112 651T153 669T193 652T210 612Q210 588 194 571T152 554L127 560Q95 577 95 612ZM289 611Q289 634 304 649T335 668Q336 668 340 668T346 669Q369 669 386 652T404 612T387 572T346 554Q323 554 306 570T289 611Z"></path></g></g></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(7512.4,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="mo" transform="translate(317.8,290) translate(-287.5 0)"><path data-c="5E" d="M207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632Z"></path></g></g></g></g><g data-mml-node="mo" transform="translate(8203.7,0)"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="mi" transform="translate(9203.9,0)"><path data-c="1D45F" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="msup" transform="translate(9654.9,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="mo" transform="translate(317.8,261) translate(-250 0)"><path data-c="2D9" d="M190 609Q190 637 208 653T252 669Q275 667 292 652T309 609Q309 579 292 564T250 549Q225 549 208 564T190 609Z"></path></g></g></g><g data-mml-node="TeXAtom" transform="translate(502,413) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(10560.4,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D42B" d="M405 293T374 293T324 312T305 361Q305 378 312 394Q315 397 315 399Q305 399 294 394T266 375T238 329T222 249Q221 241 221 149V62H308V0H298Q280 3 161 3Q47 3 38 0H29V62H98V210V303Q98 353 96 363T83 376Q69 380 42 380H29V442H32L118 446Q204 450 205 450H210V414L211 378Q247 449 315 449H321Q384 449 413 422T442 360Q442 332 424 313Z"></path></g><g data-mml-node="mo" transform="translate(237,35) translate(-287.5 0)"><path data-c="5E" d="M207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632Z"></path></g></g></g></g><g data-mml-node="mtext" transform="translate(11034.4,0)"><path data-c="A0" d=""></path></g></g><g data-mml-node="mtd" transform="translate(13843.4,0)"><g data-mml-node="mi"></g><g data-mml-node="mo" transform="translate(277.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mo" transform="translate(1333.6,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(1722.6,0)"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D45F" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(281.1,-7) translate(-250 0)"><path data-c="A8" d="M95 612Q95 633 112 651T153 669T193 652T210 612Q210 588 194 571T152 554L127 560Q95 577 95 612ZM289 611Q289 634 304 649T335 668Q336 668 340 668T346 669Q369 669 386 652T404 612T387 572T346 554Q323 554 306 570T289 611Z"></path></g></g></g><g data-mml-node="mo" transform="translate(2395.8,0)"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="mi" transform="translate(3396,0)"><path data-c="1D45F" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="msup" transform="translate(3847,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="mo" transform="translate(317.8,261) translate(-250 0)"><path data-c="2D9" d="M190 609Q190 637 208 653T252 669Q275 667 292 652T309 609Q309 579 292 564T250 549Q225 549 208 564T190 609Z"></path></g></g></g><g data-mml-node="TeXAtom" transform="translate(502,413) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g></g><g data-mml-node="mo" transform="translate(4752.6,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(5141.6,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D42B" d="M405 293T374 293T324 312T305 361Q305 378 312 394Q315 397 315 399Q305 399 294 394T266 375T238 329T222 249Q221 241 221 149V62H308V0H298Q280 3 161 3Q47 3 38 0H29V62H98V210V303Q98 353 96 363T83 376Q69 380 42 380H29V442H32L118 446Q204 450 205 450H210V414L211 378Q247 449 315 449H321Q384 449 413 422T442 360Q442 332 424 313Z"></path></g><g data-mml-node="mo" transform="translate(237,35) translate(-287.5 0)"><path data-c="5E" d="M207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632Z"></path></g></g></g></g><g data-mml-node="mo" transform="translate(5837.8,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mo" transform="translate(6838,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mi" transform="translate(7227,0)"><path data-c="1D45F" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(7678,0)"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="mo" transform="translate(317.8,256) translate(-250 0)"><path data-c="A8" d="M95 612Q95 633 112 651T153 669T193 652T210 612Q210 588 194 571T152 554L127 560Q95 577 95 612ZM289 611Q289 634 304 649T335 668Q336 668 340 668T346 669Q369 669 386 652T404 612T387 572T346 554Q323 554 306 570T289 611Z"></path></g></g></g><g data-mml-node="mo" transform="translate(8369.2,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(9369.4,0)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(9869.4,0)"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D45F" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(281.1,-2) translate(-250 0)"><path data-c="2D9" d="M190 609Q190 637 208 653T252 669Q275 667 292 652T309 609Q309 579 292 564T250 549Q225 549 208 564T190 609Z"></path></g></g></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(10320.4,0)"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="mo" transform="translate(317.8,261) translate(-250 0)"><path data-c="2D9" d="M190 609Q190 637 208 653T252 669Q275 667 292 652T309 609Q309 579 292 564T250 549Q225 549 208 564T190 609Z"></path></g></g></g><g data-mml-node="mo" transform="translate(10789.4,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(11178.4,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="mo" transform="translate(317.8,290) translate(-287.5 0)"><path data-c="5E" d="M207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632Z"></path></g></g></g></g></g></g></g></g></g></svg></mjx-container></p><p>在二维平面的笛卡尔坐标系中，基矢量是<strong>固定不变</strong>的 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.452ex;" xmlns="http://www.w3.org/2000/svg" width="2.522ex" height="2.025ex" role="img" focusable="false" viewBox="0 -695 1114.7 895"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D422" d="M72 610Q72 649 98 672T159 695Q193 693 217 670T241 610Q241 572 217 549T157 525Q120 525 96 548T72 610ZM46 442L136 446L226 450H232V62H294V0H286Q271 3 171 3Q67 3 49 0H40V62H109V209Q109 358 108 362Q103 380 55 380H43V442H46Z"></path></g></g><g data-mml-node="mo" transform="translate(319,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(763.7,0)"><g data-mml-node="mi"><path data-c="1D423" d="M104 610Q104 649 130 672T191 695Q225 693 249 670T273 610Q273 572 249 549T189 525Q152 525 128 548T104 610ZM78 442L173 446L268 450H274V196Q274 -5 274 -37T269 -83Q256 -132 201 -166T71 -200Q10 -200 -30 -173T-71 -102Q-71 -70 -51 -51T-1 -31Q27 -31 48 -49T69 -100Q69 -121 53 -147H56Q66 -149 77 -149H80Q90 -149 100 -146T127 -125T149 -73Q151 -55 151 149V362Q150 364 148 366T145 370T142 373T138 375T133 377T124 378T113 379T97 380H75V442H78Z"></path></g></g></g></g></svg></mjx-container>.</p><p>但在极坐标系中，基矢量是<strong>变动</strong>的 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.439ex;" xmlns="http://www.w3.org/2000/svg" width="3.14ex" height="2.034ex" role="img" focusable="false" viewBox="0 -705 1387.7 899"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D42B" d="M405 293T374 293T324 312T305 361Q305 378 312 394Q315 397 315 399Q305 399 294 394T266 375T238 329T222 249Q221 241 221 149V62H308V0H298Q280 3 161 3Q47 3 38 0H29V62H98V210V303Q98 353 96 363T83 376Q69 380 42 380H29V442H32L118 446Q204 450 205 450H210V414L211 378Q247 449 315 449H321Q384 449 413 422T442 360Q442 332 424 313Z"></path></g></g><g data-mml-node="mo" transform="translate(474,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(918.7,0)"><g data-mml-node="mi"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g></g></g></g></svg></mjx-container>.</p><p>首先定义两个标量，分别是<br><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -1.488ex;" xmlns="http://www.w3.org/2000/svg" width="27.657ex" height="4.106ex" role="img" focusable="false" viewBox="0 -1157.5 12224.3 1815"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mtable"><g data-mml-node="mtr" transform="translate(0,39.5)"><g data-mml-node="mtd"><g data-mml-node="mi"><path data-c="1D45F" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(728.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="msqrt" transform="translate(1784.6,0)"><g transform="translate(1020,0)"><g data-mml-node="msup"><g data-mml-node="mi"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="TeXAtom" transform="translate(605,289) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g></g><g data-mml-node="mo" transform="translate(1230.8,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="msup" transform="translate(2231,0)"><g data-mml-node="mi"><path data-c="1D466" d="M21 287Q21 301 36 335T84 406T158 442Q199 442 224 419T250 355Q248 336 247 334Q247 331 231 288T198 191T182 105Q182 62 196 45T238 27Q261 27 281 38T312 61T339 94Q339 95 344 114T358 173T377 247Q415 397 419 404Q432 431 462 431Q475 431 483 424T494 412T496 403Q496 390 447 193T391 -23Q363 -106 294 -155T156 -205Q111 -205 77 -183T43 -117Q43 -95 50 -80T69 -58T89 -48T106 -45Q150 -45 150 -87Q150 -107 138 -122T115 -142T102 -147L99 -148Q101 -153 118 -160T152 -167H160Q177 -167 186 -165Q219 -156 247 -127T290 -65T313 -9T321 21L315 17Q309 13 296 6T270 -6Q250 -11 231 -11Q185 -11 150 11T104 82Q103 89 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="TeXAtom" transform="translate(523,289) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g></g></g><g data-mml-node="mo" transform="translate(0,142.7)"><path data-c="221A" d="M263 249Q264 249 315 130T417 -108T470 -228L725 302Q981 837 982 839Q989 850 1001 850Q1008 850 1013 844T1020 832V826L741 243Q645 43 540 -176Q479 -303 469 -324T453 -348Q449 -350 436 -350L424 -349L315 -96Q206 156 205 156L171 130Q138 104 137 104L111 130L263 249Z"></path></g><rect width="3157.6" height="60" x="1020" y="932.7"></rect></g><g data-mml-node="mtext" transform="translate(5962.1,0)"><path data-c="A0" d=""></path></g><g data-mml-node="mtext" transform="translate(6212.1,0)"><path data-c="A0" d=""></path></g><g data-mml-node="mi" transform="translate(6462.1,0)"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="mo" transform="translate(7208.9,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mi" transform="translate(8264.7,0)"><path data-c="61" d="M137 305T115 305T78 320T63 359Q63 394 97 421T218 448Q291 448 336 416T396 340Q401 326 401 309T402 194V124Q402 76 407 58T428 40Q443 40 448 56T453 109V145H493V106Q492 66 490 59Q481 29 455 12T400 -6T353 12T329 54V58L327 55Q325 52 322 49T314 40T302 29T287 17T269 6T247 -2T221 -8T190 -11Q130 -11 82 20T34 107Q34 128 41 147T68 188T116 225T194 253T304 268H318V290Q318 324 312 340Q290 411 215 411Q197 411 181 410T156 406T148 403Q170 388 170 359Q170 334 154 320ZM126 106Q126 75 150 51T209 26Q247 26 276 49T315 109Q317 116 318 175Q318 233 317 233Q309 233 296 232T251 223T193 203T147 166T126 106Z"></path><path data-c="72" d="M36 46H50Q89 46 97 60V68Q97 77 97 91T98 122T98 161T98 203Q98 234 98 269T98 328L97 351Q94 370 83 376T38 385H20V408Q20 431 22 431L32 432Q42 433 60 434T96 436Q112 437 131 438T160 441T171 442H174V373Q213 441 271 441H277Q322 441 343 419T364 373Q364 352 351 337T313 322Q288 322 276 338T263 372Q263 381 265 388T270 400T273 405Q271 407 250 401Q234 393 226 386Q179 341 179 207V154Q179 141 179 127T179 101T180 81T180 66V61Q181 59 183 57T188 54T193 51T200 49T207 48T216 47T225 47T235 46T245 46H276V0H267Q249 3 140 3Q37 3 28 0H20V46H36Z" transform="translate(500,0)"></path><path data-c="63" d="M370 305T349 305T313 320T297 358Q297 381 312 396Q317 401 317 402T307 404Q281 408 258 408Q209 408 178 376Q131 329 131 219Q131 137 162 90Q203 29 272 29Q313 29 338 55T374 117Q376 125 379 127T395 129H409Q415 123 415 120Q415 116 411 104T395 71T366 33T318 2T249 -11Q163 -11 99 53T34 214Q34 318 99 383T250 448T370 421T404 357Q404 334 387 320Z" transform="translate(892,0)"></path><path data-c="74" d="M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z" transform="translate(1336,0)"></path><path data-c="61" d="M137 305T115 305T78 320T63 359Q63 394 97 421T218 448Q291 448 336 416T396 340Q401 326 401 309T402 194V124Q402 76 407 58T428 40Q443 40 448 56T453 109V145H493V106Q492 66 490 59Q481 29 455 12T400 -6T353 12T329 54V58L327 55Q325 52 322 49T314 40T302 29T287 17T269 6T247 -2T221 -8T190 -11Q130 -11 82 20T34 107Q34 128 41 147T68 188T116 225T194 253T304 268H318V290Q318 324 312 340Q290 411 215 411Q197 411 181 410T156 406T148 403Q170 388 170 359Q170 334 154 320ZM126 106Q126 75 150 51T209 26Q247 26 276 49T315 109Q317 116 318 175Q318 233 317 233Q309 233 296 232T251 223T193 203T147 166T126 106Z" transform="translate(1725,0)"></path><path data-c="6E" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q450 438 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(2225,0)"></path></g><g data-mml-node="mo" transform="translate(11045.7,0)"><path data-c="2061" d=""></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(11212.3,0)"><g data-mml-node="mfrac"><g data-mml-node="mi" transform="translate(261,676)"><path data-c="1D466" d="M21 287Q21 301 36 335T84 406T158 442Q199 442 224 419T250 355Q248 336 247 334Q247 331 231 288T198 191T182 105Q182 62 196 45T238 27Q261 27 281 38T312 61T339 94Q339 95 344 114T358 173T377 247Q415 397 419 404Q432 431 462 431Q475 431 483 424T494 412T496 403Q496 390 447 193T391 -23Q363 -106 294 -155T156 -205Q111 -205 77 -183T43 -117Q43 -95 50 -80T69 -58T89 -48T106 -45Q150 -45 150 -87Q150 -107 138 -122T115 -142T102 -147L99 -148Q101 -153 118 -160T152 -167H160Q177 -167 186 -165Q219 -156 247 -127T290 -65T313 -9T321 21L315 17Q309 13 296 6T270 -6Q250 -11 231 -11Q185 -11 150 11T104 82Q103 89 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mi" transform="translate(220,-686)"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><rect width="772" height="60" x="120" y="220"></rect></g></g></g></g></g></g></g></svg></mjx-container><br>极坐标系中的基矢量 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="1.072ex" height="1.851ex" role="img" focusable="false" viewBox="0 -818 474 818"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D42B" d="M405 293T374 293T324 312T305 361Q305 378 312 394Q315 397 315 399Q305 399 294 394T266 375T238 329T222 249Q221 241 221 149V62H308V0H298Q280 3 161 3Q47 3 38 0H29V62H98V210V303Q98 353 96 363T83 376Q69 380 42 380H29V442H32L118 446Q204 450 205 450H210V414L211 378Q247 449 315 449H321Q384 449 413 422T442 360Q442 332 424 313Z"></path></g></g><g data-mml-node="mo" transform="translate(237,24) translate(-250 0)"><path data-c="5E" d="M112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560Z"></path></g></g></g></g></g></svg></mjx-container> 和 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.023ex;" xmlns="http://www.w3.org/2000/svg" width="1.061ex" height="2.45ex" role="img" focusable="false" viewBox="0 -1073 469 1083"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g></g><g data-mml-node="mo" transform="translate(317.8,279) translate(-250 0)"><path data-c="5E" d="M112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560Z"></path></g></g></g></g></g></svg></mjx-container> 都是 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.023ex;" xmlns="http://www.w3.org/2000/svg" width="1.061ex" height="1.618ex" role="img" focusable="false" viewBox="0 -705 469 715"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g></g></g></svg></mjx-container> 的函数, 它们被定义为</p><p><mjx-container class="MathJax" jax="SVG" display="true" width="full" style="min-width: 30.541ex;"><svg style="vertical-align: -0.92ex; min-width: 30.541ex;" xmlns="http://www.w3.org/2000/svg" width="100%" height="2.971ex" role="img" focusable="false"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(0.0181,-0.0181) translate(0, -906.5)"><g data-mml-node="math"><g data-mml-node="mtable" transform="translate(2856,0) translate(-2856,0)"><g transform="translate(0 906.5) matrix(1 0 0 -1 0 0) scale(55.25)"><svg data-table="true" preserveAspectRatio="xMidYMid" viewBox="3893.7 -906.5 1 1313"><g transform="matrix(1 0 0 -1 0 0)"><g data-mml-node="mlabeledtr" transform="translate(0,-156.5)"><g data-mml-node="mtd"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D42B" d="M405 293T374 293T324 312T305 361Q305 378 312 394Q315 397 315 399Q305 399 294 394T266 375T238 329T222 249Q221 241 221 149V62H308V0H298Q280 3 161 3Q47 3 38 0H29V62H98V210V303Q98 353 96 363T83 376Q69 380 42 380H29V442H32L118 446Q204 450 205 450H210V414L211 378Q247 449 315 449H321Q384 449 413 422T442 360Q442 332 424 313Z"></path></g></g><g data-mml-node="mo" transform="translate(237,24) translate(-250 0)"><path data-c="5E" d="M112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560Z"></path></g></g></g></g><g data-mml-node="mtd" transform="translate(474,0)"><g data-mml-node="mi"></g><g data-mml-node="mo" transform="translate(277.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mi" transform="translate(1333.6,0)"><path data-c="63" d="M370 305T349 305T313 320T297 358Q297 381 312 396Q317 401 317 402T307 404Q281 408 258 408Q209 408 178 376Q131 329 131 219Q131 137 162 90Q203 29 272 29Q313 29 338 55T374 117Q376 125 379 127T395 129H409Q415 123 415 120Q415 116 411 104T395 71T366 33T318 2T249 -11Q163 -11 99 53T34 214Q34 318 99 383T250 448T370 421T404 357Q404 334 387 320Z"></path><path data-c="6F" d="M28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30Z" transform="translate(444,0)"></path><path data-c="73" d="M295 316Q295 356 268 385T190 414Q154 414 128 401Q98 382 98 349Q97 344 98 336T114 312T157 287Q175 282 201 278T245 269T277 256Q294 248 310 236T342 195T359 133Q359 71 321 31T198 -10H190Q138 -10 94 26L86 19L77 10Q71 4 65 -1L54 -11H46H42Q39 -11 33 -5V74V132Q33 153 35 157T45 162H54Q66 162 70 158T75 146T82 119T101 77Q136 26 198 26Q295 26 295 104Q295 133 277 151Q257 175 194 187T111 210Q75 227 54 256T33 318Q33 357 50 384T93 424T143 442T187 447H198Q238 447 268 432L283 424L292 431Q302 440 314 448H322H326Q329 448 335 442V310L329 304H301Q295 310 295 316Z" transform="translate(944,0)"></path></g><g data-mml-node="mo" transform="translate(2671.6,0)"><path data-c="2061" d=""></path></g><g data-mml-node="mi" transform="translate(2838.2,0)"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(3307.2,0)"><g data-mml-node="mover"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D422" d="M72 610Q72 649 98 672T159 695Q193 693 217 670T241 610Q241 572 217 549T157 525Q120 525 96 548T72 610ZM46 442L136 446L226 450H232V62H294V0H286Q271 3 171 3Q67 3 49 0H40V62H109V209Q109 358 108 362Q103 380 55 380H43V442H46Z"></path></g></g><g data-mml-node="mo" transform="translate(159.5,269) translate(-250 0)"><path data-c="5E" d="M112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560Z"></path></g></g></g><g data-mml-node="mo" transform="translate(3848.4,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mi" transform="translate(4848.7,0)"><path data-c="73" d="M295 316Q295 356 268 385T190 414Q154 414 128 401Q98 382 98 349Q97 344 98 336T114 312T157 287Q175 282 201 278T245 269T277 256Q294 248 310 236T342 195T359 133Q359 71 321 31T198 -10H190Q138 -10 94 26L86 19L77 10Q71 4 65 -1L54 -11H46H42Q39 -11 33 -5V74V132Q33 153 35 157T45 162H54Q66 162 70 158T75 146T82 119T101 77Q136 26 198 26Q295 26 295 104Q295 133 277 151Q257 175 194 187T111 210Q75 227 54 256T33 318Q33 357 50 384T93 424T143 442T187 447H198Q238 447 268 432L283 424L292 431Q302 440 314 448H322H326Q329 448 335 442V310L329 304H301Q295 310 295 316Z"></path><path data-c="69" d="M69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247Z" transform="translate(394,0)"></path><path data-c="6E" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q450 438 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(672,0)"></path></g><g data-mml-node="mo" transform="translate(6076.7,0)"><path data-c="2061" d=""></path></g><g data-mml-node="mi" transform="translate(6243.3,0)"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(6712.3,0)"><g data-mml-node="mover"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D423" d="M104 610Q104 649 130 672T191 695Q225 693 249 670T273 610Q273 572 249 549T189 525Q152 525 128 548T104 610ZM78 442L173 446L268 450H274V196Q274 -5 274 -37T269 -83Q256 -132 201 -166T71 -200Q10 -200 -30 -173T-71 -102Q-71 -70 -51 -51T-1 -31Q27 -31 48 -49T69 -100Q69 -121 53 -147H56Q66 -149 77 -149H80Q90 -149 100 -146T127 -125T149 -73Q151 -55 151 149V362Q150 364 148 366T145 370T142 373T138 375T133 377T124 378T113 379T97 380H75V442H78Z"></path></g></g><g data-mml-node="mo" transform="translate(175.5,269) translate(-250 0)"><path data-c="5E" d="M112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560Z"></path></g></g></g><g data-mml-node="mtext" transform="translate(7063.3,0)"><path data-c="A0" d=""></path></g></g></g></g></svg><svg data-labels="true" preserveAspectRatio="xMaxYMid" viewBox="2056 -906.5 1 1313"><g data-labels="true" transform="matrix(1 0 0 -1 0 0)"><g data-mml-node="mtd" id="mjx-eqn:1.1" transform="translate(0,593.5)"><text data-id-align="true"></text><g data-idbox="true" transform="translate(0,-750)"><g data-mml-node="mtext"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z" transform="translate(389,0)"></path><path data-c="2E" d="M78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60Z" transform="translate(889,0)"></path><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z" transform="translate(1167,0)"></path><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z" transform="translate(1667,0)"></path></g></g></g></g></svg></g></g></g></g></svg></mjx-container></p><p><mjx-container class="MathJax" jax="SVG" display="true" width="full" style="min-width: 32.102ex;"><svg style="vertical-align: -0.931ex; min-width: 32.102ex;" xmlns="http://www.w3.org/2000/svg" width="100%" height="2.993ex" role="img" focusable="false"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(0.0181,-0.0181) translate(0, -911.5)"><g data-mml-node="math"><g data-mml-node="mtable" transform="translate(2856,0) translate(-2856,0)"><g transform="translate(0 911.5) matrix(1 0 0 -1 0 0) scale(55.25)"><svg data-table="true" preserveAspectRatio="xMidYMid" viewBox="4238.5 -911.5 1 1323"><g transform="matrix(1 0 0 -1 0 0)"><g data-mml-node="mlabeledtr" transform="translate(0,-161.5)"><g data-mml-node="mtd"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g></g><g data-mml-node="mo" transform="translate(317.8,279) translate(-250 0)"><path data-c="5E" d="M112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560Z"></path></g></g></g></g><g data-mml-node="mtd" transform="translate(469,0)"><g data-mml-node="mi"></g><g data-mml-node="mo" transform="translate(277.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mo" transform="translate(1333.6,0)"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="mi" transform="translate(2278.2,0)"><path data-c="73" d="M295 316Q295 356 268 385T190 414Q154 414 128 401Q98 382 98 349Q97 344 98 336T114 312T157 287Q175 282 201 278T245 269T277 256Q294 248 310 236T342 195T359 133Q359 71 321 31T198 -10H190Q138 -10 94 26L86 19L77 10Q71 4 65 -1L54 -11H46H42Q39 -11 33 -5V74V132Q33 153 35 157T45 162H54Q66 162 70 158T75 146T82 119T101 77Q136 26 198 26Q295 26 295 104Q295 133 277 151Q257 175 194 187T111 210Q75 227 54 256T33 318Q33 357 50 384T93 424T143 442T187 447H198Q238 447 268 432L283 424L292 431Q302 440 314 448H322H326Q329 448 335 442V310L329 304H301Q295 310 295 316Z"></path><path data-c="69" d="M69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247Z" transform="translate(394,0)"></path><path data-c="6E" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q450 438 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(672,0)"></path></g><g data-mml-node="mo" transform="translate(3506.2,0)"><path data-c="2061" d=""></path></g><g data-mml-node="mi" transform="translate(3672.9,0)"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(4141.9,0)"><g data-mml-node="mover"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D422" d="M72 610Q72 649 98 672T159 695Q193 693 217 670T241 610Q241 572 217 549T157 525Q120 525 96 548T72 610ZM46 442L136 446L226 450H232V62H294V0H286Q271 3 171 3Q67 3 49 0H40V62H109V209Q109 358 108 362Q103 380 55 380H43V442H46Z"></path></g></g><g data-mml-node="mo" transform="translate(159.5,269) translate(-250 0)"><path data-c="5E" d="M112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560Z"></path></g></g></g><g data-mml-node="mo" transform="translate(4683.1,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mi" transform="translate(5683.3,0)"><path data-c="63" d="M370 305T349 305T313 320T297 358Q297 381 312 396Q317 401 317 402T307 404Q281 408 258 408Q209 408 178 376Q131 329 131 219Q131 137 162 90Q203 29 272 29Q313 29 338 55T374 117Q376 125 379 127T395 129H409Q415 123 415 120Q415 116 411 104T395 71T366 33T318 2T249 -11Q163 -11 99 53T34 214Q34 318 99 383T250 448T370 421T404 357Q404 334 387 320Z"></path><path data-c="6F" d="M28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30Z" transform="translate(444,0)"></path><path data-c="73" d="M295 316Q295 356 268 385T190 414Q154 414 128 401Q98 382 98 349Q97 344 98 336T114 312T157 287Q175 282 201 278T245 269T277 256Q294 248 310 236T342 195T359 133Q359 71 321 31T198 -10H190Q138 -10 94 26L86 19L77 10Q71 4 65 -1L54 -11H46H42Q39 -11 33 -5V74V132Q33 153 35 157T45 162H54Q66 162 70 158T75 146T82 119T101 77Q136 26 198 26Q295 26 295 104Q295 133 277 151Q257 175 194 187T111 210Q75 227 54 256T33 318Q33 357 50 384T93 424T143 442T187 447H198Q238 447 268 432L283 424L292 431Q302 440 314 448H322H326Q329 448 335 442V310L329 304H301Q295 310 295 316Z" transform="translate(944,0)"></path></g><g data-mml-node="mo" transform="translate(7021.3,0)"><path data-c="2061" d=""></path></g><g data-mml-node="mi" transform="translate(7188,0)"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(7657,0)"><g data-mml-node="mover"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D423" d="M104 610Q104 649 130 672T191 695Q225 693 249 670T273 610Q273 572 249 549T189 525Q152 525 128 548T104 610ZM78 442L173 446L268 450H274V196Q274 -5 274 -37T269 -83Q256 -132 201 -166T71 -200Q10 -200 -30 -173T-71 -102Q-71 -70 -51 -51T-1 -31Q27 -31 48 -49T69 -100Q69 -121 53 -147H56Q66 -149 77 -149H80Q90 -149 100 -146T127 -125T149 -73Q151 -55 151 149V362Q150 364 148 366T145 370T142 373T138 375T133 377T124 378T113 379T97 380H75V442H78Z"></path></g></g><g data-mml-node="mo" transform="translate(175.5,269) translate(-250 0)"><path data-c="5E" d="M112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560Z"></path></g></g></g></g></g></g></svg><svg data-labels="true" preserveAspectRatio="xMaxYMid" viewBox="2056 -911.5 1 1323"><g data-labels="true" transform="matrix(1 0 0 -1 0 0)"><g data-mml-node="mtd" id="mjx-eqn:1.2" transform="translate(0,588.5)"><text data-id-align="true"></text><g data-idbox="true" transform="translate(0,-750)"><g data-mml-node="mtext"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z" transform="translate(389,0)"></path><path data-c="2E" d="M78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60Z" transform="translate(889,0)"></path><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z" transform="translate(1167,0)"></path><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z" transform="translate(1667,0)"></path></g></g></g></g></svg></g></g></g></g></svg></mjx-container><br>称为径向基矢量和切向基矢量。容易验证这两个基矢量是正交的。有了极坐标系后，描述一个笛卡尔坐标系中的位置矢量 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.464ex;" xmlns="http://www.w3.org/2000/svg" width="10.774ex" height="2.869ex" role="img" focusable="false" viewBox="0 -1063 4762 1268"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D42B" d="M405 293T374 293T324 312T305 361Q305 378 312 394Q315 397 315 399Q305 399 294 394T266 375T238 329T222 249Q221 241 221 149V62H308V0H298Q280 3 161 3Q47 3 38 0H29V62H98V210V303Q98 353 96 363T83 376Q69 380 42 380H29V442H32L118 446Q204 450 205 450H210V414L211 378Q247 449 315 449H321Q384 449 413 422T442 360Q442 332 424 313Z"></path></g></g><g data-mml-node="mo" transform="translate(751.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mi" transform="translate(1807.6,0)"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(2379.6,0)"><g data-mml-node="mover"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D422" d="M72 610Q72 649 98 672T159 695Q193 693 217 670T241 610Q241 572 217 549T157 525Q120 525 96 548T72 610ZM46 442L136 446L226 450H232V62H294V0H286Q271 3 171 3Q67 3 49 0H40V62H109V209Q109 358 108 362Q103 380 55 380H43V442H46Z"></path></g></g><g data-mml-node="mo" transform="translate(159.5,269) translate(-250 0)"><path data-c="5E" d="M112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560Z"></path></g></g></g><g data-mml-node="mo" transform="translate(2920.8,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mi" transform="translate(3921,0)"><path data-c="1D466" d="M21 287Q21 301 36 335T84 406T158 442Q199 442 224 419T250 355Q248 336 247 334Q247 331 231 288T198 191T182 105Q182 62 196 45T238 27Q261 27 281 38T312 61T339 94Q339 95 344 114T358 173T377 247Q415 397 419 404Q432 431 462 431Q475 431 483 424T494 412T496 403Q496 390 447 193T391 -23Q363 -106 294 -155T156 -205Q111 -205 77 -183T43 -117Q43 -95 50 -80T69 -58T89 -48T106 -45Q150 -45 150 -87Q150 -107 138 -122T115 -142T102 -147L99 -148Q101 -153 118 -160T152 -167H160Q177 -167 186 -165Q219 -156 247 -127T290 -65T313 -9T321 21L315 17Q309 13 296 6T270 -6Q250 -11 231 -11Q185 -11 150 11T104 82Q103 89 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(4411,0)"><g data-mml-node="mover"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D423" d="M104 610Q104 649 130 672T191 695Q225 693 249 670T273 610Q273 572 249 549T189 525Q152 525 128 548T104 610ZM78 442L173 446L268 450H274V196Q274 -5 274 -37T269 -83Q256 -132 201 -166T71 -200Q10 -200 -30 -173T-71 -102Q-71 -70 -51 -51T-1 -31Q27 -31 48 -49T69 -100Q69 -121 53 -147H56Q66 -149 77 -149H80Q90 -149 100 -146T127 -125T149 -73Q151 -55 151 149V362Q150 364 148 366T145 370T142 373T138 375T133 377T124 378T113 379T97 380H75V442H78Z"></path></g></g><g data-mml-node="mo" transform="translate(175.5,269) translate(-250 0)"><path data-c="5E" d="M112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560Z"></path></g></g></g></g></g></svg></mjx-container> 变成了 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.186ex;" xmlns="http://www.w3.org/2000/svg" width="6.182ex" height="2.036ex" role="img" focusable="false" viewBox="0 -818 2732.6 900"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D42B" d="M405 293T374 293T324 312T305 361Q305 378 312 394Q315 397 315 399Q305 399 294 394T266 375T238 329T222 249Q221 241 221 149V62H308V0H298Q280 3 161 3Q47 3 38 0H29V62H98V210V303Q98 353 96 363T83 376Q69 380 42 380H29V442H32L118 446Q204 450 205 450H210V414L211 378Q247 449 315 449H321Q384 449 413 422T442 360Q442 332 424 313Z"></path></g></g><g data-mml-node="mo" transform="translate(751.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mi" transform="translate(1807.6,0)"><path data-c="1D45F" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(2258.6,0)"><g data-mml-node="mover"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D42B" d="M405 293T374 293T324 312T305 361Q305 378 312 394Q315 397 315 399Q305 399 294 394T266 375T238 329T222 249Q221 241 221 149V62H308V0H298Q280 3 161 3Q47 3 38 0H29V62H98V210V303Q98 353 96 363T83 376Q69 380 42 380H29V442H32L118 446Q204 450 205 450H210V414L211 378Q247 449 315 449H321Q384 449 413 422T442 360Q442 332 424 313Z"></path></g></g><g data-mml-node="mo" transform="translate(237,24) translate(-250 0)"><path data-c="5E" d="M112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560Z"></path></g></g></g></g></g></svg></mjx-container> .</p><p>此外，我们还可以对这两个基矢量求导，得到四个常用的数学结果，它是根据 (1.1) 和 (1.2) 的定义得到的朴素结论： </p><p><mjx-container class="MathJax" jax="SVG" display="true" width="full" style="min-width: 22.77ex;"><svg style="vertical-align: -1.773ex; min-width: 22.77ex;" xmlns="http://www.w3.org/2000/svg" width="100%" height="4.676ex" role="img" focusable="false"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(0.0181,-0.0181) translate(0, -1283.5)"><g data-mml-node="math"><g data-mml-node="mtable" transform="translate(2856,0) translate(-2856,0)"><g transform="translate(0 1283.5) matrix(1 0 0 -1 0 0) scale(55.25)"><svg data-table="true" preserveAspectRatio="xMidYMid" viewBox="2176.3 -1283.5 1 2067"><g transform="matrix(1 0 0 -1 0 0)"><g data-mml-node="mlabeledtr" transform="translate(0,-86.5)"><g data-mml-node="mtd"><g data-mml-node="mfrac"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(400.5,676)"><g data-mml-node="mi"><path data-c="64" d="M376 495Q376 511 376 535T377 568Q377 613 367 624T316 637H298V660Q298 683 300 683L310 684Q320 685 339 686T376 688Q393 689 413 690T443 693T454 694H457V390Q457 84 458 81Q461 61 472 55T517 46H535V0Q533 0 459 -5T380 -11H373V44L365 37Q307 -11 235 -11Q158 -11 96 50T34 215Q34 315 97 378T244 442Q319 442 376 393V495ZM373 342Q328 405 260 405Q211 405 173 369Q146 341 139 305T131 211Q131 155 138 120T173 59Q203 26 251 26Q322 26 373 103V342Z"></path></g></g><g data-mml-node="mrow" transform="translate(220,-686)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="64" d="M376 495Q376 511 376 535T377 568Q377 613 367 624T316 637H298V660Q298 683 300 683L310 684Q320 685 339 686T376 688Q393 689 413 690T443 693T454 694H457V390Q457 84 458 81Q461 61 472 55T517 46H535V0Q533 0 459 -5T380 -11H373V44L365 37Q307 -11 235 -11Q158 -11 96 50T34 215Q34 315 97 378T244 442Q319 442 376 393V495ZM373 342Q328 405 260 405Q211 405 173 369Q146 341 139 305T131 211Q131 155 138 120T173 59Q203 26 251 26Q322 26 373 103V342Z"></path></g></g><g data-mml-node="mi" transform="translate(556,0)"><path data-c="1D461" d="M26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26Z"></path></g></g><rect width="1117" height="60" x="120" y="220"></rect></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(1357,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D42B" d="M405 293T374 293T324 312T305 361Q305 378 312 394Q315 397 315 399Q305 399 294 394T266 375T238 329T222 249Q221 241 221 149V62H308V0H298Q280 3 161 3Q47 3 38 0H29V62H98V210V303Q98 353 96 363T83 376Q69 380 42 380H29V442H32L118 446Q204 450 205 450H210V414L211 378Q247 449 315 449H321Q384 449 413 422T442 360Q442 332 424 313Z"></path></g><g data-mml-node="mo" transform="translate(237,35) translate(-287.5 0)"><path data-c="5E" d="M207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632Z"></path></g></g></g></g></g><g data-mml-node="mtd" transform="translate(1831,0)"><g data-mml-node="mi"></g><g data-mml-node="mo" transform="translate(277.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(1333.6,0)"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="mo" transform="translate(317.8,261) translate(-250 0)"><path data-c="2D9" d="M190 609Q190 637 208 653T252 669Q275 667 292 652T309 609Q309 579 292 564T250 549Q225 549 208 564T190 609Z"></path></g></g></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(1802.6,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="mo" transform="translate(317.8,290) translate(-287.5 0)"><path data-c="5E" d="M207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632Z"></path></g></g></g></g><g data-mml-node="mtext" transform="translate(2271.6,0)"><path data-c="A0" d=""></path></g></g></g></g></svg><svg data-labels="true" preserveAspectRatio="xMaxYMid" viewBox="2056 -1283.5 1 2067"><g data-labels="true" transform="matrix(1 0 0 -1 0 0)"><g data-mml-node="mtd" id="mjx-eqn:2.1" transform="translate(0,663.5)"><text data-id-align="true"></text><g data-idbox="true" transform="translate(0,-750)"><g data-mml-node="mtext"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z" transform="translate(389,0)"></path><path data-c="2E" d="M78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60Z" transform="translate(889,0)"></path><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z" transform="translate(1167,0)"></path><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z" transform="translate(1667,0)"></path></g></g></g></g></svg></g></g></g></g></svg></mjx-container></p><p><mjx-container class="MathJax" jax="SVG" display="true" width="full" style="min-width: 24.531ex;"><svg style="vertical-align: -1.773ex; min-width: 24.531ex;" xmlns="http://www.w3.org/2000/svg" width="100%" height="4.676ex" role="img" focusable="false"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(0.0181,-0.0181) translate(0, -1283.5)"><g data-mml-node="math"><g data-mml-node="mtable" transform="translate(2856,0) translate(-2856,0)"><g transform="translate(0 1283.5) matrix(1 0 0 -1 0 0) scale(55.25)"><svg data-table="true" preserveAspectRatio="xMidYMid" viewBox="2565.3 -1283.5 1 2067"><g transform="matrix(1 0 0 -1 0 0)"><g data-mml-node="mlabeledtr" transform="translate(0,-86.5)"><g data-mml-node="mtd"><g data-mml-node="mfrac"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(400.5,676)"><g data-mml-node="mi"><path data-c="64" d="M376 495Q376 511 376 535T377 568Q377 613 367 624T316 637H298V660Q298 683 300 683L310 684Q320 685 339 686T376 688Q393 689 413 690T443 693T454 694H457V390Q457 84 458 81Q461 61 472 55T517 46H535V0Q533 0 459 -5T380 -11H373V44L365 37Q307 -11 235 -11Q158 -11 96 50T34 215Q34 315 97 378T244 442Q319 442 376 393V495ZM373 342Q328 405 260 405Q211 405 173 369Q146 341 139 305T131 211Q131 155 138 120T173 59Q203 26 251 26Q322 26 373 103V342Z"></path></g></g><g data-mml-node="mrow" transform="translate(220,-686)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="64" d="M376 495Q376 511 376 535T377 568Q377 613 367 624T316 637H298V660Q298 683 300 683L310 684Q320 685 339 686T376 688Q393 689 413 690T443 693T454 694H457V390Q457 84 458 81Q461 61 472 55T517 46H535V0Q533 0 459 -5T380 -11H373V44L365 37Q307 -11 235 -11Q158 -11 96 50T34 215Q34 315 97 378T244 442Q319 442 376 393V495ZM373 342Q328 405 260 405Q211 405 173 369Q146 341 139 305T131 211Q131 155 138 120T173 59Q203 26 251 26Q322 26 373 103V342Z"></path></g></g><g data-mml-node="mi" transform="translate(556,0)"><path data-c="1D461" d="M26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26Z"></path></g></g><rect width="1117" height="60" x="120" y="220"></rect></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(1357,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="mo" transform="translate(317.8,290) translate(-287.5 0)"><path data-c="5E" d="M207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632Z"></path></g></g></g></g></g><g data-mml-node="mtd" transform="translate(1826,0)"><g data-mml-node="mi"></g><g data-mml-node="mo" transform="translate(277.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mo" transform="translate(1333.6,0)"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(2111.6,0)"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="mo" transform="translate(317.8,261) translate(-250 0)"><path data-c="2D9" d="M190 609Q190 637 208 653T252 669Q275 667 292 652T309 609Q309 579 292 564T250 549Q225 549 208 564T190 609Z"></path></g></g></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(2580.6,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D42B" d="M405 293T374 293T324 312T305 361Q305 378 312 394Q315 397 315 399Q305 399 294 394T266 375T238 329T222 249Q221 241 221 149V62H308V0H298Q280 3 161 3Q47 3 38 0H29V62H98V210V303Q98 353 96 363T83 376Q69 380 42 380H29V442H32L118 446Q204 450 205 450H210V414L211 378Q247 449 315 449H321Q384 449 413 422T442 360Q442 332 424 313Z"></path></g><g data-mml-node="mo" transform="translate(237,35) translate(-287.5 0)"><path data-c="5E" d="M207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632Z"></path></g></g></g></g><g data-mml-node="mtext" transform="translate(3054.6,0)"><path data-c="A0" d=""></path></g></g></g></g></svg><svg data-labels="true" preserveAspectRatio="xMaxYMid" viewBox="2056 -1283.5 1 2067"><g data-labels="true" transform="matrix(1 0 0 -1 0 0)"><g data-mml-node="mtd" id="mjx-eqn:2.2" transform="translate(0,663.5)"><text data-id-align="true"></text><g data-idbox="true" transform="translate(0,-750)"><g data-mml-node="mtext"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z" transform="translate(389,0)"></path><path data-c="2E" d="M78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60Z" transform="translate(889,0)"></path><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z" transform="translate(1167,0)"></path><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z" transform="translate(1667,0)"></path></g></g></g></g></svg></g></g></g></g></svg></mjx-container><br><mjx-container class="MathJax" jax="SVG" display="true" width="full" style="min-width: 29.645ex;"><svg style="vertical-align: -1.969ex; min-width: 29.645ex;" xmlns="http://www.w3.org/2000/svg" width="100%" height="5.07ex" role="img" focusable="false"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(0.0181,-0.0181) translate(0, -1370.4)"><g data-mml-node="math"><g data-mml-node="mtable" transform="translate(2856,0) translate(-2856,0)"><g transform="translate(0 1370.4) matrix(1 0 0 -1 0 0) scale(55.25)"><svg data-table="true" preserveAspectRatio="xMidYMid" viewBox="3695.6 -1370.4 1 2240.9"><g transform="matrix(1 0 0 -1 0 0)"><g data-mml-node="mlabeledtr" transform="translate(0,-139.5)"><g data-mml-node="mtd"><g data-mml-node="mfrac"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(400.5,676)"><g data-mml-node="msup"><g data-mml-node="mi"><path data-c="64" d="M376 495Q376 511 376 535T377 568Q377 613 367 624T316 637H298V660Q298 683 300 683L310 684Q320 685 339 686T376 688Q393 689 413 690T443 693T454 694H457V390Q457 84 458 81Q461 61 472 55T517 46H535V0Q533 0 459 -5T380 -11H373V44L365 37Q307 -11 235 -11Q158 -11 96 50T34 215Q34 315 97 378T244 442Q319 442 376 393V495ZM373 342Q328 405 260 405Q211 405 173 369Q146 341 139 305T131 211Q131 155 138 120T173 59Q203 26 251 26Q322 26 373 103V342Z"></path></g><g data-mml-node="TeXAtom" transform="translate(589,363) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g></g></g><g data-mml-node="mrow" transform="translate(220,-719.9)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="64" d="M376 495Q376 511 376 535T377 568Q377 613 367 624T316 637H298V660Q298 683 300 683L310 684Q320 685 339 686T376 688Q393 689 413 690T443 693T454 694H457V390Q457 84 458 81Q461 61 472 55T517 46H535V0Q533 0 459 -5T380 -11H373V44L365 37Q307 -11 235 -11Q158 -11 96 50T34 215Q34 315 97 378T244 442Q319 442 376 393V495ZM373 342Q328 405 260 405Q211 405 173 369Q146 341 139 305T131 211Q131 155 138 120T173 59Q203 26 251 26Q322 26 373 103V342Z"></path></g></g><g data-mml-node="msup" transform="translate(556,0)"><g data-mml-node="mi"><path data-c="1D461" d="M26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26Z"></path></g><g data-mml-node="TeXAtom" transform="translate(394,289) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g></g></g><rect width="1553.6" height="60" x="120" y="220"></rect></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(1793.6,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D42B" d="M405 293T374 293T324 312T305 361Q305 378 312 394Q315 397 315 399Q305 399 294 394T266 375T238 329T222 249Q221 241 221 149V62H308V0H298Q280 3 161 3Q47 3 38 0H29V62H98V210V303Q98 353 96 363T83 376Q69 380 42 380H29V442H32L118 446Q204 450 205 450H210V414L211 378Q247 449 315 449H321Q384 449 413 422T442 360Q442 332 424 313Z"></path></g><g data-mml-node="mo" transform="translate(237,35) translate(-287.5 0)"><path data-c="5E" d="M207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632Z"></path></g></g></g></g></g><g data-mml-node="mtd" transform="translate(2267.6,0)"><g data-mml-node="mi"></g><g data-mml-node="mo" transform="translate(277.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(1333.6,0)"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="mo" transform="translate(317.8,256) translate(-250 0)"><path data-c="A8" d="M95 612Q95 633 112 651T153 669T193 652T210 612Q210 588 194 571T152 554L127 560Q95 577 95 612ZM289 611Q289 634 304 649T335 668Q336 668 340 668T346 669Q369 669 386 652T404 612T387 572T346 554Q323 554 306 570T289 611Z"></path></g></g></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(1802.6,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="mo" transform="translate(317.8,290) translate(-287.5 0)"><path data-c="5E" d="M207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632Z"></path></g></g></g></g><g data-mml-node="mo" transform="translate(2493.8,0)"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="msup" transform="translate(3494,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="mo" transform="translate(317.8,261) translate(-250 0)"><path data-c="2D9" d="M190 609Q190 637 208 653T252 669Q275 667 292 652T309 609Q309 579 292 564T250 549Q225 549 208 564T190 609Z"></path></g></g></g><g data-mml-node="TeXAtom" transform="translate(502,413) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(4399.6,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D42B" d="M405 293T374 293T324 312T305 361Q305 378 312 394Q315 397 315 399Q305 399 294 394T266 375T238 329T222 249Q221 241 221 149V62H308V0H298Q280 3 161 3Q47 3 38 0H29V62H98V210V303Q98 353 96 363T83 376Q69 380 42 380H29V442H32L118 446Q204 450 205 450H210V414L211 378Q247 449 315 449H321Q384 449 413 422T442 360Q442 332 424 313Z"></path></g><g data-mml-node="mo" transform="translate(237,35) translate(-287.5 0)"><path data-c="5E" d="M207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632Z"></path></g></g></g></g><g data-mml-node="mtext" transform="translate(4873.6,0)"><path data-c="A0" d=""></path></g></g></g></g></svg><svg data-labels="true" preserveAspectRatio="xMaxYMid" viewBox="2056 -1370.4 1 2240.9"><g data-labels="true" transform="matrix(1 0 0 -1 0 0)"><g data-mml-node="mtd" id="mjx-eqn:2.3" transform="translate(0,610.5)"><text data-id-align="true"></text><g data-idbox="true" transform="translate(0,-750)"><g data-mml-node="mtext"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z" transform="translate(389,0)"></path><path data-c="2E" d="M78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60Z" transform="translate(889,0)"></path><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z" transform="translate(1167,0)"></path><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z" transform="translate(1667,0)"></path></g></g></g></g></svg></g></g></g></g></svg></mjx-container></p><p><mjx-container class="MathJax" jax="SVG" display="true" width="full" style="min-width: 30.84ex;"><svg style="vertical-align: -1.969ex; min-width: 30.84ex;" xmlns="http://www.w3.org/2000/svg" width="100%" height="5.07ex" role="img" focusable="false"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(0.0181,-0.0181) translate(0, -1370.4)"><g data-mml-node="math"><g data-mml-node="mtable" transform="translate(2856,0) translate(-2856,0)"><g transform="translate(0 1370.4) matrix(1 0 0 -1 0 0) scale(55.25)"><svg data-table="true" preserveAspectRatio="xMidYMid" viewBox="3959.6 -1370.4 1 2240.9"><g transform="matrix(1 0 0 -1 0 0)"><g data-mml-node="mlabeledtr" transform="translate(0,-139.5)"><g data-mml-node="mtd"><g data-mml-node="mfrac"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(400.5,676)"><g data-mml-node="msup"><g data-mml-node="mi"><path data-c="64" d="M376 495Q376 511 376 535T377 568Q377 613 367 624T316 637H298V660Q298 683 300 683L310 684Q320 685 339 686T376 688Q393 689 413 690T443 693T454 694H457V390Q457 84 458 81Q461 61 472 55T517 46H535V0Q533 0 459 -5T380 -11H373V44L365 37Q307 -11 235 -11Q158 -11 96 50T34 215Q34 315 97 378T244 442Q319 442 376 393V495ZM373 342Q328 405 260 405Q211 405 173 369Q146 341 139 305T131 211Q131 155 138 120T173 59Q203 26 251 26Q322 26 373 103V342Z"></path></g><g data-mml-node="TeXAtom" transform="translate(589,363) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g></g></g><g data-mml-node="mrow" transform="translate(220,-719.9)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="64" d="M376 495Q376 511 376 535T377 568Q377 613 367 624T316 637H298V660Q298 683 300 683L310 684Q320 685 339 686T376 688Q393 689 413 690T443 693T454 694H457V390Q457 84 458 81Q461 61 472 55T517 46H535V0Q533 0 459 -5T380 -11H373V44L365 37Q307 -11 235 -11Q158 -11 96 50T34 215Q34 315 97 378T244 442Q319 442 376 393V495ZM373 342Q328 405 260 405Q211 405 173 369Q146 341 139 305T131 211Q131 155 138 120T173 59Q203 26 251 26Q322 26 373 103V342Z"></path></g></g><g data-mml-node="msup" transform="translate(556,0)"><g data-mml-node="mi"><path data-c="1D461" d="M26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26Z"></path></g><g data-mml-node="TeXAtom" transform="translate(394,289) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g></g></g><rect width="1553.6" height="60" x="120" y="220"></rect></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(1793.6,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="mo" transform="translate(317.8,290) translate(-287.5 0)"><path data-c="5E" d="M207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632Z"></path></g></g></g></g></g><g data-mml-node="mtd" transform="translate(2262.6,0)"><g data-mml-node="mi"></g><g data-mml-node="mo" transform="translate(277.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mo" transform="translate(1333.6,0)"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(2111.6,0)"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="mo" transform="translate(317.8,256) translate(-250 0)"><path data-c="A8" d="M95 612Q95 633 112 651T153 669T193 652T210 612Q210 588 194 571T152 554L127 560Q95 577 95 612ZM289 611Q289 634 304 649T335 668Q336 668 340 668T346 669Q369 669 386 652T404 612T387 572T346 554Q323 554 306 570T289 611Z"></path></g></g></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(2580.6,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D42B" d="M405 293T374 293T324 312T305 361Q305 378 312 394Q315 397 315 399Q305 399 294 394T266 375T238 329T222 249Q221 241 221 149V62H308V0H298Q280 3 161 3Q47 3 38 0H29V62H98V210V303Q98 353 96 363T83 376Q69 380 42 380H29V442H32L118 446Q204 450 205 450H210V414L211 378Q247 449 315 449H321Q384 449 413 422T442 360Q442 332 424 313Z"></path></g><g data-mml-node="mo" transform="translate(237,35) translate(-287.5 0)"><path data-c="5E" d="M207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632Z"></path></g></g></g></g><g data-mml-node="mo" transform="translate(3276.8,0)"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="msup" transform="translate(4277,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g><g data-mml-node="mo" transform="translate(317.8,261) translate(-250 0)"><path data-c="2D9" d="M190 609Q190 637 208 653T252 669Q275 667 292 652T309 609Q309 579 292 564T250 549Q225 549 208 564T190 609Z"></path></g></g></g><g data-mml-node="TeXAtom" transform="translate(502,413) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(5182.6,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mover"><g data-mml-node="mi"><path data-c="1D42B" d="M405 293T374 293T324 312T305 361Q305 378 312 394Q315 397 315 399Q305 399 294 394T266 375T238 329T222 249Q221 241 221 149V62H308V0H298Q280 3 161 3Q47 3 38 0H29V62H98V210V303Q98 353 96 363T83 376Q69 380 42 380H29V442H32L118 446Q204 450 205 450H210V414L211 378Q247 449 315 449H321Q384 449 413 422T442 360Q442 332 424 313Z"></path></g><g data-mml-node="mo" transform="translate(237,35) translate(-287.5 0)"><path data-c="5E" d="M207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632Z"></path></g></g></g></g></g></g></g></svg><svg data-labels="true" preserveAspectRatio="xMaxYMid" viewBox="2056 -1370.4 1 2240.9"><g data-labels="true" transform="matrix(1 0 0 -1 0 0)"><g data-mml-node="mtd" id="mjx-eqn:2.4" transform="translate(0,610.5)"><text data-id-align="true"></text><g data-idbox="true" transform="translate(0,-750)"><g data-mml-node="mtext"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z" transform="translate(389,0)"></path><path data-c="2E" d="M78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60Z" transform="translate(889,0)"></path><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z" transform="translate(1167,0)"></path><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z" transform="translate(1667,0)"></path></g></g></g></g></svg></g></g></g></g></svg></mjx-container></p><h2 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h2><p>你的网站文件夹，举例为<code>website</code>。</p><ol><li><p>命令行进入到<code>webiste</code>目录。</p></li><li><p>执行命令安装hexo插件：</p></li></ol><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">npm</span> <span class="string">install</span> <span class="string">hexo-filter-mathjax</span></span><br></pre></td></tr></tbody></table></figure><ol start="3"><li>添加如下配置到<code>_config.yml</code>文件（注意不是A4主题的配置文件）</li></ol><figure class="highlight yml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># hexo markdown支持数学公式插件</span></span><br><span class="line"><span class="attr">mathjax:</span></span><br><span class="line">  <span class="attr">tags:</span> <span class="string">none</span> <span class="comment"># or 'ams' or 'all'</span></span><br><span class="line">  <span class="attr">single_dollars:</span> <span class="literal">true</span> <span class="comment"># enable single dollar signs as in-line math delimiters</span></span><br><span class="line">  <span class="attr">cjk_width:</span> <span class="number">0.9</span> <span class="comment"># relative CJK char width</span></span><br><span class="line">  <span class="attr">normal_width:</span> <span class="number">0.6</span> <span class="comment"># relative normal (monospace) width</span></span><br><span class="line">  <span class="attr">append_css:</span> <span class="literal">true</span> <span class="comment"># add CSS to pages rendered by MathJax</span></span><br><span class="line">  <span class="attr">every_page:</span> <span class="literal">false</span> <span class="comment"># if true, every page will be rendered by MathJax regardless the `mathjax` setting in Front-matter</span></span><br><span class="line">  <span class="attr">packages:</span> <span class="comment"># extra packages to load</span></span><br><span class="line">  <span class="attr">extension_options:</span> {}</span><br><span class="line">    <span class="comment"># you can put your extension options here</span></span><br><span class="line">    <span class="comment"># see http://docs.mathjax.org/en/latest/options/input/tex.html#tex-extension-options for more detail</span></span><br></pre></td></tr></tbody></table></figure><ol start="4"><li>在想要文章支持数学公式的post的<code>front-matter</code>中添加</li></ol><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">mathjax:</span> <span class="literal">true</span></span><br></pre></td></tr></tbody></table></figure><ol start="5"><li>执行命令查看效果</li></ol><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">hexo</span> <span class="string">clean</span> <span class="string">&amp;&amp;</span> <span class="string">hexo</span> <span class="string">g</span> <span class="string">&amp;&amp;</span> <span class="string">hexo</span> <span class="string">s</span></span><br></pre></td></tr></tbody></table></figure><h2 id="注意"><a href="#注意" class="headerlink" title="注意"></a>注意</h2><p>经过数学系专业朋友的测试，该插件使用过程中</p><ul><li><p>需要把<code>多行公式用多个$$环境分开</code>才能正确显示。<del>原本可以写在一个$$环境</del></p></li><li><p>如果你遇到公式在手机端溢出问题，插件作者如下回复：</p><blockquote><p>带编号的公式溢出是已知问题，因为 MathJax 不知道用户的屏幕尺寸，所以会按照默认宽度生成： <a href="https://github.com/next-theme/hexo-filter-mathjax#known-issues">https://github.com/next-theme/hexo-filter-mathjax#known-issues</a><br>这个确实不太好处理，如果换成不带编号的公式就可以解决</p></blockquote></li></ul><p>引用：</p><ul><li><strong><a href="https://github.com/next-theme/hexo-filter-mathjax">hexo-filter-mathjax</a></strong></li></ul></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E8%BD%AF%E4%BB%B6/">软件</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E6%90%AD%E5%BB%BA%E7%BD%91%E7%AB%99/">搭建网站</category>
      
      <category domain="https://www.ninojay.top/tags/hexo/">hexo</category>
      
      <category domain="https://www.ninojay.top/tags/hexoPlugin/">hexoPlugin</category>
      
      
      <comments>https://www.ninojay.top/hexoplugin/hexo-filter-mathjax/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>测试加密文章</title>
      <link>https://www.ninojay.top/hexoplugin/test-encrypt/</link>
      <guid>https://www.ninojay.top/hexoplugin/test-encrypt/</guid>
      <pubDate>Sun, 21 May 2023 04:11:00 GMT</pubDate>
      
      <description>有东西被加密了, 请输入密码查看.</description>
      
      
      
      <content:encoded><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="密码错误。" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.">  <script id="hbeData" type="hbeData" data-hmacdigest="3060573096c8dbdb240e18f719989204e6688fd62bf3befc664e632e7eecd8ec">4630436162ade97ba2718b7d0c4b3b630ef8b034c35893a7afa4c54a5752d90eba191a593f89497fdfca691efaf72d5c35796184ebf2d80300d9b43598d875a7a2ad0b9eb70415ef7e6791ce86b8d42b70cd8a1afd69deb058f6d64a314dc8262e131f226d9d1bbb273abbf5c69b50aa4fe07d7c07c6d59ff8c2702708afb2cadab385195a86a8bffef7ee9f5caebaddc36d5984647f386454a0964a63b943f1d20cfd7f72e686943aeeffb4dbb57d112abc5a6f7223cd3a58e0dd5177f83b0e9e15c59f696b24d63a614c48e5ac7ebac00af8249766b70ad1151adf0486d4cc06fcf73ac927645ddcfb3bee291cf814c8ca27a02b9bcdeb72503eb8f287b5dc2e295ab7282da90c20a2d2443bcc4a17fe7f3e362fd499aa5507e982eeaa57bd97771207198f2a999300ef1fb5b769a4401bf4ecaf479c6f9d383ab17d6870fccdd67eb319fe38ae2673efcf517bd29dd83e8287893c4ca00011869e54aef932c4261bf2e29f078f712060d065b2ff898b65e977e80bfc70df4adcb8ad2f4633406047ab1a89553e8b8c6c5740a3fefbf08516dea578450417c1c9de4877b21162b6d0d227211266f72a4129274bfb44be1fbd48787ba21e9d909561fe926866dd6055ab80f14dc1bfb462781ee5ad97</script>  <div class="hbe hbe-content">    <div class="hbe hbe-input hbe-input-wave">      <input class="hbe hbe-input-field hbe-input-field-wave" type="password" id="hbePass">      <label class="hbe hbe-input-label hbe-input-label-wave" for="hbePass">        <span class="hbe hbe-input-label-content hbe-input-label-content-wave">您好, 这里需要密码.</span>      </label>      <svg class="hbe hbe-graphic hbe-graphic-wave" width="300%" height="100%" viewBox="0 0 1200 60" preserveAspectRatio="none">        <path d="M0,56.5c0,0,298.666,0,399.333,0C448.336,56.5,513.994,46,597,46c77.327,0,135,10.5,200.999,10.5c95.996,0,402.001,0,402.001,0"></path>      </svg>    </div>  </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E8%BD%AF%E4%BB%B6/">软件</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E6%B5%8B%E8%AF%95/">测试</category>
      
      
      <comments>https://www.ninojay.top/hexoplugin/test-encrypt/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>系统性 leetcode 刷题记录</title>
      <link>https://www.ninojay.top/programmer/knowledge/algorithm/leetcode101/</link>
      <guid>https://www.ninojay.top/programmer/knowledge/algorithm/leetcode101/</guid>
      <pubDate>Thu, 18 May 2023 04:11:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>主要记录自己使用<code>Java语言</code>系统性刷过的算法题。</p><blockquote><p>源于一份pdf刷题书，需要该pdf可在我的<a href="https://github.com/HiNinoJay/leetcode/blob/main/LeetCode%20101%20-%20A%20LeetCode%20Grinding%20Guide%20(C%2B%2B%20Version).pdf">github仓库</a>下载，须知书里采用的是c++语法。</p></blockquote><p>分模块刷题的收获更深刻，先在此感谢该pdf的作者。</p><h4 id="排序算法"><a href="#排序算法" class="headerlink" title="排序算法"></a>排序算法</h4><table><thead><tr><th>Title</th><th>平均时间复杂度</th><th>空间复杂度</th></tr></thead><tbody><tr><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/%E5%AE%9E%E7%8E%B0%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95/BubbleSort.java">BubbleSort</a></td><td>O(n^2)</td><td>O(1)</td></tr><tr><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/%E5%AE%9E%E7%8E%B0%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95/InsertionSort.java">InsertionSort</a></td><td>O(n^2)</td><td>O(1)</td></tr><tr><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/%E5%AE%9E%E7%8E%B0%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95/SelectionSort.java">SelectionSort</a></td><td>O(n^2)</td><td>O(1)</td></tr><tr><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/%E5%AE%9E%E7%8E%B0%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95/MergeSort.java">MergeSort</a></td><td>O(nlogn)</td><td>O(n)</td></tr><tr><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/%E5%AE%9E%E7%8E%B0%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95/QuickSort.java">QuickSort</a></td><td>O(nlogn)</td><td>O(nlogn)</td></tr></tbody></table><h4 id="贪心"><a href="#贪心" class="headerlink" title="贪心"></a>贪心</h4><table><thead><tr><th>Title</th><th>Solution</th><th>Difficulty</th><th>flag</th></tr></thead><tbody><tr><td><a href="https://leetcode.cn/problems/assign-cookies/">455. 分发饼干</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/a%E8%B4%AA%E5%BF%83/FourFiveFive455.java">FourFiveFive455.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/construct-string-from-binary-tree/">606. 根据二叉树创建字符串</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/a%E8%B4%AA%E5%BF%83/SixZeroSix606.java">SixZeroSix606.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons/">452. 用最少数量的箭引爆气球</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/a%E8%B4%AA%E5%BF%83/FourFiveTwo452.java">FourFiveTwo452.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/find-right-interval/">436. 寻找右区间</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/a%E8%B4%AA%E5%BF%83/FourThreeSix436.java">FourThreeSix436.java</a></td><td>中等</td><td>❎</td></tr><tr><td><a href="https://leetcode.cn/problems/queue-reconstruction-by-height/">406. 根据身高重建队列</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/a%E8%B4%AA%E5%BF%83/FourZeroSix406.java">FourZeroSix406.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/">122. 买卖股票的最佳时机 II</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/a%E8%B4%AA%E5%BF%83/OneTwoTwo122.java">OneTwoTwo122.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/partition-labels/">763. 划分字母区间</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/a%E8%B4%AA%E5%BF%83/SevenSixThree763.java">SevenSixThree763.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/non-decreasing-array/">665. 非递减数列</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/a%E8%B4%AA%E5%BF%83/SixSixFive665.java">SixSixFive665.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/candy/">135. 分发糖果</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/a%E8%B4%AA%E5%BF%83/OneThreeFive135.java">OneThreeFive135.java</a></td><td>困难</td><td></td></tr></tbody></table><h4 id="双指针"><a href="#双指针" class="headerlink" title="双指针"></a>双指针</h4><table><thead><tr><th>Title</th><th>Solution</th><th>Difficulty</th><th>flag</th></tr></thead><tbody><tr><td><a href="https://leetcode.cn/problems/merge-sorted-array/">88. 合并两个有序数组</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/b%E5%8F%8C%E6%8C%87%E9%92%88/EightEight88.java">EightEight88.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/valid-palindrome-ii/">680. 验证回文串 II</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/b%E5%8F%8C%E6%8C%87%E9%92%88/SixEightZero680.java">SixEightZero680.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/longest-word-in-dictionary-through-deleting/">524. 通过删除字母匹配到字典里最</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/b%E5%8F%8C%E6%8C%87%E9%92%88/FiveTwoFour524.java">FiveTwoFour524.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/linked-list-cycle-ii/">142. 环形链表 II</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/b%E5%8F%8C%E6%8C%87%E9%92%88/OneFourTwo142.java">OneFourTwo142.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/">167. 两数之和 II - 输入有序数组</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/b%E5%8F%8C%E6%8C%87%E9%92%88/OneSisSeven167.java">OneSisSeven167.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/sum-of-square-numbers/">633. 平方数之和</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/b%E5%8F%8C%E6%8C%87%E9%92%88/SixThreeThree633.java">SixThreeThree633.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/minimum-window-substring/">76. 最小覆盖子串</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/b%E5%8F%8C%E6%8C%87%E9%92%88/SevenSix76.java">SevenSix76.java</a></td><td>困难</td><td></td></tr></tbody></table><h4 id="二分查找"><a href="#二分查找" class="headerlink" title="二分查找"></a>二分查找</h4><table><thead><tr><th>Title</th><th>Solution</th><th>Difficulty</th><th>flag</th></tr></thead><tbody><tr><td><a href="https://leetcode.cn/problems/sqrtx/">69. x 的平方根</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/c%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE/SixNine69.java">SixNine69.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/search-in-rotated-sorted-array-ii/">81. 搜索旋转排序数组 II</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/c%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE/EightOne81.java">EightOne81.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/single-element-in-a-sorted-array/">540. 有序数组中的单一元</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/c%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE/FiveFourZero540.java">FiveFourZero540.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/">34. 在排序数组中查找元素的第一个和最后一个位置</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/c%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE/ThreeFour34.java">ThreeFour34.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array-ii/">154. 寻找旋转排序数组中的最小值 II</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/c%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE/OneFiveFoue154.java">OneFiveFoue154.java</a></td><td>困难</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/median-of-two-sorted-arrays/">4.寻找两个正序数组的中位数</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/c%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE/Four4.java">Four4.java</a></td><td>困难</td><td>❎</td></tr></tbody></table><h4 id="排序"><a href="#排序" class="headerlink" title="排序"></a>排序</h4><table><thead><tr><th>Title</th><th>Solution</th><th>Difficulty</th><th>flag</th></tr></thead><tbody><tr><td><a href="https://leetcode.cn/problems/sort-characters-by-frequency/">451. 根据字符出现频率排</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/d%E6%8E%92%E5%BA%8F/FoutFiveOne451.java">FoutFiveOne451.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/sort-colors/">75. 颜色分类</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/d%E6%8E%92%E5%BA%8F/SevenFive75.java">SevenFive75.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/top-k-frequent-elements/">347. 前 K 个高频元素</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/d%E6%8E%92%E5%BA%8F/ThreeFourSeven347.java">ThreeFourSeven347.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/kth-largest-element-in-an-array/">215. 数组中的第K个最大元</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/d%E6%8E%92%E5%BA%8F/TwoOneFIve215.java">TwoOneFIve215.java</a></td><td>中等</td><td></td></tr></tbody></table><h4 id="搜索"><a href="#搜索" class="headerlink" title="搜索"></a>搜索</h4><table><thead><tr><th>Title</th><th>Solution</th><th>Difficulty</th><th>flag</th></tr></thead><tbody><tr><td><a href="https://leetcode.cn/problems/binary-tree-paths/">257. 二叉树的所有路径</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/e%E6%90%9C%E7%B4%A2/TwoFiveSeven257.java">TwoFiveSeven257.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/number-of-provinces/">547. 省份数量</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/e%E6%90%9C%E7%B4%A2/FiveFourSeven547.java">FiveFourSeven547.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/pacific-atlantic-water-flow/">417. 太平洋大西洋水流</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/e%E6%90%9C%E7%B4%A2/FourOneSeven417.java">FourOneSeven417.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/permutations-ii/">47. 全排列 II</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/e%E6%90%9C%E7%B4%A2/FourSeven47.java">FourSeven47.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/permutations/">46. 全排列</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/e%E6%90%9C%E7%B4%A2/FourSix46.java">FourSix46.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/combination-sum-ii/">40. 组合总和 II</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/e%E6%90%9C%E7%B4%A2/FourZero40.java">FourZero40.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/shortest-bridge/">934. 最短的桥</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/e%E6%90%9C%E7%B4%A2/MyNineThreeFour934.java">MyNineThreeFour934.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/shortest-bridge/">934. 最短的桥</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/e%E6%90%9C%E7%B4%A2/NineThreeFour934.java">NineThreeFour934.java</a></td><td>中等</td><td>❎</td></tr><tr><td><a href="https://leetcode.cn/problems/surrounded-regions/">130. 被围绕的区域</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/e%E6%90%9C%E7%B4%A2/OneThreeZero130.java">OneThreeZero130.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/word-search/">79. 单词搜索</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/e%E6%90%9C%E7%B4%A2/SevenNine79.java">SevenNine79.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/combinations/">77. 组合</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/e%E6%90%9C%E7%B4%A2/SevenSeven77.java">SevenSeven77.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/max-area-of-island/">695. 岛屿的最大面积</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/e%E6%90%9C%E7%B4%A2/SixNineFive695ByRecursion.java">SixNineFive695ByRecursion.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/max-area-of-island/">695. 岛屿的最大面积</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/e%E6%90%9C%E7%B4%A2/SixNineFive695ByStack.java">SixNineFive695ByStack.java</a></td><td>中等</td><td></td></tr></tbody></table><h4 id="动态规划"><a href="#动态规划" class="headerlink" title="动态规划"></a>动态规划</h4><table><thead><tr><th>Title</th><th>Solution</th><th>Difficulty</th><th>flag</th></tr></thead><tbody><tr><td><a href="https://leetcode.cn/problems/climbing-stairs/">70. 爬楼梯</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/f%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92/SevenZero70.java">SevenZero70.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/01-matrix/">542. 01 矩阵</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/f%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92/FiveFourTwo542.java">FiveFourTwo542.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/arithmetic-slices/">413. 等差数列划分</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/f%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92/FourOneThreee413.java">FourOneThreee413.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/decode-ways/">91. 解码方法</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/f%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92/NineOne91.java">NineOne91.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/house-robber/">198. 打家劫舍</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/f%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92/OneNineEight198.java">OneNineEight198.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/minimum-path-sum/">64. 最小路径和</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/f%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92/SixFour64.java">SixFour64.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/perfect-squares/">279. 完全平方数</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/f%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92/TwoSevenNine279.java">TwoSevenNine279.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/maximal-square/">221. 最大正方形</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/f%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92/TwoTwoOne221.java">TwoTwoOne221.java</a></td><td>中等</td><td></td></tr></tbody></table><h4 id="数学问题"><a href="#数学问题" class="headerlink" title="数学问题"></a>数学问题</h4><table><thead><tr><th>Title</th><th>Solution</th><th>Difficulty</th><th>flag</th></tr></thead><tbody><tr><td><a href="https://leetcode.cn/problems/palindrome-number/">9. 回文数</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/h%E6%95%B0%E5%AD%A6%E9%97%AE%E9%A2%98/Nine9.java">Nine9.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/power-of-three/">326. 3 的幂</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/h%E6%95%B0%E5%AD%A6%E9%97%AE%E9%A2%98/ThreeTwoSix326.java">ThreeTwoSix326.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/remove-element/">27. 移除元素</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/h%E6%95%B0%E5%AD%A6%E9%97%AE%E9%A2%98/TwoSeven27.java">TwoSeven27.java</a></td><td>简单</td><td></td></tr></tbody></table><h4 id="位运算"><a href="#位运算" class="headerlink" title="位运算"></a>位运算</h4><table><thead><tr><th>Title</th><th>Solution</th><th>Difficulty</th><th>flag</th></tr></thead><tbody><tr><td><a href="https://leetcode.cn/problems/hamming-distance/">461. 汉明距离</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/i%E4%BD%8D%E8%BF%90%E7%AE%97/FourSixOne461.java">FourSixOne461.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/reverse-bits/">190. 颠倒二进制位</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/i%E4%BD%8D%E8%BF%90%E7%AE%97/OneNineZero190.java">OneNineZero190.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/single-number/">136. 只出现一次的数字</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/i%E4%BD%8D%E8%BF%90%E7%AE%97/OneThreeSix136.java">OneThreeSix136.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/power-of-four/">342. 4的幂</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/i%E4%BD%8D%E8%BF%90%E7%AE%97/TheeFourTwo342.java">TheeFourTwo342.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/missing-number/">268. 丢失的数字</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/i%E4%BD%8D%E8%BF%90%E7%AE%97/TwoSixEight268.java">TwoSixEight268.java</a></td><td>简单</td><td></td></tr></tbody></table><h4 id="数据结构"><a href="#数据结构" class="headerlink" title="数据结构"></a>数据结构</h4><table><thead><tr><th>Title</th><th>Solution</th><th>Difficulty</th><th>flag</th></tr></thead><tbody><tr><td><a href="https://leetcode.cn/problems/find-all-numbers-disappeared-in-an-array/">448. 找到所有数组中消失</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/j%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/FourFourEight448.java">FourFourEight448.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/two-sum/">1. 两数之和</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/j%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/One1.java">One1.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/contains-duplicate/">217. 存在重复元素</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/j%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/TwoOneSeven217.java">TwoOneSeven217.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/implement-queue-using-stacks/">232. 用栈实现队列</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/j%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/TwoThreeTwo232.java">TwoThreeTwo232.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/implement-stack-using-queues/">225. 用队列实现栈</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/j%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/TwoTwoFive225.java">TwoTwoFive225.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/valid-parentheses/">20. 有效的括号</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/j%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/TwoZero20.java">TwoZero20.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/min-stack/">155. 最小栈</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/j%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/OneFiveFive155.java">OneFiveFive155.java</a></td><td>中等</td><td></td></tr></tbody></table><h4 id="字符串"><a href="#字符串" class="headerlink" title="字符串"></a>字符串</h4><table><thead><tr><th>Title</th><th>Solution</th><th>Difficulty</th><th>flag</th></tr></thead><tbody><tr><td><a href="https://leetcode.cn/problems/valid-anagram/">242. 有效的字母异位词</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/k%E5%AD%97%E7%AC%A6%E4%B8%B2/TwoFourTwo242.java">TwoFourTwo242.java</a></td><td>简单</td><td></td></tr></tbody></table><h4 id="链表"><a href="#链表" class="headerlink" title="链表"></a>链表</h4><table><thead><tr><th>Title</th><th>Solution</th><th>Difficulty</th><th>flag</th></tr></thead><tbody><tr><td><a href="https://leetcode.cn/problems/remove-duplicates-from-sorted-list/">83. 删除排序链表中的重复</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/l%E9%93%BE%E8%A1%A8/EightThree83.java">EightThree83.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/palindrome-linked-list/">234. 回文链表</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/l%E9%93%BE%E8%A1%A8/TwoThreeFour234.java">TwoThreeFour234.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/reverse-linked-list/">206. 反转链表</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/l%E9%93%BE%E8%A1%A8/TwoZeroSix206.java">TwoZeroSix206.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/intersection-of-two-linked-lists/">160. 相交链表</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/l%E9%93%BE%E8%A1%A8/OneSixZero160.java">OneSixZero160.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/sort-list/">148. 排序链表</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/l%E9%93%BE%E8%A1%A8/OneFourEight148.java">OneFourEight148.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/remove-nth-node-from-end-of-list/">19. 删除链表的倒数第 N 个</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/l%E9%93%BE%E8%A1%A8/OneNine19.java">OneNine19.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/odd-even-linked-list/">328. 奇偶链表</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/l%E9%93%BE%E8%A1%A8/ThreeTwoEight328.java">ThreeTwoEight328.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/add-two-numbers/">2. 两数相加</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/l%E9%93%BE%E8%A1%A8/Two2.java">Two2.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/swap-nodes-in-pairs/">24. 两两交换链表中的节点</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/l%E9%93%BE%E8%A1%A8/TwoFour24.java">TwoFour24.java</a></td><td>中等</td><td></td></tr></tbody></table><h4 id="树"><a href="#树" class="headerlink" title="树"></a>树</h4><table><thead><tr><th>Title</th><th>Solution</th><th>Difficulty</th><th>flag</th></tr></thead><tbody><tr><td><a href="https://leetcode.cn/problems/increasing-order-search-tree/">897. 递增顺序搜索树</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/m%E6%A0%91/EightNineSeven897.java">EightNineSeven897.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/minimum-absolute-difference-in-bst/">530. 二叉搜索树的最小绝对</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/m%E6%A0%91/FiveThreeZero530.java">FiveThreeZero530.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/diameter-of-binary-tree/">543. 二叉树的直径</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/m%E6%A0%91/FiveFourThree543.java">FiveFourThree543.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/binary-tree-inorder-traversal/">94. 二叉树的中序遍历</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/m%E6%A0%91/NineFour94.java">NineFour94.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/sum-of-left-leaves/">404. 左叶子之和</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/m%E6%A0%91/FourZeroFour404.java">FourZeroFour404.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/binary-tree-preorder-traversal/">144. 二叉树的前序遍历</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/m%E6%A0%91/OneFourFour144.java">OneFourFour144.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/balanced-binary-tree/">110. 平衡二叉树</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/m%E6%A0%91/OneOneZero110.java">OneOneZero110.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/maximum-depth-of-binary-tree/">104. 二叉树的最大深度</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/m%E6%A0%91/OneZeroFour104.java">OneZeroFour104.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/symmetric-tree/">101. 对称二叉树</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/m%E6%A0%91/OneZeroOne101.java">OneZeroOne101.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/two-sum-iv-input-is-a-bst/">653. 两数之和 IV - 输入二</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/m%E6%A0%91/SixFiveThree653.java">SixFiveThree653.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/merge-two-binary-trees/">617. 合并二叉树</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/m%E6%A0%91/SixOneSeven617.java">SixOneSeven617.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/average-of-levels-in-binary-tree/">637. 二叉树的层平均值</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/m%E6%A0%91/SixThreeSeven637.java">SixThreeSeven637.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/invert-binary-tree/">226. 翻转二叉树</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/m%E6%A0%91/TwoTwoSix226.java">TwoTwoSix226.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/subtree-of-another-tree/">572. 另一棵树的子树</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/m%E6%A0%91/FiveSevenTwo572.java">FiveSevenTwo572.java</a></td><td>简单</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-postorder-traversal/">889. 根据前序和后序遍历构造二叉树</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/m%E6%A0%91/EightEightNine889.java">EightEightNine889.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/find-bottom-left-tree-value/">513. 找树左下角的值</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/m%E6%A0%91/FiveOneThree513.java">FiveOneThree513.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/convert-bst-to-greater-tree/">538. 把二叉搜索树转换为</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/m%E6%A0%91/FiveThreeEight538.java">FiveThreeEight538.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/delete-node-in-a-bst/">450. 删除二叉搜索树中的</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/m%E6%A0%91/FourFiveZero450.java">FourFiveZero450.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/path-sum-iii/">437. 路径总和 III</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/m%E6%A0%91/FourThreeSeven437.java">FourThreeSeven437.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/delete-nodes-and-return-forest/">1110. 删点成林</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/m%E6%A0%91/OneOneOneZero1110.java">OneOneOneZero1110.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/">105. 从前序与中序遍历序</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/m%E6%A0%91/OneZeroFive105.java">OneZeroFive105.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/">106. 从中序与后序遍历序</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/m%E6%A0%91/OneZeroSix106.java">OneZeroSix106.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/trim-a-binary-search-tree/">669. 修剪二叉搜索树</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/m%E6%A0%91/SixSixNine669.java">SixSixNine669.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/">235. 二叉搜索树的最近公共</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/m%E6%A0%91/TwoThreeFive235.java">TwoThreeFive235.java</a></td><td>中等</td><td></td></tr><tr><td><a href="https://leetcode.cn/problems/implement-trie-prefix-tree/">208. 实现 Trie (前缀树)</a></td><td><a href="https://github.com/HiNinoJay/leetcode/blob/main/src/java/com/ninojay/leetcode/m%E6%A0%91/TwoZeroEight208.java">TwoZeroEight208.java</a></td><td>中等</td><td></td></tr></tbody></table></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E7%A8%8B%E5%BA%8F%E5%91%98/">程序员</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E7%AE%97%E6%B3%95/">算法</category>
      
      <category domain="https://www.ninojay.top/tags/Java/">Java</category>
      
      
      <comments>https://www.ninojay.top/programmer/knowledge/algorithm/leetcode101/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>银阁寺</title>
      <link>https://www.ninojay.top/2023/silver-temple/</link>
      <guid>https://www.ninojay.top/2023/silver-temple/</guid>
      <pubDate>Wed, 10 May 2023 04:41:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>小时候寒暑假，跟着家人去到祖国的大小山川名胜古迹。我的心里面只留下了，旅游即跋山涉水，累死累活。</p><p>毕业去往杭州，亲身体会到著名的灵隐寺也铺满了人，江南的炊烟袅袅形象在我心中也破碎了。</p><p>今年机缘巧合，搬家的附近是一座小山。听大家说，山上有一座寺庙，西林寺。西林寺啊，印象中是泥泞的上山路，山路中间有素面馆，不知道是不是小时候的记忆错乱，素面馆里是可以点牛肉面的。我还知道母校高中有个传统，临近高考当届班主任们会组织前往西林寺为考生们拜佛祈福。</p><p>总而言之，自不自然也从山脚溜达上去。山脚就出现茂大的植物有些违和，跟着台阶顺势生长，能主观判断出两侧花丛也是经过人细心挑选。再抬头，富有艺术气息的建筑一角出现了。没有想到这里有这样的建筑。跟着走进，牌匾为大千博物馆，是为纪念出生于此地的著名山水画大师张大千所建。</p><p>大千博物馆位于这条上山的长阶梯中部左侧的平台，继续往上山的长阶梯走，已经能看到尽头是一面墙壁，墙壁上有一个红色笔墨的大“佛”字。</p><p>只有我一个人走在这长阶梯。这几个月，大都如此。走在这条长阶梯，眉头不再紧皱，心里面平静如镜，虫鸣鸟叫也比耳机里的音乐更耐听。右侧还有个平台，这里有一个小神龛，神龛里菩萨，佛像都有。神龛前是供人烧香的祭坛。祭坛里的灰烬和寺庙特有的烟尘味吹向我的面容。每次闻到烧香的味道，总是让我想起小时候参加的那些葬礼。我把随身携带的信拿出来，一角靠近祭坛里唯一燃烧着的蜡烛火焰。火焰从蜡烛蔓延到信，烧到一半，我松开了手，目睹信变为灰烬融入祭坛里的其他灰烬。我亲眼看到信能被烧为灰烬，信上的字却烧不为灰烬，将浮现在灰烬上，那些字更显眼了。拿来祭坛里的木棒，搅浑了祭坛。继续上山。</p><p>寺庙，人少才能叫寺庙。我始终有这样一个念想。后来才知道，西林寺是一座尼姑庵。庙里女出家人行为举止有自己的风度，站在大佛前右侧念经敲木鱼，然后再走出门到一座莲花石像前，弯腰在手中点了点，再点了点莲花。再接着回到大佛前念经敲木鱼。庙占地不算大，佛和菩萨的像都很大。看到有些跪垫摆歪了，我将其摆正一些，跟着就踱步出来。我虽然喜欢逛人少的寺庙，但其实不太信佛，更认为年轻人不应该经常去求神拜佛。</p><p>西林寺很漂亮。寺庙常见的红瓦墙也融入了周围树林。没走原路下山，走在了庙旁一条下山小道。小道不一会儿就变为平路。左边往上是庙墙，右边是大片树林。就是这样，我遇到了那颗150年的菩提树。我觉得自己遇到这颗菩提树是命中注定，她好像就在等我来看她。接下来的时间，只要又来爬山，我也都来看了她。菩提树，你的名字多么好听啊。</p><p>有次舍弃大阶梯，沿着这条小路上山，告别了菩提树，我想起在山下往上看到的一栋大阁楼。怎么之前没在山上遇到呢。围绕山的水泥路走，终于发现还有一条延伸出去的路，连接到了山下的大千园林。这条路的中途分叉是一条空中栈道，走在空中栈道，这座城市的甜城湖横铺在眼前，与近看觉得水面像果冻不同，在空中看湖面水波，是一片白，再定睛隐约看到光反射的水波褶皱。水边总是有人在眺望湖的另一端，我想这些经常看大江大海大湖的人，心胸能有多狭隘呢？</p><p>空中栈道的尽头，即是那座山下看到的大阁楼。它叫太白楼。银色的外表，庞大的身躯，位于这座城市的最高点，只有我一个人。我想叫它银阁寺。</p><p>世上再无比银阁更美之物。</p><p><a href="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/postImages/%E9%93%B6%E9%98%81.jpeg" title="银阁" class="gallery-item" style="box-shadow: none;"> <img src="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/postImages/%E9%93%B6%E9%98%81.jpeg" alt="银阁"></a></p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E8%A1%A3%E9%A3%9F%E4%BD%8F%E8%A1%8C/">衣食住行</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%A1%8C/">行</category>
      
      
      <comments>https://www.ninojay.top/2023/silver-temple/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>我对人工智能的思考-公元2023年</title>
      <link>https://www.ninojay.top/2023/about-ai-chatgpt-2023/</link>
      <guid>https://www.ninojay.top/2023/about-ai-chatgpt-2023/</guid>
      <pubDate>Sun, 07 May 2023 19:07:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>从今年开始chatGPT热榜词条上随处可见。openAI、microsoft、google相关消息也都接踵而至。推特、youtube、微博、bilibili上直到现在，博主们情绪高昂介绍chatGPT、教你如何用chatGPT仍是可吸睛的局面。</p><p>我不可能不受影响，每一款新产品新技术推出，也都积极申请加入waitlist，上手体验到了能接触的产品：chatGPT、Bing、Bard、文心一言。实际上在初次体验chatGPT后，我就有了一些自己的想法。</p><blockquote><p>比尔盖茨说：chatGPT的出现对世界的影响，不亚于计算机的诞生。</p></blockquote><p>我完全同意。对于已然推出的新技术，已经开始影响世界的时刻，平凡的我们最好选择积极拥抱，努力跟上变化。所以我对由chatGPT代表的AI技术，十分看好，也相信专家们描绘的未来，也期待世界可能发生的巨变。</p><p>只是我对地方新闻、互联网平台的盲目鼓吹很是疑惑。他们都在说：chatGPT可以帮你写文章，帮你做规划、帮你写PPT、帮你编程等等重复劳动的事，将极大的提高人的生产力。</p><p>我先直接抛出自己的看法吧，我觉得AI的出现将会使得不爱思考的人进一步停止思考，也就是愚蠢的人会更愚蠢，爱偷懒的人进一步偷懒，只有少数聪明的人更能真正正面的利用这些工具。</p><p>比方说当下已经有很多人用chatGPT的创作力去完成公司的日常无聊报告、学校的政治申请材料..大家都心知肚明的无聊申请材料能让chatGPT完成，我认可是一件很好的事。但我觉得这个情况只是基于AI还未真正的流行，也就是说领导们对这新玩意儿有个信息差，所以当下的我们用chatGPT应付无聊报告很爽。等到AI真正流行的那一天呢？就像国外学校已经开始禁止学生使用chatGPT完成论文一样。会不会很快领导们就能凑在一起，商量新的对策呢？</p><p>哈哈，其实我不觉得领导们能商量出新的对策，应该能一直用chatGPT应付下去。因为<strong>心知肚明</strong>，在没有AI出现之前，谁又不知道无聊报告都是网上搜搜，左抄抄，右改改呢？我只是想强调，人将更容易拿出一个不是自己亲手产出的东西，来实施欺骗了，由此引出我下一个想说的话题。</p><p><code>不经过自己的琢磨，轻易拿到的东西作为自己的作品，交付出去，这个东西的价值大打折扣，人心里也会增加一丝心虚。</code></p><p>无聊报告倒还好，应付形式主义无人会追责。但我看有的人宣传，可以用chatGPT帮你写情书、道歉信、请假条等等和爱人，朋友，上司交往的信件。每次看到这些人这样宣传，我总是在想，让机器帮我写的情书还真正代表我的感情吗？道歉信是我发自肺腑的吗？请假条，嗯，这个确实无所谓，但是连请假条我都要机器帮我想吗，我得有多笨？我实在是难以理解这些人是怎么想的。</p><p>web2.0的出现，多了一个新型骗术：互联网杀猪盘。我相信只要有人还在宣传让chatGPT帮忙完成与身边人情绪的沟通，那么未来一定会有进阶版的杀猪盘：人工智能杀猪盘。</p><p>再说说，上文提到的国外学校开始禁止学生使用chatGPT完成论文。我相信学校的考量一定是基于<strong>促进学生思考</strong>的方面，从这一方面，我是100%支持禁止使用chatGPT。因为我相信大部分学生都只是想用chatGPT偷懒，本科毕业论文60%（随便说的数据，我相信还是保守了）有多水，中国学生也都了然，我无需多言。</p><p>我能想到反驳我“禁止学生使用chatGPT完成论文”的观点是：chatGPT可以减少学术上无端的时间浪费。</p><p>我同意一部分，目前（我得强调这个时间点，因为可能基于我视野，自身能力的局限），你不知道某个代码怎么写，你想快速整合资料得到一个简短的概括信息促进理解，我觉得chatGPT能够算是促进了你的生产力。只是你靠chatGPT帮你整合的信息，告诉你代码怎么写，你直接copy，等你完成这件事，回过头来看，我将对你真正的收获打个问号。因为人的收获，就是在犯错，反思，进步一点，重新整理，重新犯错，再反思，再进步一点循环得到的，这个过程很重要。</p><p>也就是说，我认为，只要你脑子在思考着，让chatGPT协助你完成你的论文，那肯定是一件好事。但要是不知道代码怎么写，就问chatGPT，得到一个解答，无脑copy，发现能够跑通，接着问下一个问题…那，你的收获不言而喻。我要再强调，我讨论的事都是关乎于，<strong>涉及到人的创作</strong>的事，如果确实是无脑的事，那么放心交给chatGPT去做。</p><p>说了这么多我的看法，那么我目前会怎么使用呢？面对一个问题，我个人第一想法还是要尽力研究透彻，也就是在脑子里构建关于这个问题的系统性思维。我当然会去询问chatGPT，但是只是将它的回答作为一个预告，告诉我某些关键词。促进我进一步理解这个问题，更别提这段时间亲身实践，chatGPT很多的回答也并没有完美解决我的问题，需要我先理解它的回答，再自己动手调整答案。从这一方面，我倒觉得现在和AI的互动，是利于人类思考的。</p><p>自然我会想到人工智能的终极发展。那就是所有人类会习惯，大街上有能与人类，谈天说地的机器人。它们与我们共同生活在这个星球上，即它们将会无限接近，且只要真正学会了创作，那么一定会超越人类。超越人类我还不敢想象，因为我觉得超越人类，人类不是灭亡，就是成为它们的猪羊。那么就只谈论它们无限接近人的情况。</p><p>这种情况下，难道我们人类就会无脑相信机器人吗？人工智能产生的“人”，难道我们就会放心的把我们的人自身相关的事交给它们吗？我有个想法很简单，就是一个成年人和一个孩子聊天，这个孩子也不会完全相信这个成年人的话。那么人工智能就算信息整合的能力再强，再多么接近人，它用自己的机器嘴唇发出的声音，难道我们就会更多的相信吗？或者我再这么说，我们无脑相信了人工智能的话语，难道我们人类的生活就真的会变得轻松美好吗？</p><p>我不这么认为。</p><hr><p>本文只论及本人关于chatGPT的遐想。关于midjourney为首的AI绘画，我没真正玩过，无法评价，有一些想法，但还是有机会真正玩过再说吧。</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%80%9D%E8%BE%A8/">思辨</category>
      
      
      <category domain="https://www.ninojay.top/tags/AI/">AI</category>
      
      <category domain="https://www.ninojay.top/tags/%E8%AF%9D%E5%A4%B4/">话头</category>
      
      
      <comments>https://www.ninojay.top/2023/about-ai-chatgpt-2023/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>利于搭建国内网站的免费CDN加速github和npm方式</title>
      <link>https://www.ninojay.top/hexoplugin/website-cdn/</link>
      <guid>https://www.ninojay.top/hexoplugin/website-cdn/</guid>
      <pubDate>Sat, 06 May 2023 18:10:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>因为开发自己的hexo主题<a href="https://github.com/HiNinoJay/hexo-theme-A4">hexo-theme-A4</a>需要，以及搭建网站的图床加速需求。</p><p>记录下常用的免费cdn，以下链接可直接访问我部署的数据，那么根据这个格式可替换为你对应的数据仓库格式。</p><p>建议有回源选回源。</p><p><code>2023.08.21 回源有可能挂，求稳建议还是用主要的。</code></p><h3 id="npm"><a href="#npm" class="headerlink" title="npm"></a>npm</h3><p>可用来加速访问npm包内资源</p><p><strong>zzko</strong></p><p><a href="https://cdn.jsdmirror.com/npm/hexo-theme-a4@latest/source/js/lightgallery.min.js">https://cdn.jsdmirror.com/npm/hexo-theme-a4@latest/source/js/lightgallery.min.js</a></p><p><strong>aliyun</strong></p><p><a href="https://npm.elemecdn.com/hexo-theme-a4@latest/source/css/markdown.css">https://npm.elemecdn.com/hexo-theme-a4@latest/source/css/markdown.css</a></p><p><a href="https://github.elemecdn.com/hexo-theme-a4@latest/source/css/markdown.css">https://github.elemecdn.com/hexo-theme-a4@latest/source/css/markdown.css</a></p><p><strong>jsdelivr</strong></p><p><a href="https://jsd.onmicrosoft.cn/npm/hexo-theme-a4@latest/source/css/markdown.css">https://jsd.onmicrosoft.cn/npm/hexo-theme-a4@latest/source/css/markdown.css</a></p><p>回源：<a href="https://jsd.onmicrosoft.cn/npm/hexo-theme-a4@latest/source/css/markdown.css">https://jsd.onmicrosoft.cn/npm/hexo-theme-a4@latest/source/css/markdown.css</a></p><p><strong>unpkg</strong></p><p><a href="https://unpkg.com/hexo-theme-a4@latest/source/css/markdown.css">https://unpkg.com/hexo-theme-a4@latest/source/css/markdown.css</a></p><p>回源：<a href="https://npm.onmicrosoft.cn/hexo-theme-a4@latest/source/css/markdown.css">https://npm.onmicrosoft.cn/hexo-theme-a4@latest/source/css/markdown.css</a></p><h3 id="github"><a href="#github" class="headerlink" title="github"></a>github</h3><p>可用来加速访问你的github图床仓库</p><p><strong>zzko</strong></p><p><a href="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/postImages/GTD.jpg">https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/postImages/GTD.jpg</a></p><p><strong>jsdelivr</strong></p><p><a href="https://jsd.onmicrosoft.cn/gh/hininojay/images/source/img/postImages/GTD.jpg">https://jsd.onmicrosoft.cn/gh/hininojay/images/source/img/postImages/GTD.jpg</a></p><p>回源：<a href="https://jsd.onmicrosoft.cn/gh/hininojay/images/source/img/postImages/GTD.jpg">https://jsd.onmicrosoft.cn/gh/hininojay/images/source/img/postImages/GTD.jpg</a></p><p><strong>statically</strong></p><p><a href="https://cdn.statically.io/gh/hininojay/images/main/source/img/postImages/GTD.jpg">https://cdn.statically.io/gh/hininojay/images/main/source/img/postImages/GTD.jpg</a></p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E8%BD%AF%E4%BB%B6/">软件</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E6%90%AD%E5%BB%BA%E7%BD%91%E7%AB%99/">搭建网站</category>
      
      
      <comments>https://www.ninojay.top/hexoplugin/website-cdn/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>植物有思想吗?</title>
      <link>https://www.ninojay.top/2023/have-to-do/</link>
      <guid>https://www.ninojay.top/2023/have-to-do/</guid>
      <pubDate>Thu, 04 May 2023 13:58:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>在山上碰到一个经常背着挎包，寺庙下，树下，亭子下，阳光下，看书的人。</p><p>他与我有些交谈，我好奇为什么前段时间每天下午看到他， 这几天又不见他，今天怎么又碰到他。他回答了我，提到了来这座山的经历，心情。其他的我记不得，中途的话题也不断的切换，我只记得下面这些内容。</p><p>他问我：“你觉得植物有思想吗？”</p><p>我还没来得及回答。</p><p>“植物没有思想。因为我们说有了思想，就能懂得趋利避害。有人害我，要懂得闪躲，回避。而植物就那么待在那里，任由人的摆布。所以思想之于植物毫无用处，我们可以说植物实际上没有思想，或者说我们人本身希望植物没有思想。”</p><p>“可大家都知道植物有趋光性，它会选择向阳生长。”</p><p>“也许是这个世界整个系统设计好的规则。也只代表了植物在这个系统中设置好的趋利，植物本身还是不能避人为的害。你看，连动物和人相处久了，它也会对人的喜怒哀乐有所感官，做出利己的反应。我再这么说吧，你说植物朝着阳光缓慢生长，那么我说，一只断手被扔在地上，这只断手随着时间流逝也会慢慢腐烂。我相信没人会说，这只断手有思想。”</p><p>“我明白了。”</p><p>“明白了什么。”</p><p>“学会尊重这个世界的游戏规则。在此基础上，既然我们有了思想，还是要学会反抗。我想起看过昆德拉的一句话，他说人一旦沉溺于自身的软弱，会在众目睽睽的目光中倒下去，倒在比臭水沟还低的位置。”</p><p>他笑了。</p><p>”你笑什么。“</p><p>”你说咱俩为什么会在这里相遇。你说为什么我们会在这里谈论这些东西。“</p><p>“在这里吹风很舒服。那里有棵树我很喜欢。我相信它们也喜欢我。”</p><p>“从我们聊完这些话题，产生一些改变，我们和周围的一切，接下来，也许将是貌合神离。”</p><p><a href="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/postImages/xilinsideshu.jpg" title="西林寺的树" class="gallery-item" style="box-shadow: none;"> <img src="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/postImages/xilinsideshu.jpg" alt="西林寺的树"></a></p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%80%9D%E8%BE%A8/">思辨</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AF%9D%E5%A4%B4/">话头</category>
      
      
      <comments>https://www.ninojay.top/2023/have-to-do/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>一些片段</title>
      <link>https://www.ninojay.top/2023/some-words/</link>
      <guid>https://www.ninojay.top/2023/some-words/</guid>
      <pubDate>Thu, 04 May 2023 13:58:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><ul><li>“都会好的”，菩提树这样说。</li></ul><div class="circle-orange"><p>做一个温柔的人</p><p>nino</p><p>我最近是怎么了</p><p>听的都是温柔的歌<br>看的都是纯爱的书<br>在艳阳天出门<br>对身边的人微笑<br>主动拥抱亲人</p><p>好像<br>得的那一场<br>十多年心灵重感冒<br>自己挺过来了</p><p>现在<br>能够每天都对自己说<br>开心地活下去<br>期待很多事 ​​​</p></div><ul><li><p>时不时看到自己的小学同学<br>在朋友圈分享<br>回到那所小学成为一名快乐的小学老师<br>所有的点点滴滴，都很治愈 </p></li><li><p>要无心太容易了，在乎才需要勇气。-电影《超脱》</p></li></ul><div class="circle-blue">  我之前的许许多多看法过于自以为是<p>但是结果也都相差无几地印证</p><p>我只是感觉那些结果都不再重要<br>重要的是那些人现在让我觉得</p><p>好像一直这么温柔<br>一直这么温柔</p><p>温柔到，我觉得过去的自己过于残忍了<br>过于残忍了</p><p>但是我不会回头<br>不回头<br>即是对过去的我的尊重</p><p>常言道<br>如果你认识过去的我<br>那么你一定会原谅现在的我</p></div><ul><li><p>如果说，一朵花很美，那么我有时就会不由地自语道：要活下去！ </p></li><li><p>“然而，不幸这些青年人往往不明白在许多这类事情上牺牲性命也许是一切牺牲中最容易的一种；譬如说，从青春洋溢的生命之中，牺牲五六年光阴去从事艰难困苦的学习、钻研科学，哪怕只是为了增强自身的力量，以便服务于自己所爱的真理，和甘愿完成的苦行，——这样的牺牲就有许多人完全办不到。”</p><p>摘录来自<br>耿济之译卡拉马佐夫兄弟 (中国翻译家译丛)<br>（俄）陀思妥耶夫斯基著 耿济之译</p></li></ul></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/">情绪</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      <category domain="https://www.ninojay.top/tags/%E6%91%98%E6%8A%84/">摘抄</category>
      
      <category domain="https://www.ninojay.top/tags/%E5%8F%A5%E5%AD%90/">句子</category>
      
      <category domain="https://www.ninojay.top/tags/%E8%AF%97/">诗</category>
      
      
      <comments>https://www.ninojay.top/2023/some-words/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>我的博客网站写作工作流（二）Hexo&amp;GithubAction</title>
      <link>https://www.ninojay.top/2023/writeByGithub-2/</link>
      <guid>https://www.ninojay.top/2023/writeByGithub-2/</guid>
      <pubDate>Mon, 01 May 2023 20:44:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>这是真正意义上，在github上编写md文章。提交后啥也不用管，自动发布。</p><hr><p>以上文字是我在github网页上创建了新的md文章，提交后，啥也不用管，自动就更新到我的网站！也就是真正意义上的，只要有网络，我就可以写文章，而之前<del>要更新hexo博客网站，就必须携带电脑敲代码。</del></p><p>甚至，就算是在电脑上本地写文章，也不需要再执行hexo clean&amp;&amp;hexo deploy，等待hexo编译网站源代码，命令行打出一长串的生成信息。只需要将所有的代码push到github仓库，网站自动就会更新。</p><p><strong><u><em>强烈推荐该种方法。</em></u></strong></p><p>看以下教程时，注意有的步骤与<a href="https://ninojay.top/2023/writebygithub/">我的博客网站写作工作流（一）</a>区分。</p><h3 id="背景"><a href="#背景" class="headerlink" title="背景"></a>背景</h3><p>我在github上建好了两个仓库： <strong>私有的</strong>  <em>website 仓库</em> 和 <strong>公开的</strong> <em>github pages 仓库</em>  </p><p>我的<a href="https://ninojay.top/">网站</a>是通过本地<a href="https://hexo.io/zh-cn/">hexo</a>加载自己做的博客网站主题<a href="https://github.com/HiNinoJay/hexo-theme-A4">hexo-theme-A4</a>(已开源)，生成<em><strong>静态页面</strong></em>，发布代码到 github pages仓库 ，再用<a href="https://vercel.com/dashboard">vercel容器</a>拉取 github pages代码 进行部署，使得允许互联网的访问。所以当 github pages仓库 任何的改动，vercel都会拉取最新的代码进行自动网站部署更新。</p><p><strong>以上是<a href="https://ninojay.top/2023/writebygithub/">我的博客网站写作工作流（一）</a>的描述</strong>。现在是直接将本地hexo网站项目（举例我的文件夹名website）目录下所有数据，推送到github上的website仓库。</p><p><strong>私有的</strong> <em>website仓库 : 网站真正意义上的源代码</em></p><p><strong>公有的</strong> <em>github pages仓库 : 只存储源代码生成后的静态页面</em></p><h3 id="网页上进行网站的写作过程描述💯"><a href="#网页上进行网站的写作过程描述💯" class="headerlink" title="网页上进行网站的写作过程描述💯"></a>网页上进行网站的写作过程描述💯</h3><p>举例说今天我想写篇文章：</p><ol><li><p>打开浏览器，点击保存的书签，跳转到我github上的website仓库（虽然是私有仓库，但是我自己能访问）</p></li><li><p>在website仓库里的/source/_post文件夹下创建一个markdown文件，直接在github页面进行该markdown文件写作</p></li><li><p><strong>注意</strong>：hexo对markdown文件的<code>front-matter</code>有一些必须的参数（title、date必须），在写文章正文前添加如下信息</p><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">---</span></span><br><span class="line"><span class="attr">title:</span> <span class="string">这里写你想要展示的文章标题</span> <span class="string">（必要）</span></span><br><span class="line"><span class="attr">date:</span> <span class="string">YYYY-MM-DD</span> <span class="string">HH:mm</span> <span class="string">（必要）</span></span><br><span class="line"><span class="attr">tags:</span> [<span class="string">自定义1</span>, <span class="string">自定义2</span>, <span class="string">等等</span>] <span class="comment"># 文章标签（选填）</span></span><br><span class="line"><span class="attr">categories:</span> [<span class="string">自定义</span>] <span class="comment"># 文章分类（选填）</span></span><br><span class="line"><span class="attr">comment:</span> <span class="literal">false</span> <span class="comment"># 手动关闭该篇文章的评论系统（选填）</span></span><br><span class="line"><span class="meta">---</span></span><br></pre></td></tr></tbody></table></figure></li><li><p><strong>注意</strong>：检查github上新建的文章，文件后缀是否为.md</p></li><li><p>写作完毕，提交commit保存</p></li></ol><p>以上步骤即完成了网站文章的更新。且自己在写作过程中，只需要专注于写作这件事，不会涉及到其他东西（诸如本地数据存储，上传，部署到网站等等）。</p><p>明白了新增一篇文章，那么去修改网站任意页面的内容相信你也一通百通了。</p><h3 id="之后Github会自动进行的操作"><a href="#之后Github会自动进行的操作" class="headerlink" title="之后Github会自动进行的操作"></a>之后Github会自动进行的操作</h3><p>当我们在github网页完成文章的新增或者修改后，提交commit。github会自动帮我们运行一些本来我们在本地执行的命令（如hexo generate、hexo deploy），将website仓库，即网站的源码，自动生成网站所有的最新静态页面，推送到 github pages仓库。vercel再自动拉取 github pages仓库的代码数据，完成部署网站。</p><h3 id="如何做到-Github-Action"><a href="#如何做到-Github-Action" class="headerlink" title="如何做到-Github Action"></a>如何做到-Github Action</h3><p>以上是整个流程。最关键的一步，是“github识别到website仓库有更新，会去自动生成静态页面，推送到github pages仓库” 这一操作。实际上用到的就是Github Action服务。</p><p><strong>以下为配置步骤：</strong></p><h4 id="再次提醒咱们已有的仓库"><a href="#再次提醒咱们已有的仓库" class="headerlink" title="再次提醒咱们已有的仓库"></a>再次提醒咱们已有的仓库</h4><p><strong>私有的</strong>  <em>website 仓库</em> ：网站真正意义上的源代码，存放hexo项目</p><p><strong>公开的</strong> <em>github pages 仓库</em>  ：将只会存储源代码生成后的静态页面</p><h4 id="在本地先生成一对密钥"><a href="#在本地先生成一对密钥" class="headerlink" title="在本地先生成一对密钥"></a>在本地先生成一对密钥</h4><p>这对密钥将使得 website仓库，能够访问到 github pages 仓库。</p><p>在本地电脑任意路径执行命令（你需要git环境）：</p><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">ssh-keygen</span> <span class="string">-f</span> <span class="string">github-deploy-key</span></span><br></pre></td></tr></tbody></table></figure><p>当前目录下会有 <code>github-deploy-key</code> 和 <code>github-deploy-key.pub</code> 两个文件。</p><h4 id="网页上分别配置这对密钥给两个仓库"><a href="#网页上分别配置这对密钥给两个仓库" class="headerlink" title="网页上分别配置这对密钥给两个仓库"></a>网页上分别配置这对密钥给两个仓库</h4><p><strong>配置website仓库</strong></p><p>复制 本地刚生成的其中一个密钥<code>github-deploy-key</code> 文件的内容，在 website 仓库  Settings -&gt; Secrets -&gt; Add a new secret  页面上添加。</p><ol><li>在 <code>Name</code> 输入框填写 <code>HEXO_DEPLOY_PRI</code>。</li><li>在 <code>Value</code> 输入框填写 <code>github-deploy-key</code> 文件内容。</li></ol><p><strong>配置github pages仓库</strong></p><p>复制 本地刚生成的其中一个密钥 <code>github-deploy-key.pub</code> 文件内容，在  github pages 仓库  Settings -&gt; Deploy keys -&gt; Add deploy key 页面上添加。</p><ol><li>在 <code>Title</code> 输入框填写 <code>HEXO_DEPLOY_PUB</code>。</li><li>在 <code>Key</code> 输入框填写 <code>github-deploy-key.pub</code> 文件内容。</li><li>勾选  Allow write access 选项。</li></ol><h4 id="正式编写Github-Actions"><a href="#正式编写Github-Actions" class="headerlink" title="正式编写Github Actions"></a>正式编写Github Actions</h4><p>来到 website 仓库，点击Action标签，点击页面上的 <code>New workflow</code> -&gt; <code>set up a workflow yourself</code> ，复制以下内容</p><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 文件路径 .github/workflows/autoDeploy.yml</span></span><br><span class="line"><span class="attr">name:</span> <span class="string">CI自动部署</span></span><br><span class="line"></span><br><span class="line"><span class="attr">on:</span></span><br><span class="line">  <span class="attr">push:</span></span><br><span class="line">    <span class="attr">branches:</span> [<span class="string">main</span>] <span class="comment"># 当push指定分支操作触发时执行自动部署</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="attr">jobs:</span></span><br><span class="line">  <span class="attr">hexo-deployment:</span></span><br><span class="line">    <span class="attr">runs-on:</span> <span class="string">ubuntu-latest</span></span><br><span class="line">    <span class="attr">env:</span></span><br><span class="line">      <span class="attr">TZ:</span> <span class="string">Asia/Shanghai</span></span><br><span class="line">      </span><br><span class="line"></span><br><span class="line"></span><br><span class="line">    <span class="attr">steps:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="number">0</span><span class="string">.恢复文章修改时间</span></span><br><span class="line">      <span class="attr">run:</span> <span class="string">|</span></span><br><span class="line"><span class="string">        find source/_posts -name '*.md' | while read file; do touch -d "$(git log -1 --format="@%ct" "$file")" "$file"; done</span></span><br><span class="line"><span class="string"></span></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="number">1.</span><span class="string">checkout分支</span></span><br><span class="line">      <span class="attr">uses:</span> <span class="string">actions/checkout@v2</span></span><br><span class="line">      <span class="attr">with:</span></span><br><span class="line">        <span class="attr">fetch-depth:</span> <span class="number">0</span> <span class="comment"># 添加深拷贝选择，解决github检出操作(checkout)默认是浅拷贝的问题</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="number">2.</span><span class="string">node环境安装</span></span><br><span class="line">      <span class="attr">uses:</span> <span class="string">actions/setup-node@v1</span></span><br><span class="line">      <span class="attr">with:</span></span><br><span class="line">        <span class="attr">node-version:</span> <span class="string">'12.x'</span></span><br><span class="line"></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="number">3</span><span class="string">.缓存</span> <span class="string">Hexo</span> <span class="string">模块，提高构建速度</span></span><br><span class="line">      <span class="attr">uses:</span> <span class="string">actions/cache@v3</span></span><br><span class="line">      <span class="attr">id:</span> <span class="string">cache</span></span><br><span class="line">      <span class="attr">with:</span></span><br><span class="line">        <span class="attr">path:</span> <span class="string">node_modules</span></span><br><span class="line">        <span class="attr">key:</span> <span class="string">${{runner.OS}}-${{hashFiles('**/package-lock.json')}}</span></span><br><span class="line"></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="number">4</span><span class="string">.安装依赖</span></span><br><span class="line">      <span class="attr">if:</span> <span class="string">steps.cache.outputs.cache-hit</span> <span class="type">!=</span> <span class="string">'true'</span></span><br><span class="line">      <span class="attr">run:</span> <span class="string">|</span></span><br><span class="line"><span class="string">        npm install --save</span></span><br><span class="line"><span class="string"></span></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="number">5</span><span class="string">.服务器验证</span></span><br><span class="line">      <span class="attr">env:</span></span><br><span class="line">        <span class="attr">ACTION_DEPLOY_KEY:</span> <span class="string">${{</span> <span class="string">secrets.HEXO_DEPLOY_PRI</span> <span class="string">}}</span></span><br><span class="line">      <span class="attr">run:</span> <span class="string">|</span></span><br><span class="line"><span class="string">        sudo timedatectl set-timezone "Asia/Shanghai"</span></span><br><span class="line"><span class="string">        mkdir -p ~/.ssh/</span></span><br><span class="line"><span class="string">        echo "$ACTION_DEPLOY_KEY" &gt; ~/.ssh/id_rsa</span></span><br><span class="line"><span class="string">        chmod 600 ~/.ssh/id_rsa</span></span><br><span class="line"><span class="string">        ssh-keyscan github.com &gt;&gt; ~/.ssh/known_hosts  # 填写服务器IP(如果是自建Git仓库则填写相应的服务器IP)</span></span><br><span class="line"><span class="string"></span>        </span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="number">6</span><span class="string">.三连操作部署</span></span><br><span class="line">      <span class="attr">env:</span></span><br><span class="line">        <span class="attr">GIT_NAME:</span> <span class="string">填你自己的</span></span><br><span class="line">        <span class="attr">GIT_EMAIL:</span> <span class="string">填你自己的</span></span><br><span class="line">      <span class="attr">run:</span> <span class="string">|</span></span><br><span class="line"><span class="string">        git config --global user.name ${GIT_NAME}  # GitHub用户名</span></span><br><span class="line"><span class="string">        git config --global user.email ${GIT_EMAIL} # GitHub用户名邮箱</span></span><br><span class="line"><span class="string">        git ls-files -z | while read -d '' path; do touch -d $(git log -1 --format="@%ct" "$path") "$path"; done</span></span><br><span class="line"><span class="string">        cp _config.a4.yml  themes/A4/_config.yml</span></span><br><span class="line"><span class="string">        npx hexo clean &amp;&amp; npx hexo g &amp;&amp; npx hexo deploy</span></span><br></pre></td></tr></tbody></table></figure><blockquote><p>注意根据其中的注释，有的参数改为你的相关参数。</p></blockquote><p>其实这个配置文件就是告诉Github，我监测当前仓库的哪个分支变动，然后将会推送给哪个仓库的哪个分支，这个过程中我要用什么样的机器，在这个机器上执行哪些指令。</p><p>完成以上过后保存即可。</p><p>建议此时，本地在 website目录下 执行 git pull，拉取下最新代码。以后只要你在本地，push代码到website仓库，那么Github Action都会执行配置文件里的命令自动帮你部署至 github pages仓库。</p><p>自然，你在Github网页上直接新增/修改 website仓库的任何内容，只要一commit，也都会自动执行 Github Action。</p><blockquote><p>ps：该配置文件，我找了好久，自己调试了很多次，做了一些修改，才运行成功，如果你遇到了什么问题，可在下方评论区留言。</p></blockquote><h3 id="2024-09-26更新说明"><a href="#2024-09-26更新说明" class="headerlink" title="2024.09.26更新说明"></a>2024.09.26更新说明</h3><p>因为hexo更新到了v1.9.6，新增了最近更新功能，但是CI场景下，hexo的最近更新时间发生错误，所以需要调整你的Github Action文件，<strong>上面的文件内容已做更改</strong>，下面摘录出来，主要是新增了以下内容解决文章更新时间问题：</p><figure class="highlight yml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 第一部份</span></span><br><span class="line"><span class="bullet">-</span> <span class="attr">name:</span> <span class="number">0</span><span class="string">.恢复文章修改时间</span></span><br><span class="line">      <span class="attr">run:</span> <span class="string">|</span></span><br><span class="line"><span class="string">        find source/_posts -name '*.md' | while read file; do touch -d "$(git log -1 --format="@%ct" "$file")" "$file"; done</span></span><br><span class="line"><span class="string"></span>        </span><br><span class="line"></span><br><span class="line"> <span class="comment"># 第二部份  </span></span><br><span class="line"><span class="attr">with:</span></span><br><span class="line"><span class="attr">fetch-depth:</span> <span class="number">0</span> <span class="comment"># 添加深拷贝选择，解决github检出操作(checkout)默认是浅拷贝的问题</span></span><br></pre></td></tr></tbody></table></figure><blockquote><p>ps：如果无法解决，请尝试google/百度搜索：“CI hexo 更新时间错误”，有很多案例可供你参考</p></blockquote></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E8%BD%AF%E4%BB%B6/">软件</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E6%90%AD%E5%BB%BA%E7%BD%91%E7%AB%99/">搭建网站</category>
      
      <category domain="https://www.ninojay.top/tags/hexo/">hexo</category>
      
      <category domain="https://www.ninojay.top/tags/CICD/">CICD</category>
      
      
      <comments>https://www.ninojay.top/2023/writeByGithub-2/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>hexo | hexo底层json数据内容</title>
      <link>https://www.ninojay.top/hexoplugin/hexo-data-inside/</link>
      <guid>https://www.ninojay.top/hexoplugin/hexo-data-inside/</guid>
      <pubDate>Fri, 21 Apr 2023 04:49:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>为了便于开发hexo主题，在此记录下hexo启动后，基本的参数内容。</p><p>因为几乎都是json格式，熟悉了过后，用ejs写代码去实现自己想要的功能，两个字：带劲。</p><blockquote><p>不明白官网使用手册，基本的参数都提供了，这个json数据为啥不直接提供。都是我自己运行后调用，打印出来的。</p></blockquote><h6 id="page"><a href="#page" class="headerlink" title="page"></a><strong>page</strong></h6><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line">{</span><br><span class="line">  <span class="attr">title:</span> <span class="string">'now'</span>,</span><br><span class="line">  <span class="attr">date:</span> <span class="string">Moment&lt;2023-04-13T23:30:27+08:00&gt;</span>,</span><br><span class="line">  <span class="attr">_content:</span> <span class="string">''</span>,</span><br><span class="line">  <span class="attr">source:</span> <span class="string">'now/index.md'</span>,</span><br><span class="line">  <span class="attr">raw:</span> <span class="string">''</span>,</span><br><span class="line">  <span class="attr">updated:</span> <span class="string">Moment&lt;2023-04-21T12:08:08+08:00&gt;</span>,</span><br><span class="line">  <span class="attr">path:</span> <span class="string">'now/index.html'</span>,</span><br><span class="line">  <span class="attr">comments:</span> <span class="literal">true</span>,</span><br><span class="line">  <span class="attr">layout:</span> <span class="string">'page'</span>,</span><br><span class="line">  <span class="attr">_id:</span> <span class="string">''</span>,</span><br><span class="line">  <span class="attr">content:</span> <span class="string">'具体内容'</span>,</span><br><span class="line">  <span class="attr">site:</span> { <span class="attr">data:</span> {} },</span><br><span class="line">  <span class="attr">excerpt:</span> <span class="string">''</span>,</span><br><span class="line">  <span class="attr">more:</span> <span class="string">''</span>,</span><br><span class="line">  <span class="attr">permalink:</span> <span class="string">'https://www.ninojay.top/now/index.html'</span>,</span><br><span class="line">  <span class="attr">full_source:</span> <span class="string">'/Users/cengzhongjie/Desktop/website/source/now/index.md'</span>,</span><br><span class="line">  <span class="attr">__page:</span> <span class="literal">true</span>,</span><br><span class="line">  <span class="attr">lang:</span> <span class="string">'en'</span>,</span><br><span class="line">  <span class="attr">canonical_path:</span> <span class="string">'now/index.html'</span></span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h6 id="page-is-post-true"><a href="#page-is-post-true" class="headerlink" title="page(is_post() == true)"></a><strong>page(is_post() == true)</strong></h6><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br></pre></td><td class="code"><pre><span class="line">{</span><br><span class="line">  <span class="attr">title:</span> <span class="string">'hexo底层json数据内容'</span>,</span><br><span class="line">  <span class="attr">date:</span> <span class="string">Moment&lt;2023-04-21T12:49:00+08:00&gt;</span>,</span><br><span class="line">  <span class="attr">_content:</span> <span class="string">''</span>,</span><br><span class="line">  <span class="attr">source:</span> <span class="string">'_posts/2023/hexo-date-inside.md'</span>,</span><br><span class="line">  <span class="attr">raw:</span> <span class="string">''</span>,</span><br><span class="line">  <span class="attr">slug:</span> <span class="string">'2023/hexo-date-inside'</span>,</span><br><span class="line">  <span class="attr">published:</span> <span class="literal">true</span>,</span><br><span class="line">  <span class="attr">updated:</span> <span class="string">Moment&lt;2023-04-21T12:56:33+08:00&gt;</span>,</span><br><span class="line">  <span class="attr">_id:</span> <span class="string">''</span>,</span><br><span class="line">  <span class="attr">comments:</span> <span class="literal">true</span>,</span><br><span class="line">  <span class="attr">layout:</span> <span class="string">'post'</span>,</span><br><span class="line">  <span class="attr">photos:</span> [],</span><br><span class="line">  <span class="attr">link:</span> <span class="string">''</span>,</span><br><span class="line">  <span class="attr">content:</span> <span class="string">''</span>,</span><br><span class="line">  <span class="attr">site:</span> { <span class="attr">data:</span> {} },</span><br><span class="line">  <span class="attr">excerpt:</span> <span class="string">''</span>,</span><br><span class="line">  <span class="attr">more:</span> <span class="string">''</span>,</span><br><span class="line">  <span class="attr">path:</span> <span class="string">'2023/hexo-date-inside/'</span>,</span><br><span class="line">  <span class="attr">permalink:</span> <span class="string">'https://www.ninojay.top/2023/hexo-date-inside/'</span>,</span><br><span class="line">  <span class="attr">full_source:</span> <span class="string">'/Users/cengzhongjie/Desktop/website/source/_posts/2023/hexo-date-inside.md'</span>,</span><br><span class="line">  <span class="attr">asset_dir:</span> <span class="string">'/Users/cengzhongjie/Desktop/website/source/_posts/2023/hexo-date-inside/'</span>,</span><br><span class="line">  <span class="attr">tags:</span> <span class="string">_Query</span> {</span><br><span class="line">    <span class="attr">data:</span> [ [<span class="string">_Document</span>], [<span class="string">_Document</span>], [<span class="string">_Document</span>], [<span class="string">_Document</span>] ],</span><br><span class="line">    <span class="attr">length:</span> <span class="number">4</span></span><br><span class="line">  },</span><br><span class="line">  <span class="attr">categories:</span> <span class="string">_Query</span> { <span class="attr">data:</span> [ [<span class="string">_Document</span>] ], <span class="attr">length:</span> <span class="number">1</span> },</span><br><span class="line">  <span class="attr">next:</span> <span class="string">&lt;ref</span> <span class="string">*1&gt;</span> <span class="string">_Document</span> {</span><br><span class="line">    <span class="attr">title:</span> <span class="string">'这个世界真的能消灭贫困吗？'</span>,</span><br><span class="line">    <span class="attr">date:</span> <span class="string">Moment&lt;2023-04-20T20:17:00+08:00&gt;</span>,</span><br><span class="line">    <span class="attr">_content:</span> <span class="string">''</span>,</span><br><span class="line">    <span class="attr">source:</span> <span class="string">'_posts/2023/ask-why-no-more-peaceful-person.md'</span>,</span><br><span class="line">    <span class="attr">raw:</span> <span class="string">''</span>,</span><br><span class="line">    <span class="attr">slug:</span> <span class="string">'2023/ask-why-no-more-peaceful-person'</span>,</span><br><span class="line">    <span class="attr">published:</span> <span class="literal">true</span>,</span><br><span class="line">    <span class="attr">updated:</span> <span class="string">Moment&lt;2023-04-21T10:31:50+08:00&gt;</span>,</span><br><span class="line">    <span class="attr">_id:</span> <span class="string">''</span>,</span><br><span class="line">    <span class="attr">comments:</span> <span class="literal">true</span>,</span><br><span class="line">    <span class="attr">layout:</span> <span class="string">'post'</span>,</span><br><span class="line">    <span class="attr">photos:</span> [],</span><br><span class="line">    <span class="attr">link:</span> <span class="string">''</span>,</span><br><span class="line">    <span class="attr">content:</span> <span class="string">''</span>,</span><br><span class="line">    <span class="attr">site:</span> { <span class="attr">data:</span> {} },</span><br><span class="line">    <span class="attr">excerpt:</span> <span class="string">''</span>,</span><br><span class="line">    <span class="attr">more:</span> <span class="string">''</span>,</span><br><span class="line">    <span class="attr">path:</span> [<span class="string">Getter</span>],</span><br><span class="line">    <span class="attr">permalink:</span> [<span class="string">Getter</span>],</span><br><span class="line">    <span class="attr">full_source:</span> [<span class="string">Getter</span>],</span><br><span class="line">    <span class="attr">asset_dir:</span> [<span class="string">Getter</span>],</span><br><span class="line">    <span class="attr">tags:</span> [<span class="string">Getter</span>],</span><br><span class="line">    <span class="attr">categories:</span> [<span class="string">Getter</span>],</span><br><span class="line">    <span class="attr">prev:</span> <span class="string">_Document</span> {</span><br><span class="line">      <span class="attr">title:</span> <span class="string">'hexo底层json数据内容'</span>,</span><br><span class="line">      <span class="attr">date:</span> <span class="string">Moment&lt;2023-04-21T12:49:00+08:00&gt;</span>,</span><br><span class="line">      <span class="attr">_content:</span> <span class="string">''</span>,</span><br><span class="line">      <span class="attr">source:</span> <span class="string">'_posts/2023/hexo-date-inside.md'</span>,</span><br><span class="line">      <span class="attr">raw:</span> <span class="string">''</span>,</span><br><span class="line">      <span class="attr">slug:</span> <span class="string">'2023/hexo-date-inside'</span>,</span><br><span class="line">      <span class="attr">published:</span> <span class="literal">true</span>,</span><br><span class="line">      <span class="attr">updated:</span> <span class="string">Moment&lt;2023-04-21T12:56:33+08:00&gt;</span>,</span><br><span class="line">      <span class="attr">_id:</span> <span class="string">''</span>,</span><br><span class="line">      <span class="attr">comments:</span> <span class="literal">true</span>,</span><br><span class="line">      <span class="attr">layout:</span> <span class="string">'post'</span>,</span><br><span class="line">      <span class="attr">photos:</span> [],</span><br><span class="line">      <span class="attr">link:</span> <span class="string">''</span>,</span><br><span class="line">      <span class="attr">content:</span> <span class="string">''</span>,</span><br><span class="line">      <span class="attr">site:</span> [<span class="string">Object</span>],</span><br><span class="line">      <span class="attr">excerpt:</span> <span class="string">''</span>,</span><br><span class="line">      <span class="attr">more:</span> <span class="string">''</span>,</span><br><span class="line">      <span class="attr">path:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">permalink:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">full_source:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">asset_dir:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">tags:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">categories:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">next:</span> [<span class="string">Circular</span> <span class="string">*1</span>],</span><br><span class="line">      <span class="attr">__post:</span> <span class="literal">true</span></span><br><span class="line">    },</span><br><span class="line">    <span class="attr">next:</span> <span class="string">_Document</span> {</span><br><span class="line">      <span class="attr">title:</span> <span class="string">'手把手教你搭建轻型个人网站（0）——前言'</span>,</span><br><span class="line">      <span class="attr">date:</span> <span class="string">Moment&lt;2023-04-19T13:45:00+08:00&gt;</span>,</span><br><span class="line">      <span class="attr">_content:</span> <span class="string">''</span>,</span><br><span class="line">      <span class="attr">source:</span> <span class="string">'_posts/2023/how-to-deploy-your-own-website-0.md'</span>,</span><br><span class="line">      <span class="attr">raw:</span> <span class="string">''</span>,</span><br><span class="line">      <span class="attr">slug:</span> <span class="string">'2023/how-to-deploy-your-own-website-0'</span>,</span><br><span class="line">      <span class="attr">published:</span> <span class="literal">true</span>,</span><br><span class="line">      <span class="attr">updated:</span> <span class="string">Moment&lt;2023-04-21T12:50:39+08:00&gt;</span>,</span><br><span class="line">      <span class="attr">_id:</span> <span class="string">'clgq2pcx20008inqt63x2a5i1'</span>,</span><br><span class="line">      <span class="attr">comments:</span> <span class="literal">true</span>,</span><br><span class="line">      <span class="attr">layout:</span> <span class="string">'post'</span>,</span><br><span class="line">      <span class="attr">photos:</span> [],</span><br><span class="line">      <span class="attr">link:</span> <span class="string">''</span>,</span><br><span class="line">      <span class="attr">content:</span> <span class="string">''</span>,</span><br><span class="line">      <span class="attr">path:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">permalink:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">full_source:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">asset_dir:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">tags:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">categories:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">prev:</span> [<span class="string">Circular</span> <span class="string">*1</span>],</span><br><span class="line">      <span class="attr">next:</span> [<span class="string">_Document</span>],</span><br><span class="line">      <span class="attr">__post:</span> <span class="literal">true</span></span><br><span class="line">    },</span><br><span class="line">    <span class="attr">__post:</span> <span class="literal">true</span></span><br><span class="line">  },</span><br><span class="line">  <span class="attr">__post:</span> <span class="literal">true</span>,</span><br><span class="line">  <span class="attr">lang:</span> <span class="string">'en'</span>,</span><br><span class="line">  <span class="attr">canonical_path:</span> <span class="string">'2023/hexo-date-inside/index.html'</span></span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h6 id="page-tags"><a href="#page-tags" class="headerlink" title="page.tags"></a><strong>page.tags</strong></h6><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">_Query</span> {</span><br><span class="line">  <span class="attr">data:</span> [</span><br><span class="line">    <span class="string">_Document</span> {</span><br><span class="line">      <span class="attr">name:</span> <span class="string">'互联网'</span>,</span><br><span class="line">      <span class="attr">_id:</span> <span class="string">''</span>,</span><br><span class="line">      <span class="attr">slug:</span> [<span class="string">Getter</span>], <span class="string">//</span> <span class="string">互联网</span></span><br><span class="line">      <span class="attr">path:</span> [<span class="string">Getter</span>], <span class="string">//</span> <span class="string">tags/工具使用/</span></span><br><span class="line">      <span class="attr">permalink:</span> [<span class="string">Getter</span>], <span class="string">//</span> <span class="string">https://www.ninojay.top/tags/%E6%80%9D%E8%80%83/</span></span><br><span class="line">      <span class="attr">posts:</span> [<span class="string">Getter</span>], <span class="string">//见下</span></span><br><span class="line">      <span class="attr">length:</span> [<span class="string">Getter</span>] <span class="string">//</span> <span class="number">1</span> <span class="string">代表这个标签下的post数目</span></span><br><span class="line">    },</span><br><span class="line">    <span class="string">_Document</span> {</span><br><span class="line">      <span class="attr">name:</span> <span class="string">'工具使用'</span>,</span><br><span class="line">      <span class="attr">_id:</span> <span class="string">''</span>,</span><br><span class="line">      <span class="attr">slug:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">path:</span> [<span class="string">Getter</span>], </span><br><span class="line">      <span class="attr">permalink:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">posts:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">length:</span> [<span class="string">Getter</span>]</span><br><span class="line">    },</span><br><span class="line">    <span class="string">_Document</span> {</span><br><span class="line">      <span class="attr">name:</span> <span class="string">'搭建网站'</span>,</span><br><span class="line">      <span class="attr">_id:</span> <span class="string">''</span>,</span><br><span class="line">      <span class="attr">slug:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">path:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">permalink:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">posts:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">length:</span> [<span class="string">Getter</span>]</span><br><span class="line">    },</span><br><span class="line">    <span class="string">_Document</span> {</span><br><span class="line">      <span class="attr">name:</span> <span class="string">'hexo'</span>,</span><br><span class="line">      <span class="attr">_id:</span> <span class="string">''</span>,</span><br><span class="line">      <span class="attr">slug:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">path:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">permalink:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">posts:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">length:</span> [<span class="string">Getter</span>]</span><br><span class="line">    }</span><br><span class="line">  ],</span><br><span class="line">  <span class="attr">length:</span> <span class="number">4</span></span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"></span><br></pre></td></tr></tbody></table></figure><h6 id="page-tags-data-0-posts"><a href="#page-tags-data-0-posts" class="headerlink" title="page.tags.data[0].posts"></a><strong>page.tags.data[0].posts</strong></h6><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">_Query</span> {</span><br><span class="line">  <span class="attr">data:</span> [</span><br><span class="line">    <span class="string">_Document</span> {</span><br><span class="line">      <span class="attr">title:</span> <span class="string">'这个世界真的能消灭贫困吗？'</span>,</span><br><span class="line">      <span class="attr">date:</span> <span class="string">Moment&lt;2023-04-20T20:17:00+08:00&gt;</span>,</span><br><span class="line">      <span class="attr">_content:</span> <span class="string">''</span>,</span><br><span class="line">      <span class="attr">source:</span> <span class="string">''</span>,</span><br><span class="line">      <span class="attr">slug:</span> <span class="string">'2023/ask-why-no-more-peaceful-person'</span>,</span><br><span class="line">      <span class="attr">published:</span> <span class="literal">true</span>,</span><br><span class="line">      <span class="attr">updated:</span> <span class="string">Moment&lt;2023-04-21T10:31:50+08:00&gt;</span>,</span><br><span class="line">      <span class="attr">_id:</span> <span class="string">''</span>,</span><br><span class="line">      <span class="attr">comments:</span> <span class="literal">true</span>,</span><br><span class="line">      <span class="attr">layout:</span> <span class="string">'post'</span>,</span><br><span class="line">      <span class="attr">photos:</span> [],</span><br><span class="line">      <span class="attr">link:</span> <span class="string">''</span>,</span><br><span class="line">      <span class="attr">content:</span> <span class="string">''</span>,</span><br><span class="line">      <span class="attr">site:</span> [<span class="string">Object</span>],</span><br><span class="line">      <span class="attr">excerpt:</span> <span class="string">''</span>,</span><br><span class="line">      <span class="attr">more:</span> <span class="string">''</span>,</span><br><span class="line">      <span class="attr">path:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">permalink:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">full_source:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">asset_dir:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">tags:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">categories:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">prev:</span> [<span class="string">_Document</span>],</span><br><span class="line">      <span class="attr">next:</span> [<span class="string">_Document</span>],</span><br><span class="line">      <span class="attr">__post:</span> <span class="literal">true</span></span><br><span class="line">    }</span><br><span class="line">  ],</span><br><span class="line">  <span class="attr">length:</span> <span class="number">1</span></span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h6 id="page-categoires"><a href="#page-categoires" class="headerlink" title="page.categoires"></a><strong>page.categoires</strong></h6><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">_Query</span> {</span><br><span class="line">  <span class="attr">data:</span> [</span><br><span class="line">    <span class="string">_Document</span> {</span><br><span class="line">      <span class="attr">name:</span> <span class="string">'思辨'</span>,</span><br><span class="line">      <span class="attr">_id:</span> <span class="string">''</span>,</span><br><span class="line">      <span class="attr">slug:</span> [<span class="string">Getter</span>], <span class="string">//</span> <span class="string">思辨</span></span><br><span class="line">      <span class="attr">path:</span> [<span class="string">Getter</span>], <span class="string">//</span> <span class="string">categories/思辨/</span></span><br><span class="line">      <span class="attr">permalink:</span> [<span class="string">Getter</span>],  <span class="string">//</span> <span class="string">https://www.ninojay.top/categories/%E6%80%9D%E8%BE%A8/</span></span><br><span class="line">      <span class="attr">posts:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">length:</span> [<span class="string">Getter</span>] <span class="string">//</span> <span class="number">7</span> <span class="string">代表该分类下post数量</span></span><br><span class="line">    }</span><br><span class="line">  ],</span><br><span class="line">  <span class="attr">length:</span> <span class="number">1</span></span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h6 id="page-categories-data-0-posts"><a href="#page-categories-data-0-posts" class="headerlink" title="page.categories.data[0].posts"></a><strong>page.categories.data[0].posts</strong></h6><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">_Query</span> {</span><br><span class="line">  <span class="attr">data:</span> [</span><br><span class="line">    <span class="string">_Document</span> {</span><br><span class="line">      <span class="attr">title:</span> <span class="string">'食01-小炒肉'</span>,</span><br><span class="line">      <span class="attr">date:</span> <span class="string">Moment&lt;2022-03-31T14:27:36+08:00&gt;</span>,</span><br><span class="line">      <span class="attr">banner:</span> <span class="string">'/img/postImages/xiaochaorou.jpg'</span>,</span><br><span class="line">      <span class="attr">_content:</span> <span class="string">''</span>,</span><br><span class="line">      <span class="attr">source:</span> <span class="string">'_posts/2022/stir-fried-pork.md'</span>,</span><br><span class="line">      <span class="attr">raw:</span> <span class="string">''</span>,</span><br><span class="line">      <span class="attr">slug:</span> <span class="string">'2022/stir-fried-pork'</span>,</span><br><span class="line">      <span class="attr">published:</span> <span class="literal">true</span>,</span><br><span class="line">      <span class="attr">updated:</span> <span class="string">Moment&lt;2023-04-19T03:11:22+08:00&gt;</span>,</span><br><span class="line">      <span class="attr">comments:</span> <span class="literal">true</span>,</span><br><span class="line">      <span class="attr">layout:</span> <span class="string">'post'</span>,</span><br><span class="line">      <span class="attr">photos:</span> [],</span><br><span class="line">      <span class="attr">link:</span> <span class="string">''</span>,</span><br><span class="line">      <span class="attr">_id:</span> <span class="string">''</span>,</span><br><span class="line">      <span class="attr">content:</span> <span class="string">''</span>,</span><br><span class="line">      <span class="attr">path:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">permalink:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">full_source:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">asset_dir:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">tags:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">categories:</span> [<span class="string">Getter</span>],</span><br><span class="line">      <span class="attr">prev:</span> [<span class="string">_Document</span>],</span><br><span class="line">      <span class="attr">next:</span> [<span class="string">_Document</span>],</span><br><span class="line">      <span class="attr">__post:</span> <span class="literal">true</span></span><br><span class="line">    }</span><br><span class="line">  ],</span><br><span class="line">  <span class="attr">length:</span> <span class="number">1</span></span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E8%BD%AF%E4%BB%B6/">软件</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E6%90%AD%E5%BB%BA%E7%BD%91%E7%AB%99/">搭建网站</category>
      
      <category domain="https://www.ninojay.top/tags/hexo/">hexo</category>
      
      
      <comments>https://www.ninojay.top/hexoplugin/hexo-data-inside/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>这个世界真的能消灭贫困吗？</title>
      <link>https://www.ninojay.top/2023/ask-why-no-more-peaceful-person/</link>
      <guid>https://www.ninojay.top/2023/ask-why-no-more-peaceful-person/</guid>
      <pubDate>Thu, 20 Apr 2023 12:17:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>漫无目的地散步在家附近的寺庙山脚。想到这样一个问题。人类从产生智慧，部落群体到农耕文化，电气时代到互联网时代，甚至已经到来的AI时代。这一过程年份可以用千年为单位来计量，我们经常提到几代人几代人，在这一时间长度中也显得微不足道。也就是说，人的代数是难以估量的。</p><p>我思考，我这一代。身边有贫困的人，为了生活不得不妥协一些东西。有心理疾病患者，备受折磨至今。也有积极向上的人，实现自己的理想，一人把家庭带到了更优越的生活。也有改变世界的人，一人把人类推往星辰大海。</p><p>我思考，正能量的人，我觉得很好。负能量的人，明白负能量的遭遇，希望凭借自己的力量改变命运，最终生出，培养出更多正能量的人。</p><p>我思考。也就是说，每一代人</p><p>当中，总是含有意欲改变自身命运的人，且做到的人也不是少数。那么这几千年人的无数代人，累计太多改变了自身的命运。或者不这么说，就是，一代人中，坏出身的人们，在下一代到来时，一定是大部分都大幅度改善了自己的生活。</p><p>我想说的就是：按照道理，好人善人，能正常维持生活的人将会一代一代地越来越多才是。</p><p>那么再回到我开头说的时间长度，几千年的无数代人。无数代人，每一代都有意欲改变自身命运的人。</p><p>已经几千年了，不管这几千年的无数代人中，每一代有多少都努力地改变自身的生活，来到我现在生活的这一代，肉眼可见身边还是有，明白自己必须改变自身命运的人！已经几千年了。我们身边还是随处可见贫困、傲慢、无礼、自卑…</p><p>我思考，我不禁不得不问出一个个问题。几千年了，人究竟是真的在变好吗？或者说，几千年了，人真的追求的是好吗？这几千年跨度的那些通过教育，商业，政治改变自己人生的人，为什么没有把世界变得更好呢？</p><p>我想起了一件事。我遇到过一位北大的女性。她跟我说她选择和丈夫丁克。</p><p>我想起了在哪里看过一个说法，知识越多的人，越不愿意生孩子。</p><p>我想起了一个贫困的婆婆，她生了七个孩子。</p><p>我不由得出一个结论：难道说，每一代人中改变自身命运的，一部分，舍弃了培养下一代的责任，而剩下的大部分，都不愿多生孩子。而贫困的人一直在不断地生孩子，生的再多都无所谓。</p><p>最终我发问：<strong>这个世界真的能消灭贫困吗？</strong></p><p>本文，写到这，就想收笔了。但是。</p><p><em>为了不过于消极世界观，我得多提一句，就像那些up主，脱口秀演员，最后需要正能量升华一下。</em></p><p>也许世界不曾发生本质变化，但我们活着的当下是有实感的。不必盲目抱有消灭世界所有贫困的决心，仅仅是为了改变自己这一生的体验，也是应该去奋斗的。</p><p>而选择做一个善人，是我们的良心对为人的要求。</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%80%9D%E8%BE%A8/">思辨</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AF%9D%E5%A4%B4/">话头</category>
      
      
      <comments>https://www.ninojay.top/2023/ask-why-no-more-peaceful-person/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>手把手教你搭建轻型个人网站（0）——前言</title>
      <link>https://www.ninojay.top/2023/how-to-deploy-your-own-website-0/</link>
      <guid>https://www.ninojay.top/2023/how-to-deploy-your-own-website-0/</guid>
      <pubDate>Wed, 19 Apr 2023 05:45:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>如果你有搭建个人网站的念头，会去互联网搜索搭建网站的方法。外行人浏览一圈资讯能一下入坑，完成独立搭建的人，占极少部分，大多需要折腾十天半个月，结果放弃。就算是学过编程的人，一想到搭建网站，也会联想到动态网站的服务器，域名，后端数据库，前端页面的设计管理，头也会变得很大。</p><p>这时候就会有人提出，使用成熟静态网站搭建工具。这便是该系列教程的主题。如果你只想搭建一个轻型的静态博客网站，那么你即是本系列文章的目标群体。</p><p>开始之前，我想说一个现象，很多教程一上来就分步骤描述，第一步安装什么，第二步安装什么..过程当中遇到了一些问题，都会让读者迷惑不已，甚至搭建好了才发现不适合自己，后续的维护繁琐，还不如直接用商用的博客平台。</p><p>所以，我会按照这个顺序描述：</p><ul><li>假设你已经有了自己的网站，日常你将如何发布新文章到网站，如何维护网站</li><li>搭建一个网站的几个必备要素是什么，要不要付费，哪些实际上可以不花钱</li><li>到底如何把网站代码自动生成出来，怎么挑选喜欢的网站风格，便捷地一键切换</li></ul><p>跟着我的思路走，你的心里就会有数，搭建之前就形成一种管理自己网站的大局观，了然该种方法适不适合你，要不要接下去跟着我把个人网站完成。</p><p><strong>ps：等待我的博客主题被官方收录再正式更新吧。</strong></p><p><strong>系列：</strong></p><ul><li><a href="">手把手教你搭建轻型个人网站（1）——如何维护自己的网站</a></li><li><a href="">手把手教你搭建轻型个人网站（2）——搭建网站的必备要素</a></li><li><a href="">手把手教你搭建轻型个人网站（3）——随意挑选喜欢的网站风格并生成代码上传</a></li></ul></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E8%BD%AF%E4%BB%B6/">软件</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E6%90%AD%E5%BB%BA%E7%BD%91%E7%AB%99/">搭建网站</category>
      
      <category domain="https://www.ninojay.top/tags/hexo/">hexo</category>
      
      
      <comments>https://www.ninojay.top/2023/how-to-deploy-your-own-website-0/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>我的快捷键逻辑-myKeyboardShortcuts</title>
      <link>https://www.ninojay.top/writing/myKeyboardShortcuts/</link>
      <guid>https://www.ninojay.top/writing/myKeyboardShortcuts/</guid>
      <pubDate>Sun, 16 Apr 2023 18:12:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>通过Arc浏览器的调教，仿佛对mac软件快捷键的使用，一下就通透了。加速了自己使用工作软件的反应。</p><p>尤其是当我归纳出一套自己喜欢的快捷键方式逻辑，有两个极大的好处：</p><ul><li>一通百通，很多软件的快捷键默认设计逻辑很相似，上手很快</li><li>对于软件可能的特例快捷键，手动去更改为熟悉的逻辑，上手也很快</li></ul><p>所以，在此记录下自己熟悉的一套快捷键逻辑，加深记忆，形成条件反射。</p><blockquote><p>注意：</p><ul><li>以下字母不区分大小写</li><li>加上❕提醒经常复习</li></ul></blockquote><h4 id="全局快捷键"><a href="#全局快捷键" class="headerlink" title="全局快捷键"></a>全局快捷键</h4><hr><h5 id="默认"><a href="#默认" class="headerlink" title="默认"></a>默认</h5><ul><li><strong>全选</strong>：command + A</li><li><strong>剪切</strong>：command + X ❕</li><li><strong>撤销</strong>：command + Z</li><li><strong>重做</strong>：command + shift + Z</li><li><strong>保存当前修改</strong>：command + S</li><li><strong>打印</strong>：command + P</li></ul><p><strong>撤销</strong>见名知意，很常见，大伙儿应该都会用。<strong>重做</strong>这个翻译的不太行，以至于我相信很多人像我去年以前一样，不知道怎么恢复刚才撤销的内容，只好重新打输入一遍。</p><p>其实<strong>重做</strong>就是针对<strong>撤销操作</strong>的恢复，所以我建议翻译成恢复：）</p><ul><li><strong>mac屏幕亮度-/+</strong> ：F9/F10</li><li><strong>关闭当前窗口</strong>：command + W</li><li><strong>全屏当前窗口</strong>：fn + F ❕</li></ul><p>个别软件不同，Arc的全屏是 control + command + F，因为该死的设置不了为fn + F</p><h5 id="调整"><a href="#调整" class="headerlink" title="调整"></a>调整</h5><ul><li><strong>截图</strong>：command + control + A</li></ul><p>我安装了一款iShot截图软件，功能强大，所以把它的截图快捷键设置为全局，把其他软件，诸如大伙截图习惯用的QQ，Wechat的截图快捷键都关闭（免得引起快捷键冲突）。甚至我把系统的截图快捷键都关闭了。</p><ul><li><strong>ocr翻译</strong>：option + S</li><li><strong>文本输入翻译</strong>： option + D</li></ul><p>这两个全局快捷键来自于Bob这款APP，我已付费支持，十分方便快捷好用的翻译小软件。</p><ul><li><strong>调度中心：</strong>  鼠标4键（侧边下键）</li><li><strong>桌面：</strong>鼠标5键（侧边上键）</li><li><strong>应用程序窗口：</strong>鼠标3键（滑轮键）</li></ul><h4 id="APP"><a href="#APP" class="headerlink" title="APP"></a>APP</h4><p>能调整的，都特意去调整为统一快捷键。</p><ul><li><strong>聚焦</strong>：command + space</li></ul><hr><h4 id="Vim"><a href="#Vim" class="headerlink" title="Vim"></a>Vim</h4><ul><li><p><strong>复制当前一行</strong>: yy</p></li><li><p><strong>跳到下一个单词的首部：</strong>w</p></li><li><p><strong>跳到下一个单词的末尾：</strong>e</p></li><li><p><strong>跳到行首：</strong>0</p></li><li><p><strong>跳到文件第一行：</strong>gg</p></li><li><p><strong>跳到文件最后一行：</strong>G</p></li><li><p><strong>跳到文件某一行：</strong>numberG</p></li><li><p><strong>删除光标位置往后的一个单词(包括最后的空格)：</strong>dw</p></li><li><p><strong>删除光标位置往后的一个单词(不包括包括最后的空格)：</strong>de</p></li><li><p><strong>删除光标位置往后的所有：</strong>d$</p></li><li><p><strong>撤销：</strong>u</p></li><li><p><strong>替换全局字符串：</strong>:%s/foo/bar/g</p></li><li><p><strong>替换全局字符串，逐个确认：</strong>:%s/foo/bar/gc</p></li></ul><h4 id="Typora"><a href="#Typora" class="headerlink" title="Typora"></a>Typora</h4><h5 id="默认-1"><a href="#默认-1" class="headerlink" title="默认"></a>默认</h5><ul><li><strong>重点</strong> ：control + ` ❕</li><li><strong>插入表格</strong>：command + option + T ❕</li><li><strong>提升/将低标题级别</strong>：command +/- ❕</li></ul><br><ul><li><strong>选中当前词</strong>：command + D ❕</li><li><strong>选中当前格式的词或者句</strong>：command + E ❕</li><li><strong>选中当前行或句</strong>：command + L</li></ul><br><ul><li><strong>侧边栏</strong>：command + shift + L</li><li><strong>侧边栏搜索文件</strong>：command + shift + F❕</li></ul><br><ul><li><strong>跳转到文首/文末</strong>：command + up/down ❕</li><li><strong>跳转到行首/行末</strong>：command + left/right❕</li><li><strong>跳转到光标位置</strong>：command + J ❕</li></ul><br><ul><li><strong>专注模式</strong>：F8</li><li><strong>检查单词拼写</strong>：command + shift + : ❕❕</li><li><strong>代码模式:</strong> command + /</li></ul><hr><h4 id="Arc"><a href="#Arc" class="headerlink" title="Arc"></a>Arc</h4><p><strong>默认</strong></p><ul><li><strong>New Note:</strong> control + N</li></ul><h5 id="调整-1"><a href="#调整-1" class="headerlink" title="调整"></a>调整</h5><ul><li><strong>new tab</strong>: command + space</li><li><strong>刷新</strong>：F5</li><li><strong>调试</strong>：F12</li><li><strong>复制当前页面的url</strong>：command + shift + L</li><li><strong>全屏</strong>: control + command + F ❕</li><li><strong>横切页面：</strong>control + tab</li></ul><hr><h4 id="Utools"><a href="#Utools" class="headerlink" title="Utools"></a>Utools</h4><h5 id="调整-2"><a href="#调整-2" class="headerlink" title="调整"></a>调整</h5><ul><li><strong>聚焦</strong>：option + space</li><li><strong>插件ChatGPT好友</strong>：F1</li></ul><hr><h4 id="Vscode"><a href="#Vscode" class="headerlink" title="Vscode"></a>Vscode</h4><h5 id="调整-3"><a href="#调整-3" class="headerlink" title="调整"></a>调整</h5><ul><li><strong>聚焦</strong>：command + space</li></ul><hr><h4 id="IDEA"><a href="#IDEA" class="headerlink" title="IDEA"></a>IDEA</h4><p><strong>默认：</strong></p><ul><li><strong>全局字符查找:</strong> command + shift + F</li><li><strong>全局字符替换:</strong> command + shift + R</li></ul><p><strong>调整：</strong></p><ul><li><strong>Search EveryWhere：</strong>command + space</li><li><strong>Override Method:</strong> command+ o</li><li><del><strong>Go to Class:</strong></del></li><li><del><strong>Go to File</strong></del></li><li><del><strong>Go to changed File</strong></del></li></ul><hr><h4 id="Obsidian"><a href="#Obsidian" class="headerlink" title="Obsidian"></a>Obsidian</h4><h5 id="ipad"><a href="#ipad" class="headerlink" title="ipad:"></a>ipad:</h5><ul><li><strong>ESC代替键</strong>：command + .</li><li><strong>选择文本区域：</strong> option + shift + 方向左右键</li></ul><h5 id="调整-4"><a href="#调整-4" class="headerlink" title="调整"></a>调整</h5><ul><li><strong>左侧目录：</strong> command+ shift + L</li><li><strong>右侧目录：</strong> command + shift + R</li><li><strong>聚焦编辑区：</strong> command + shift + F</li><li><strong>插入模板：</strong> command + shift + M</li><li><strong>切换到上一个标签页：</strong>  commmand + control + L</li><li><strong>切换到下一个标签页：</strong> command + control + R</li></ul></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E8%BD%AF%E4%BB%B6/">软件</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E6%96%B9%E6%B3%95%E8%AE%BA/">方法论</category>
      
      
      <comments>https://www.ninojay.top/writing/myKeyboardShortcuts/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>我的博客网站写作工作流（一）</title>
      <link>https://www.ninojay.top/2023/writeByGithub-1/</link>
      <guid>https://www.ninojay.top/2023/writeByGithub-1/</guid>
      <pubDate>Sat, 15 Apr 2023 09:23:00 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>该篇文章讲解我目前写作的工具使用，以及基本的流程。自认为是一套成熟且稳定，数据即刻安全备份，有网络即可写作，随时同步到自己的博客网站中。</p><h3 id="背景"><a href="#背景" class="headerlink" title="背景"></a>背景</h3><p>我在github上建好了两个私有仓库：<em>github pages仓库</em> 和 <em>source仓库</em></p><p>我的<a href="https://ninojay.top/">网站</a>是通过本地<a href="https://hexo.io/zh-cn/">hexo</a>加载自己做的博客网站主题<a href="https://github.com/HiNinoJay/hexo-theme-A4">hexo-theme-A4</a>(已开源)，生成静态页面，发布代码到 github pages仓库 ，再用<a href="https://vercel.com/dashboard">vercel容器</a>部署 github pages代码 进行互联网的访问。所以当 github pages仓库 任何的改动，vercel都会拉取最新的代码进行自动网站部署更新。</p><p><em>github pages仓库 :博客网站源码</em></p><p><em>source仓库 :文章备份仓库</em></p><h3 id="写作过程"><a href="#写作过程" class="headerlink" title="写作过程"></a>写作过程</h3><p>举例说今天我想写篇文章：</p><ol><li>打开浏览器，点击保存的书签，跳转到我github上的source仓库</li><li>在source仓库里的_post文件夹创建一个markdown文件，直接在github页面进行该markdown文件写作</li><li>写作完毕，提交commit保存</li></ol><p>以上步骤即完成了写作文章的备份。且自己在写作过程中，只需要专注于写作这件事，不会涉及到其他东西（诸如本地数据存储，上传，部署到网站等等）。</p><h3 id="写作注意"><a href="#写作注意" class="headerlink" title="写作注意"></a>写作注意</h3><p>因为我们本质上采用的hexo的博客网站代码，所以文章需要遵循一定的要求，才能使得网站正确展示效果。</p><p>我这里唯一需要记住新写的markdown文章:</p><ul><li>需添加如下<strong>必要</strong>的头部信息</li></ul><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">---</span></span><br><span class="line"><span class="attr">title:</span> <span class="string">这里写你想要展示的文章标题</span> <span class="string">（必要）</span></span><br><span class="line"><span class="attr">date:</span> <span class="number">2023-04-15 </span><span class="number">17</span><span class="string">:23</span> <span class="string">（必要）</span></span><br><span class="line"><span class="attr">comment:</span> <span class="literal">false</span> <span class="comment"># 手动关闭该篇文章的评论系统（可选，默认打开）</span></span><br><span class="line"><span class="meta">---</span></span><br></pre></td></tr></tbody></table></figure><ul><li>github上新建的文章，文件后缀为.md</li></ul><h3 id="保存文章到本地"><a href="#保存文章到本地" class="headerlink" title="保存文章到本地"></a>保存文章到本地</h3><p>使用hexo搭建博客的人都知道，所有的网站上的文章都放在网站源码文件夹下的 <em>/source/_post文件夹</em> 下。</p><p>举例说我电脑上的网站源码文件夹名是website，那么网站上的所有文章都放在 <em>/website/source/_post/</em> 目录下。</p><p>所以之所以我在github上的文章仓库取名为source，即是将电脑上的 <em>/website/source/文件夹</em> 和github上的 <em>source仓库</em> 建立了git连接。</p><p>那么保存文章到本地就好办了，无非就是git命令的使用：</p><ol><li>命令行进入到 <em>/website/source/文件夹</em></li><li>执行 <em>git pull</em> 命令即可</li></ol><p>或者使用<a href="https://desktop.github.com/">github桌面版</a>，一键点击搞定最新文章的拉取至本地。</p><h3 id="文章部署至网站"><a href="#文章部署至网站" class="headerlink" title="文章部署至网站"></a>文章部署至网站</h3><p><strong>两种方式：</strong></p><p>A.<del>浏览器直接部署到网站</del></p><p>可以直接通过github页面进行操作，只需要将刚写好的source仓库_post文件夹里的最新文章，复制到github pages仓库里的source文件夹<strong>对应位置</strong>，即可。</p><p><strong><em>通过考察，目前不推荐该方法，hexo对一篇文章的存储并不简单直接</em></strong></p><p>B.本地电脑部署到网站(推荐）：</p><p>需要做如下步骤：</p><ol><li>完成<a href="#%E4%BF%9D%E5%AD%98%E6%96%87%E7%AB%A0%E5%88%B0%E6%9C%AC%E5%9C%B0">保存文章到本地</a>的操作（上面已提及）</li><li>命令行来到 <em>/website目录</em> 下</li><li>执行 <em>hexo d</em> ，上传最新网站代码（将包含这次新增的文章）至github pages仓库</li></ol><p>以上两种方式，都会触发vercel容器自动拉取最新的代码部署网站，我们直接浏览器访问网站将会看到最新写的文章。</p><p>看上去步骤还是有些多，事实上整体的流程十分简单，基本核心围绕github的两个仓库展开。</p><h3 id="其他"><a href="#其他" class="headerlink" title="其他"></a>其他</h3><p>关于直接通过github写作，我是觉得沉静感还不错，github直接编辑markdown，页面上没有其他的干扰项（如广告），可以预览，挺纯粹。只需要专心于文字的书写即可。可能有人会觉得写文章的同时看不到实时的网站效果，那我是觉得，写文章就是写文章，不用管其他任何事，专心于文字才是需要关心的事。至于网站上的效果，文章写完毕，一切都好说。</p><h3 id="不足"><a href="#不足" class="headerlink" title="不足"></a>不足</h3><p>因为拆分为了两个仓库，所以多了一步手动部署至网站。我再找找有什么办法，可以在source仓库上写好文章提交，其他啥也不用管，自动同步到 git pages仓库的方法。</p><p>目前已了解到github Action似乎可以完成这个操作。</p><hr><p>20230502，已更新github Action操作 -&gt; <a href="https://ninojay.top/2023/writeByGithub-2/">https://ninojay.top/2023/writeByGithub-2/</a></p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E8%BD%AF%E4%BB%B6/">软件</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E6%90%AD%E5%BB%BA%E7%BD%91%E7%AB%99/">搭建网站</category>
      
      <category domain="https://www.ninojay.top/tags/hexo/">hexo</category>
      
      <category domain="https://www.ninojay.top/tags/CICD/">CICD</category>
      
      
      <comments>https://www.ninojay.top/2023/writeByGithub-1/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>2023所有碎片</title>
      <link>https://www.ninojay.top/fragments/2023/</link>
      <guid>https://www.ninojay.top/fragments/2023/</guid>
      <pubDate>Thu, 13 Apr 2023 17:39:10 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><br><div style="text-align: left"><h6 id="2023-12-14-00-31-冬-🧊"><a href="#2023-12-14-00-31-冬-🧊" class="headerlink" title="2023-12-14  00:31  冬 🧊"></a>2023-12-14  00:31  冬 🧊</h6></div><div class="circle-red"><p>前十分钟阅读完，爱尔兰作家，埃塞尔·丽莲·伏尼契的《牛虻》</p><p>周一、周二、周三，连着三天下班后迫不及待回家，看完了这本小说。</p><ul><li>有些想哭。明白丽莲想写的是什么。</li><li>《牛虻》就像《那不勒斯四部曲》，一旦涉及到意大利，作者就会有意把人的情感和社会变革缠绕在一起，最终也还是粗暴解开直接给读者，告诉你，人的情感，最为生动。</li></ul><hr><center><p><em>不管我活着</em><br><em>或者是死亡</em><br><em>我永远都是</em><br><em>快乐的牛虻</em> </p><p>-<em>亚瑟</em></p></center><hr><p>这辈子好想去意大利。</p></div><br><div style="text-align: left"><h6 id="2023-11-21-18-32-秋-☀️"><a href="#2023-11-21-18-32-秋-☀️" class="headerlink" title="2023-11-21  18:32  秋 ☀️"></a>2023-11-21  18:32  秋 ☀️</h6></div><div class="circle-black"><p>今年对我来说最重要的一件事：回归社会。算是很平稳地回来了。</p><p>2023已无真正的期待，剩下的一个多月，就提前好好整理下自己吧。</p><blockquote><p>再轻轻体会，人山人海，人来人往。</p></blockquote></div><br><div style="text-align: left"><h6 id="2023-10-28-01-19-秋-🔥"><a href="#2023-10-28-01-19-秋-🔥" class="headerlink" title="2023-10-28  01:19  秋 🔥"></a>2023-10-28  01:19  秋 🔥</h6></div><div class="circle-blue"><ul><li>这是秋天吗，忽热忽热。</li><li>我住的公寓朝向过于向阳，向阳程度到温度稍微一高，秋天我还得开空调。</li><li>忙着上班，闲暇之余准备更多编程知识点的我。最近过得也像这天气，忽燥忽燥。</li><li>这俩月，统计了一下，共看10本书，系统性看了奥威尔和卡夫卡，实话说卡夫卡看得我很痛苦，也确实苦有回甘。最近看完的一本是王小波的《绿毛水怪》，深夜，好久没有看书感动到流泪了。还是王小波打动我。抓回了一些想写小说的冲动。</li><li>最近，我在社会上变得沉默了一些，在社交软件上，变得活跃了太多。讨厌社交软件，更讨厌离不开社交软件的自己。</li><li>抢到了11月份陈奕迅在上海的演唱会门票。</li><li>感谢最近对我温柔的朋友。</li></ul></div><br><div style="text-align: left"><h6 id="2023-09-01-22-14-秋-🍂"><a href="#2023-09-01-22-14-秋-🍂" class="headerlink" title="2023-09-01  22:14  秋 🍂"></a>2023-09-01  22:14  秋 🍂</h6></div><div class="circle-black"><p>《奥本海默》今年独自去影院看的第三部电影。</p><p>我的评价是：虽然我没看过原著，却给我带来看完一本“奇人”传记的精神后劲刺激。人文感丰富的一部诺兰电影。</p></div><br><div style="text-align: left"><h6 id="2023-08-23-01-43-夏-☔️"><a href="#2023-08-23-01-43-夏-☔️" class="headerlink" title="2023-08-23  01:43  夏 ☔️"></a>2023-08-23  01:43  夏 ☔️</h6></div><div class="circle-black"><p>我不再装模作样的拥有很多朋友，而是回到了孤单之中，以真正的我开始了独自的生活。有时我也会因为寂寞而难以忍受空虚的折磨，但我宁愿以这样的方式来维护自己的自尊，也不愿以耻辱为代价去换取那种表面的朋友。</p><div style="text-align: right">-《在细雨中呐喊》余华</div></div><br><div style="text-align: left"><h6 id="2023-07-11-02-01-夏-🌂"><a href="#2023-07-11-02-01-夏-🌂" class="headerlink" title="2023-07-11  02:01  夏 🌂"></a>2023-07-11  02:01  夏 🌂</h6></div><div class="circle-black"><center>我忘明月很久，明月始终望我</center><br><center>明月啊，为什么甘愿等着我</center><br><center>明月啊，我应不是特殊的那个</center><br><center>愿温柔化为衣裳，穿戴于你</center><br><center>此刻，我唯一的全部</center><br><div style="text-align:right">nino 《像明月一样温柔》</div></div><br><div style="text-align: left"><h6 id="2023-06-17-16-11-夏-🌧️"><a href="#2023-06-17-16-11-夏-🌧️" class="headerlink" title="2023-06-17  16:11  夏 🌧️"></a>2023-06-17  16:11  夏 🌧️</h6></div><div class="circle-blue">坐标已经是上海。很多事发生的都很自然。<p>除了楼下没有一家酒吧，其他都还算知足。</p><p>work-life-balance | hard-working 也都能接受。</p><p>似乎也需要花一点时间适应新的生活节奏。🍺</p></div><br><div style="text-align: left"><h6 id="2023-06-01-02-15-夏-💨"><a href="#2023-06-01-02-15-夏-💨" class="headerlink" title="2023-06-01 02:15  夏 💨"></a>2023-06-01 02:15  夏 💨</h6></div><div class="circle-black">最近因为A4新认识的朋友，给我的评价是：你的生活很惬意。让我想起了本科时候学姐给我的圣诞卡片：我觉得你的生活很惬意，很好，很羡慕。<p>事实上我对时间既敏感又散漫。<br>“时间是不是过得太快了些。已经六月了。”<br>总觉得太多事等着我去做。总觉得很多事做的还不够好。</p><p>还是来一点小结吧：前几个月该做的事，做的七七八八。就差临门一脚了。所以A4就暂停维护一个月。得先专注更为重要的事。</p><p>手持无事牌，祝自己好运。</p></div><br><div style="text-align: left"><h6 id="2023-04-21-11-56-春-🧥"><a href="#2023-04-21-11-56-春-🧥" class="headerlink" title="2023-04-21 11:56  春 🧥"></a>2023-04-21 11:56  春 🧥</h6></div><div class="circle-blue"><p>  原来昨晚上我的主题就被官方收录了。没有什么感觉，就是有些后悔提交的主题页面截图，有点丑哈哈。</p><p>又开始期待谁会是第一个使用的陌生人呢。</p><p>月光奏鸣曲第一乐章-[德]贝多芬</p><p><em>Piano Sonata No.14 in C-sharp minor Op.27 No.2: I. Adagio sostenuto Moonlight</em></p></div><br><div style="text-align: left"><h6 id="2023-04-18-19-51-春-🌧️"><a href="#2023-04-18-19-51-春-🌧️" class="headerlink" title="2023-04-18 19:51  春 🌧️"></a>2023-04-18 19:51  春 🌧️</h6></div><div class="circle-orange"><p>终于，通宵了四天。开源博客主题的基本功能都完善了，v1.6.0就作为第一个正式稳定版。之后的更新就从v1.6.1这样的小更新了，当然无非是一些剩下样式的调整，以及再添加新的特色东西。</p><p>在官方收录之前，就不再花费太多时间到hexo-theme-A4的代码上了。顶多写写帮助文档。</p><p>该去干点正事了。哈哈。</p><p>刚好spotify推到了🎵卡农-钢琴🎹小提琴🎻版本🎵。我的心情很复杂。但是很舒坦。期待一些东西。仍在期待。</p></div><br><div style="text-align: left"><h6 id="2023-04-17-00-13-春-🔥"><a href="#2023-04-17-00-13-春-🔥" class="headerlink" title="2023-04-17 00:13  春 🔥"></a>2023-04-17 00:13  春 🔥</h6></div><div class="circle-blue"><p>最近开始听钢琴曲，缘由是莫名听不下去流行歌曲了。听来听去，有vocal的歌曲好像除了乐队还稍微打动我，其他solo歌手的歌曲越听越心烦。</p><p>突然就想到要不听一听钢琴曲吧，开始听贝多芬、莫扎特、理查德.克莱德曼。真好听呀。</p><p>最近特别喜欢的钢琴曲：水边的阿狄丽娜、梦中的婚礼。</p><p>简单听了一下各个名师的风格，贝多芬的伤感、莫扎特的欢乐、克莱德曼的感情，深入了我的心。</p></div><br><div style="text-align: left"><h6 id="2023-04-16-23-27-春-🔥"><a href="#2023-04-16-23-27-春-🔥" class="headerlink" title="2023-04-16 23:27 春 🔥"></a>2023-04-16 23:27 春 🔥</h6></div><div class="circle-red"><p>折腾了太多的博客。</p><p>本科时候使用java实现了人生第一个博客网站，设计过程中能感受到自己是有审美的。当然回过头来看，界面依然还算好看，但是还是太花哨了些。写下这几个字的时候，那个4年前就已不再更新的博客源码已经获得了143star。</p><p>中途去玩过ghost，还是需要自己买服务器，弄一个数据库存储，很麻烦。</p><p>都忘了怎么发现了hexo静态博客的，太省心，正合我意。用了差不多一年多别人的主题，这一周，就好像有谁催促着我，通宵了三天，我发布了自己的hexo主题hexo-theme-A4。</p><p>我想，hexo-theme-A4应该是我人生中关于搭建博客的归宿。后续将会融入更多自己的设计。</p><p>我相信有一天这款主题的star数能超过我人生中那第一个博客。</p><p>我只是好奇那一天是哪一天呢？</p><p>接下来的人生也想要好好写点真诚的东西。</p></div></div>]]></content:encoded>
      
      
      
      
      <comments>https://www.ninojay.top/fragments/2023/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>流水账-歌曲对我的影响</title>
      <link>https://www.ninojay.top/2023/songs-in-my-memory/</link>
      <guid>https://www.ninojay.top/2023/songs-in-my-memory/</guid>
      <pubDate>Thu, 23 Mar 2023 05:52:52 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>关于流行歌曲最初的记忆，是只有几岁的我，父母深夜在店里播放购买的ktv唱机，灯球闪烁，陈奕迅的十年，老鼠爱大米音乐随之响起。</p><p>我的哥哥在我小学阶段，有一个oppo的MP3，他在MP3里分了星期一到星期天7个文件夹。也就是说，今天是星期几他就会听星期几文件夹里的歌曲。这个MP3，给我带来了孤独患者，说谎，晴天，以父之名，回到过去，还有记不起名字的英文歌。我记得他把孤独患者拼接了多次，以至于后来我上网听孤独患者唱完一遍就结束还感到奇怪。我记得睡前边听MP3边入睡，以父之名前奏一响，我就觉得害怕，恐怖。</p><p>后来我有了自己的MP3，学会在网络上下载想听的音乐，和小学同学互相交换歌单。张杰，周杰伦，陈奕迅。充斥着小学。初中阶段，更多和女生的接触，林宥嘉，王菲，陈奕迅，这些抒情歌，苦情歌，细腻情感迸发，残酷月光，爱情转移，执迷不悟,刺激着哺育着我幼小心灵。跟着同学去了ktv，听到大家都在唱港台流行歌，最佳损友，遥远的她，月半小夜曲，情歌王。真是奇怪啊，为什么那时候每次去KTV，一群初中生都会唱这些粤语歌呢。从那时候起，我发现林宥嘉的残酷月光非常适合我唱.今年2023年过年后，约了以前总是一起唱歌的初中同学去ktv，我再次唱起残酷月光，他说：“都想起来了”。听到他唱起许嵩，我说：”回到了过去”。</p><p>高中阶段，歌曲上的丰富，得益于虾米这个APP，还有和女生交换歌单。田馥甄、朴树、薛之谦、李荣浩、赵雷，许巍、周杰伦都充斥着我上下学的路途，以及深夜陪伴我书写。那个女生用纸张给我写的很多她喜欢的英文歌曲，我都很难想起歌曲的名称了，很惭愧，不过前奏一响，我就能忆起当时的感受，当时的她。</p><p>上大学，听歌就变得私密许多，与人交流最近听什么歌的契机也少了很多很多。我开始听华晨宇，西楼，rap，乐队的歌曲。印象最为深刻的是那一年的夏天，乐队的夏天这档节目，我认识了新裤子、旅行团、九连真人，看到海龟先生才知道高中一直听的“男孩别哭”是他们的作品。乐队的夏天第二季，五条人的“阿珍与阿强”就像海龟先生，在我的眼前又一次对应起来。还有一些越听越上头的乐队：重塑雕像的权利、福禄寿、达闻西、康姆士、后海大鲨鱼。</p><p><strong>我从这时候觉得，乐队的歌曲比我之前听的所有流行歌曲，更富有生命力，更富有真挚的感情。</strong></p><hr><p>这两年反复听，反复被感动的乐队歌曲：</p><ul><li>花火-新裤子</li><li>没有理想的人不开心-新裤子</li><li>生命因你而火热-新裤子</li><li>北风-九连真人</li><li>晚上好，春天姑娘-五条人</li><li>LastDance-五条人</li><li>心要野-后海大鲨鱼</li><li>红色的歌-旅行团</li><li>玉珍-福禄寿</li><li>Sounds For Celebration-重塑雕像的权利</li></ul><hr><p>歌曲对我的意义：它们是我记忆和情感的容器。每听一次，我就把当下的感受存放在这一首首歌曲里。未来的某一天，那一首歌响起，我瞬间就能想起当时发生的一件件事。开心也好，伤心也罢。情绪，就被音乐誊抄在我耳朵里的某个角落，好像在我耳朵里长了一个记忆痒包，听到对应的音乐，不是让我挠，而是刺激我想起一些事。</p><p>音乐不需要解释，不需要翻译。</p><p>听。</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/">情绪</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      <category domain="https://www.ninojay.top/tags/%E6%AD%8C%E6%9B%B2/">歌曲</category>
      
      
      <comments>https://www.ninojay.top/2023/songs-in-my-memory/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>关于心中的美：《金阁寺》-（日）三岛由纪夫</title>
      <link>https://www.ninojay.top/2023/beauity-in-heart/</link>
      <guid>https://www.ninojay.top/2023/beauity-in-heart/</guid>
      <pubDate>Wed, 22 Mar 2023 06:15:35 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><blockquote><p>三岛由纪夫，芥川龙之介，川端康成，夏目漱石，大江健三郎。这些人是怎么进入我的世界的呢？三岛由纪夫的《金阁寺》又是怎么巧妙选择进入快满24岁的我的世界呢？号称三岛由纪夫的至高之作，《金阁寺》又会对我产生怎样的影响呢？</p></blockquote><p>逛书店的时候，看到“金阁寺”三个字，就被吸引了，抽出书架，腰封上的描述如下：<code>不被人理解就是我唯一的骄傲。孤独日渐膨胀起来，就像一头猪。</code>看来这本书应该很对我味啊。</p><p>读完过后，对<code>阅读过程</code>的感想如下：三岛由纪夫对景物的描写细致，故事情节上来说不够<code>世俗上的</code>吸引人有阅读欲望，但是伏笔的运用也能使人有“啊，之前提到过”这般巧妙。</p><p>我相信，以前的我是不会写下面的感受的，但偏偏三岛由纪夫用这些略显枯燥的文字还是让我有了一些共鸣。</p><h3 id="金阁寺"><a href="#金阁寺" class="headerlink" title="金阁寺"></a>金阁寺</h3><p>主人公是一名结巴，这里的结巴并不特指结巴，而是身体从小有缺陷的一类人。但偏偏在小时候心中被贯以了“最美”的事物，也即是书中主人公被父母灌输了“世上再无比金阁更美之物”。身体上的残疾让主人公心生敏感，难以真正融入人群，心理上对美的至高想象让主人公有了优越之情，他明白从小自己对美的追求是明确的，也即是那金阁寺的美超越了本身的美，存在于主人公的敏感之心中。</p><p>世事变迁，或者命运使然，他终于是来到了日思梦想的金阁寺面前，他疑惑不已，气愤不已。金阁寺的真实面目就像一面镜子，破碎在了自己的心中，这原来仅仅是一座久经风霜，还未被摧毁的三层建筑。</p><p>可慢慢的，经过自己的思虑，自我辩驳，日复一日和金阁寺的贴身相处，又明白了金阁寺还是美的，真实的美甚至替代了想像中的美，寺里的一砖一瓦都嵌入了自己的眼睛，他又自洽了，他又找到了心至上之美的概念。</p><p>正是自己已然有了美的实体，看待世间万物，都有了一个标尺。寺里的住持师父让他觉得伪善，世间各人都不理解他心中的纯洁，大家都说他是一个怪人，经常痴痴地看着金阁寺。</p><p>他自己也陷入了一个怪圈，接近不了女人。总是在该进一步时，心中的金阁寺横档在自己的眼前，他只能退缩，接着察觉女人的鄙夷，察觉自己的懦弱。跑回金阁寺，责怪金阁寺的美，随后还是接受金阁寺的美。又想学会像其他人，甚至是自己的残疾朋友一样活的自在。</p><p>一件件的巧遇事情发生在他的眼前，还是因为金阁寺的存在，注定怀揣纯洁之心的他会遇到这一件件的世事呢？师父终于责骂了他：“混账东西，竟敢跟踪我”，“本来我对你寄予厚望，如今继承我衣钵之事，你想都不要想。”他却不觉得难过，甚至期待了很久，他还要更进一步，做好了被逐出寺的准备。</p><p>就在这一刻，他想明白了，他要烧掉金阁寺。烧掉这心中的美。拿着师父给的学费钱，去风花雪月。妓女笑他，根本不相信过几天会在报纸上看到他。他明白，这些妓女不过是活在自己的世界，外面发生什么都跟她们没有关系，她们实际上不在乎。</p><p>终于在那一天晚上，将自己房间易燃之物，搬到金阁寺。非易燃之物，拉到湖边沉入水底。像往常任何时刻没人在乎一样，他没人在乎一般进入提前处理好的暗门，点燃火柴。看着火焰飞升，他想上第三层，不顾一切冲撞被锁好的门。</p><p>随后跑出寺庙，望着金阁寺方向飘起的浓烟，看着浑身是烧伤刮伤的身体，月光下，他说：”我决定活下去。“</p><h3 id="之感"><a href="#之感" class="headerlink" title="之感"></a>之感</h3><p>这本书，适合身体残疾，还心怀美好的人看。我特别喜欢最后，主人公还是去烧了金阁寺，我很担心他最后不愿意烧这一行为，在他来到金阁寺内部，准备落实烧这一行为的时候说：“好像烧不烧已经不重要了，我的认知已经改变了，金阁寺对我来说已经在我心中被烧掉了。”</p><p>我心急如焚，如果他不去做烧这一行为了，我能够理解，但是我会感觉一种悲伤，我会觉得他还是脆弱的。但是幸好，他还是点燃了火柴，前两根火柴都熄灭了，第三根火柴还是被他点燃了。</p><p>我更喜欢他点燃金阁寺，跑出金阁寺，最后浑身是伤，说“决定要活下去。”有一种通透的感觉也同时传达到了我心里。</p><p>活在当下的世界，需要适应当下世界的规则。烧掉金阁寺，也即是烧掉心中的美好，融入真实的世界。不烧掉金阁寺，我们这样的人，该活的多么痛苦啊。</p><blockquote><p>我决定活下去。</p></blockquote></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E5%A3%B0%E5%85%89/">声光</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E9%98%85%E8%AF%BB/">阅读</category>
      
      <category domain="https://www.ninojay.top/tags/%E5%B0%8F%E8%AF%B4/">小说</category>
      
      
      <comments>https://www.ninojay.top/2023/beauity-in-heart/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>断舍离后的平白记忆</title>
      <link>https://www.ninojay.top/2023/letting-go-of-attachments/</link>
      <guid>https://www.ninojay.top/2023/letting-go-of-attachments/</guid>
      <pubDate>Sat, 18 Mar 2023 16:13:11 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h2 id="衣服裤子"><a href="#衣服裤子" class="headerlink" title="衣服裤子"></a>衣服裤子</h2><p>一行李的衣服，被老行李箱携带着拿上楼。打开记忆里的老行李箱，才想起有过这么些衣服。他感慨：前段时间已经偷偷扔了些，这一看原来自己还有这么多衣服。前两年是无脑买了多少啊。</p><p>慢慢地整理，翻出只穿过一两次的西装，帅气的外套，可爱的睡衣，衬衣。短裤和长裤的出现让他皱起了眉。</p><p>“是不是又该断舍离了呢？”<br>“我给你讲，不要随便就扔了，还有些亲戚没有钱买衣服穿呢，你把这些留着，我给他们带回去。”</p><p>他听完不以为意。<br>那条裤子，把所有记忆塞进他当下的脑子里。不无奈，不轻松，不念旧，不向往。<br>说服自己，还是只能不以为意。</p><h2 id="纸与字"><a href="#纸与字" class="headerlink" title="纸与字"></a>纸与字</h2><p>一开始就看到了。翻开箱子的一瞬间。自己骗自己已经都忘了，所以有充分的理由，用怀疑的双手翻过两张明信片，一张纸条。</p><p>其中一张明信片，果不其然，让他释怀地笑出来。另一张明信片和那一张纸条，停顿了这个人的手，同一时期的记忆像被谁点燃的烟花，从一端，小小的火花冲到他的心口另一端，炸裂。什么也做不了，他。只能细细读着上面的字，慢慢摸过纸张上的划痕。呼出一口安慰，吸入一口难过，屏住一会儿呼吸，再反过来，呼出一口难过，吸入一口安慰。</p><p>“哈哈，总归是过来了。”心里的自己说给过去的自己。</p><p>把那张纸条藏起来，拿着那张明信片来到另一个房间。</p><p>“你们看看，她当时多么可爱。”<br>“哈哈哈，是呀，是呀。”<br>“哦！哎呀。”<br>“我看看，嗯。我眼睛这样看不清楚啦。”</p><h2 id="都会好吗"><a href="#都会好吗" class="headerlink" title="都会好吗"></a>都会好吗</h2><p>都会好的，It’s gonna be okay. </p><p>真的吗？时间又真的能洗涤一切吗？</p><p>他不相信。</p><p>他只是明白了，那些事也有自己的脆弱缘由，如今只能必须继续向前。当下的向前却和之前的向前不同，释怀。</p><p>他释怀地想：<strong>“Nothing changes.”</strong></p><p>前进吧。 <strong>“Keep moving on.”</strong></p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/">情绪</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      
      <comments>https://www.ninojay.top/2023/letting-go-of-attachments/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>《被讨厌的勇气》-（日）岸见一郎，古贺史健</title>
      <link>https://www.ninojay.top/2023/the-Courage-to-be-hated/</link>
      <guid>https://www.ninojay.top/2023/the-Courage-to-be-hated/</guid>
      <pubDate>Thu, 09 Mar 2023 04:40:47 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>《被讨厌的勇气》从高中时期就听到过，一直以来有一个偏见，觉得这类书名就极具商业吸引力的书，不用去购买。最大的作用就是书名那几个字，一旦被大众所看见，所接受，就完成了这本书的使命。书里面的内容多半是车轱辘话：无非讨厌的基本原理，一直在意被讨厌会导致怎样的心理，不怕被讨厌的人生又会如何…</p><p>等我真正打开这本书过后，我才意识到自己的偏见实属傲慢。</p><blockquote><p>同样的感受也体现在《断舍离》的阅读过程上。</p></blockquote><p>书里的内容和我所预想的完全不同，是一本关于阿德勒个体心理学的对话式辩论书籍。按照作者的描述，他一开始就想像柏拉图用对话式辩论传播苏格拉底的智慧一般，传播阿德勒的个体心理学。从而这本书的辩论双方是一个还未经历太多世事充满迷茫的年轻人和一位长者的对话。</p><p>年轻人带着自己的疑惑不断发问长者，对长者的建议提出辩驳，再一一被长者折服。在此过程中，年轻人提出的那些问题确确实实让我，我也相信如推荐序写的一般，会让很多人脸红，感受到被批评。每个人都能从这迷茫的年轻人身上看到自己的影子。长者的解决种种问题的核心办法，即是阿德勒个体心理学。</p><h3 id="目的论"><a href="#目的论" class="headerlink" title="目的论"></a>目的论</h3><blockquote><p>阿尔弗雷德·阿德勒，奥地利精神病学家。和弗洛伊德，荣格并称心理学上的三大巨头。</p></blockquote><p>在2023过年以前，我都还是一个习惯性主动让自己不快乐的人，我会将自己的不快乐合理化，脑子里面回想从小到大的种种不愉快的经历，随后告诉其他人，我现在这么不快乐是应该的，因为我过去如何如何成长而来。按照《被讨厌的勇气》的说法，以上我的描述即是弗洛伊德的决定论，决定论告诉人们，是过去发生了什么导致人现在的心理。阿德勒却提出了目的论，他严肃的提出自己的观点：<strong>过去决定不了什么，未来一切都可以改变，当下则是自己有了一些目的，才会有当下的种种情绪，种种选择</strong>。也就是说，阿德勒认为，我现在的不快乐是我自身的选择，是我本身为了达到某个目的，选择让自己不快乐。这份不快乐能够为我带来什么想要的东西，比方说周围人的特殊关心，缺失的爱，逃避真正想做的事。这个时候把自己的悲伤调取出来，就合理化了当下自己的行为，心安理得过的不愉快。</p><p>事实上，我最近几年一直都在反思自己的悲伤，也和许多确诊抑郁症的同学深度交流过，我觉得自身还是比她们更有力量一些。所以毫不夸张的说，阿德勒所描述的个体心理学非常对我的胃口，我甚至觉得他理论化的东西，我之前就已经经历过了同样的思考。我一直都相信自己有勇气改变，每个人同样都可以。</p><p>再来一次总结，弗洛伊德的决定论并非毫无意义，能够解释一些现象，但过度的强调决定论，容易给人带来悲观的态度，大家会认为一切都无法改变，当下的悲惨遭遇都是应该的。而阿德勒，在我心中最大的作用，就是告诉人们，我们身为人类，一切可以改变的！过去决定不了任何事，都是我们为了达到消极的目的主动选择的，所以直面真正的问题！</p><p>也就是说，阿德勒给我，也一定能给很多人活下去的正向力量。</p><h3 id="课题分离"><a href="#课题分离" class="headerlink" title="课题分离"></a>课题分离</h3><p>书中还提到“课题分离”这一方法论。很多抑郁的人，在我看来大概率是一个善良的人。过度的善良让这类人接受不了人际交往的真实残酷。正常的人都心安理得的自私，过度善良的人只能接受现实，学习变得自私一些，才能不陷入这类苦恼。“课题分离”即是实践“学会变得自私”的方法论。在我们面对任何一件与人际交往相关的事，苦恼不知道怎么选择去做的时候，那么就先思考，这是谁的课题。如果是对方的课题，就心安理得，甚至在其他人眼中认为是“狠心”的放下。如果是自己的课题，那么就不要抱怨，去全力付出。</p><blockquote><p>人生的三大课题：交友课题、工作课题以及爱的课题”</p></blockquote><p>这里本该举一些例子，思考过后还是算了。课题的分离提供的是一种方法论，我非常认可，最近也一直在实践。实践的结果是，不过度地在意人际交往的许多事。正确的理性向任何人提出自己身份发展来的问题。不惧后果，因为我提出问题，明确拒绝，发起批评，与人争吵，是我的课题。那么对方听到这个问题，遇到这份拒绝，经历这起批评，和我产生争吵后的处理，都是对方的课题。</p><p>说实话，这样活起来，轻松很多。</p><h3 id="结尾"><a href="#结尾" class="headerlink" title="结尾"></a>结尾</h3><p>以上即是《被讨厌的勇气》带给我印象最深刻的点。除此之外，该书还讲到梦的作用，自卑感和自卑情结等等。这些部分在我看这本书之前就已经做过了相应的思考。</p><p>总而言之，这书作为阿德勒个体心理学的入门非常带劲。读起来十分畅快。为我正在读的阿德勒《自卑与超越》提供了便利。</p><blockquote><p>Ps ：机缘巧合，在我本科看过卡耐基《人性的弱点》，上个月看过史蒂芬·柯维《高效能人士的七个习惯》后，《被讨厌的勇气》开篇就提到了以上两本书。这种（书里面提到我看过的书）感受非常爽。</p></blockquote><p>2023年2月28日，阅读完《被讨厌的勇气》。</p><p><a href="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/postImages/beitaoyandeyongqi.jpg" class="gallery-item" style="box-shadow: none;"> <img src="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/postImages/beitaoyandeyongqi.jpg"></a></p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E5%A3%B0%E5%85%89/">声光</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E9%98%85%E8%AF%BB/">阅读</category>
      
      <category domain="https://www.ninojay.top/tags/%E5%BF%83%E7%90%86%E5%AD%A6/">心理学</category>
      
      
      <comments>https://www.ninojay.top/2023/the-Courage-to-be-hated/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>演算法</title>
      <link>https://www.ninojay.top/2023/song-algorith/</link>
      <guid>https://www.ninojay.top/2023/song-algorith/</guid>
      <pubDate>Tue, 28 Feb 2023 12:50:41 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><blockquote><p>想要逃离演算法~想要拒绝演算法～</p></blockquote><p>他摆弄着桌上的一张纸，揉成一团再展开，纸上褶皱的浮现使得脑子里闪过一个念头，顺手拿起另一张纸，揉成一团，放在前一张纸的中心，将底下那张纸抽出一半覆盖在上面，双手再捏着纸的对角靠拢。他做了一个纸饺子。</p><p>“我不知道该说什么话了。”</p><p>他听着，心里面一阵奇怪的绞痛。皱眉再舒展，舒展再皱眉。</p><p>“我只能当一个哑巴。”</p><p>他的躯壳继续听着，大脑感受到心脏还像过去一样绞痛，心脏那不断循环传过去的血液告诉大脑：还是做不到啊，还是做不到啊。</p><p>大脑平静的接受着心脏的起伏，收入这连绵不绝的低语。趁着间隙用同样的血液，告诉心脏：我们这段时间一起相处的时候，在做些什么。心灵的流动不再是通往死谭已经成为我们的共识了呀。心脏你并不是跳着从前的节奏，是你选择把当下的节奏当作往日节奏的序曲。</p><p>你同意的吧。你痛苦的吧。</p><p>我们还是试着跳当下新学到的舞蹈吧。</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/">情绪</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      
      <comments>https://www.ninojay.top/2023/song-algorith/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>又是一年情人节</title>
      <link>https://www.ninojay.top/2023/another-valentine/</link>
      <guid>https://www.ninojay.top/2023/another-valentine/</guid>
      <pubDate>Tue, 14 Feb 2023 11:48:14 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>此刻的我坐在2月10日开业的自习室。开业以来的每天我都来到了这里，至少度过一天的三分之一。我是这家店第一个办月卡的顾客。</p><p>这里每天的顾客不超过5个人。</p><p>晚饭后，经过一堆盆栽，盆栽前面多了一个木板和纸箱，纸箱里面装着包好的玫瑰花，或一株，或一丛。木板上写着“玫瑰15一支。”</p><p>我想给自己买一支。</p><p>我想起一个女生给男生送去了花，她说：“你知道我为什么给你送花吗，因为我听说有的男孩子一辈子都没有收到过花。”</p><p>我想起来，我给女生送过花，那个女生我已经不再联系。</p><p>是啊，又是一年情人节。</p><p>情不自禁打开文本软件，写下一点当下的感受。</p><hr><p>过去的5分钟，我读完中岛敦《山月记》的时刻。最后一篇叫做《光·风·梦》。拖拖沓沓了三天才看完。前两天可以说并没有读出让我畅快的心境，只想着快点看完之后去看《情人》。但是今天，我看得很入迷。一则则日记记述的心情和我产生了共鸣，读着文字联想到自己相同的境遇，回忆起了契合书本上书写的心境。踏踏实实地看到了最后一个字。读完了这篇小说，读完了这本书。</p><blockquote><p>《山月记》</p><p>我深怕自己本非美玉，故而不敢加以刻苦琢磨，却又半信自己是块美玉，故而不肯庸庸碌碌，与瓦砾为伍。</p><p>其实，任何人都是驯兽师，而那野兽，无非就是各人的性情而已。</p></blockquote><p>最为打动我的还是第一篇故事《山月记》，以上的摘抄即说明了这篇故事的中心。看到主人公变化为一只虎时，我才想起来前年就已经在一则小册子看过这则故事了。</p><p>再看一遍，和第一次看完后的“不以为意”不同，我感受到了人生的无力感，平静的伤感跃然我心，这本书的每一篇故事我看完都有相同的感受，好像每一篇都在骂我，骂我想法过多，骂我自以为是，骂我虚度光阴，骂我随波逐流…</p><p>我写不出来此刻心中所想。</p><p>It’s gonna be okay.</p><p>It’s ok to  not  be ok.</p><p>语法有对吗？无所谓了。能明白就行。</p><p>我至今仍讨厌节日。</p><p>但我觉得就快要像大家一样，喜欢上节日了。</p><p>我现在，心上，还有可以控制的伤感。</p><p>加油。</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/">情绪</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      
      <comments>https://www.ninojay.top/2023/another-valentine/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>摘抄《不同颜色的悲伤》-（日）若松英辅</title>
      <link>https://www.ninojay.top/2022/different-colors-of-sadness/</link>
      <guid>https://www.ninojay.top/2022/different-colors-of-sadness/</guid>
      <pubDate>Tue, 31 Jan 2023 06:36:40 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h1 id="不同颜色的悲伤"><a href="#不同颜色的悲伤" class="headerlink" title="不同颜色的悲伤"></a>不同颜色的悲伤</h1><p>那时的我，每天满脑子想的都是自己到底能做什么，而几乎忘记思考有哪些是自己必须完成的。</p><p>祈祷又是什么呢，我认为，它恰如谛听某人内心的声音。</p><blockquote><p><em>谛听</em>，是汉语词语，拼音是dì tīng，意思是注意地听，仔细听</p></blockquote><p>当时的我，既不心怀慈悲，对于他人的辛劳也不懂得体恤，至于可称之为自信的东西，我更是丝毫感受不到。别说信任他人了，我甚至连信任自己都做不到。</p><p><strong>人生从未向我们索求任何答案，却始终寻求着我们真挚的回应。</strong></p><p>那些能写成文字的语言，往往不足以描述人生。</p><p>当全身充斥着无法提炼为言语的倾诉欲，我们与言语的关系才会变得更加深邃密切，不是吗。</p><blockquote><p>无法用言语倾诉，所以反而离言语越近</p></blockquote><p>真正悲伤的人，眼泪只会在心里翻滚。</p><p>总是这样的，只有将自己置于悲伤之中，仁爱之心才会闪闪发光，那里栖居着一些美好的情绪，并且除却“美”，无法用别的词汇为它们命名。</p><p>再背负着各自的悲伤步履维艰，身体里始终寄宿着勇者的灵魂，关于这些，一味忌讳并回避悲伤的人永远无法察觉。</p><p>正因为人世间不存在完全相同的两样东西，迥异的两份悲伤才会彼此碰撞，发出回响，产生共振效应，不是吗？</p><hr><p><strong>若是一味哀叹，悲伤则变得漫无尽头。</strong></p><p>悲伤并非是与别离相伴共生的现象，而是一种宣告，让我们感到冥冥之中有逝者造访。</p><p>即便悲伤近在咫尺，也要承受别离，继续生活。</p><p>如果你正感受着邂逅的喜悦，请更加慈悲地看待每一段相遇，继而让自己鼓起勇气，向对方传达这份无需隐藏的心意。</p><p>不妨从简单的一句“遇见你真好”开始。</p><p>真正令人茅塞顿开的契机，其实一直隐藏在人心里，也注定会被不知从何处投来的光轻轻点亮。假若它们本来不存在，即便有光，也无法被照见。</p><p>理由不言而喻，没有一个人能与“我”的内心完全相连，而所有的邂逅也只发生在“我”的内心世界，它们是仅仅对自己才有意义的事情。</p><p>话虽如此，肉眼看不到的东西，并不代表不存在。那不可见之物就在那里，确然在那里，作为基石，结结实实支撑起了我们的人生。</p><p><strong>只有唯一一个方法。请你关注自己的内心。</strong></p><p>不能因为看不到便不相信。正因为肉眼看不到，才更应该相信。</p><p>“读”，是一种努力感知对方世界的行为。</p><p>这么一来，很容易忽略与预期不符的信息。这种对未来的预判，某种程度上干扰了自己接受远超乎想象的未知事物。</p><p>我们期待着的东西，并不见得会以预料中的姿态出现。</p><p>是一段又一段的邂逅创造了我们的人生，也许妨碍这些邂逅的，正是我们预设的种种意图和计划。</p><p>全都忘了自己也是芸芸众生中的一员。从他所处的位置，也许的确可以更清楚地看待事物，但是，太清晰了也不是好事。</p><p>帕斯卡尔的著作《思想录》引导我们去的地方，完全不是这样高高在上的地方。相反，帕斯卡尔带我们前往的是更低的地方，那里的空气更充足。</p><p>现代人每天忙于汲取各种信息，却忘记去读那些“无形之物”，只是一味贪求指导更多的东西。</p><p>肉眼无法看见空气，然而身体却能感知它存在。“读”的时候也一样。凭借眼睛和大脑是读不明白的，必须打开全部身心，感受文字背后的东西。</p><p>哲学之祖苏格拉底曾说，哲学的终极意义在于运用“无知之知”。意思是说，当你彻头彻尾意识到自我的无知时，才是回归到了哲学的原点。</p><p>倘若希望真正知晓某种事物，就必须在内心深处清理出一块“无知”的空间。</p><p>人一旦认为自己懂得了，思想就不会走得更深更远。</p><p>然而，他未曾断言，所谓“美德”具体是指什么。</p><p>爱这种行为能够让人持续感受到难以用言语描述的深意。当我们长久地爱着某人，会在与对方相濡以沫的时光中发现永恒的意义。</p><p>是的，我确然爱着这个人，可这个人究竟是个怎样的人呢？想描述出来，却千言万语不知从何说起。</p><p>工作就印现在来自人生的，意义深远的叩问里，而这种叩问永恒无解。</p><hr><p><strong>这里所有的“工作”，非指获取金钱的方式，而是指人凭借某种本能，与世界进行交流沟通的行为。这样看来，诸如抚育子女、看护病人、以及祈祷家人的平安等等，当然也是人生的重要工作。</strong></p><p>这种日子身心本来就足够难受，心底偏还五味杂成，涌上一些用悲伤和苦闷也没法确切形容的情绪，仿佛一朵花缓缓绽放。</p><p><strong>越是思念所爱的人，越是感觉别离令人悲伤痛苦。</strong>或许某个瞬间，她忽然明白，爱着某个人，也意味着在心底深处培育出悲伤。</p><p>然而，在哀叹中顽强生存下来的人，能够与他人建立一种深邃的关联。又有一些人，置身于难以逃避的人生试炼，他们的内心亦可跨越遥远时空，产生共振。</p><p>为了和他人建立起真正的关联，我们必须发自内心地接纳自己孤身一人的状态，哪怕只有一次。因为只有当“自己”感到孤身一人时，“他人”才会在那个瞬间无比重要。</p><p><strong>人啊，总是生活在日常之中，被各种各样的忙碌绞杀，常常忘记如何面对自己。</strong></p><p>然而，像这样认真回应来自人生的召唤，或许终将诞生些什们，我这样安慰自己。</p><p>或许，悲痛就是人生向我们发出的催促，似乎在说，是时候停下仓促的脚步，治愈千疮百孔的内心了。</p><p><strong>人时常只顾着关注自身的痛苦，而忽视了寻求慰藉的必要性。有的人甚至要在流泪的当下，才猛然意识到自己的悲伤。</strong></p><p>古人确信，以心所咏之歌，一定能够传达给已经化为一缕幽魂的逝者。</p><p>这里的和歌即挽歌，是生者对逝者的呼唤。后来，挽歌渐渐转型为寄托着怜爱之思的相闻歌。</p><p>哪怕只写一次也不要紧，待我们悉心完成这件事，再来嘲笑感叹自己的愚蠢也不迟。</p><p>恐惧这种情感，有时候会无比直接地剥夺人的思考能力。</p><p><strong>获取资讯能为现代人带来安心感，让人自己为懂得了许多，并能够借此掌控什么。然而，被讯息占据身心的人，其实早已停止思考。</strong>所谓思考，其实是一种积极的能动行为，是主动探究咨询背后隐藏的真实。</p><hr><p>所谓思考，是并无满足于肤浅的答案。</p><p>被剥夺了思考能力的人，也时常忽略掉内心的勇气。</p><p>勇气并非来自他人的施与，它早就深藏在千万人的心中。</p><p>不知第几次，他感到自己再也没有明日，可是人生偏偏告诉他，事实并非如此，绝望之境一定隐藏着若干希望。</p><p>在岩崎看来，幽暗不是指失去光明的物理状态，而是为光的显现所做的准备。</p><p>人的内在感受到勇气时，往往会发现无尽希望。</p><p>岩崎说道，匍匐在“绝望之中”，人才能找出真正称得上是希望的东西。</p><p>所谓勇气，并不是口头宣扬的概念，或许它是一种行为，是背负着酷烈试炼之人，竭尽一生为我们展现的生命本质。</p><p>这场重逢太过突兀，甚至让人来不及哭泣。</p><p>现在的我觉得，悲伤不再与绝望相伴共生。它仍是我们鼓足勇气、怀抱希望地生存下去的最好证明，只要带着这副名为“悲伤”的眼睛，便可一眼洞穿他人与自己的心底。</p><p>二十五年前，我在即将毕业时患上了神经衰弱。至今仍记得医生在诊断书上写下“神经衰弱症”几个字的场景。随后渐渐闭塞，躲进自己的天地。</p><p>所谓信仰，并非是停在脑海里的想法，而是尝试着去行动；不是在脑海里的道理，而是尝试着去迈步，你说对吗？</p><p>对于迥异的道路，人能够同时思考它们，却绝对无法同时穿行其中。</p><p>只在脑中想，不付诸行动，才会困于绝望的深渊。</p><p>隐秘的决心里潜藏着力量，能从根本改变人生。通常，人们称这种想法为“觉悟”。</p><p>源源不绝的光并非来自外部，而是投射自我们的内心。</p><p><strong>落泪这一生理现象，便是我们内心被触动的证明。</strong></p><hr><p>她将这种寄存在内心深处的言语命名为“内语”。</p><p>这一瞬间，我们体内的“言语”似乎正絮絮不止，告诉我们今天也要好好活下去。所谓觉悟，不就是在突如其来的时刻，与简单明了却又强韧的内语搭建起一场邂逅吗？</p><p>与逝者同生的他，认为历史并不等于过去的既定事实，而是切实存在的生生不息的现象。</p><p><strong>“即便未曾向世人展示一部作品，你也会因着你的人格与生活态度，成为众人眼中的卓越艺术家”</strong></p><p>当人迷失在“成功”这种幻象的时候，往往不会知道那一刻自己的态度看上去有多么高傲。</p><p>往往在失去之后，我们方能明白，信赖构成了自己生存于世的基石。我们对于自我的信赖，也是建立在与他人互相信赖的基础上。</p><p>这也是为何当我们遇见愿意对自己敞开心扉的人时，不仅可以与他建立一种全新的关系，还能与自我维持一段崭新的距离。</p><p>敞开心扉，不是说要我们一味迎合他人，这样做只会疏远与对方，甚至与自我的距离。</p><p>所谓敞开心扉，是指坦率承认自己的无能为力，容许它暴露在他人面前，并且殷切期望有朝一日能够改变它。</p><p><strong>真正的改变，不是自暴自弃，而是亲眼见证那些自己还未觉察的未知的可能，开花结果。</strong></p><p>先一步离开人世的那个人，一想到被留下之人的寂寞余生，不免感觉“即悲哀又怜惜”。</p><p>这世间存在一种不可思议的声响，唯独人类的耳朵无法听见。</p><p><strong>有时，置身于喧嚣的人群，我们反而感觉更佳孤独了，甚至连在嘴角浅浅浮起一抹微笑、与人聊天时，也总有孤独的情绪贯穿胸口。</strong></p><p><strong>努力与他人交谈，就能使我们摆脱孤立状态，然而当我们感觉孤独时，交谈的对象往往只有自己。</strong></p><hr><p>当感觉孤独时，便是我们最接近自身、最能感受自我的时刻。</p><p>资讯持有方，便能清楚切实地感受到单纯通过资讯去认识事物，有多么片面而又危险。</p><p>然而在这些人里，很少有人能让自己感觉，我想长久地与这个人共事。</p><p>迄今为止所遇到的大部分优秀人才，确实很擅长围绕客观表象展开研究，然而对隐藏在表象背后的、无法描述的事物毫不关心。</p><p>无论什么样的工作，从底部支撑着它的，都是那些无法简单描述的事物。对悲伤的体验便是其中之一。</p><p>有人曾这样写道，没有在悲伤中吃过面包的人，是无法洞悉人生的真相的。</p><p>相比巧妙地展示自己是个怎么样的人，这一生更为重要的，其实是察觉那些不可描述的过往经历，不是吗？</p><p>深入理解个体的种种经历，可以帮助我们与他人相联。河合确信不疑，是“悲伤”连接着人与人的内心。</p><p>原因在于，一旦想到有朝一日对方中将离去，我们便会感觉难以忍受的悲痛。</p><p><strong>相遇即意味着离别。</strong></p><p><strong>所谓“生”，即是向着湮灭之“死”不断前进；而相遇往往表示离别的齿轮已悄然启动。</strong></p><p>或许所谓“活着”，便是在自己的心上，培育一朵悲伤的花。</p><p>谢谢。不过还是算了吧。假如我把自己的一切真实感受都告诉你，听完这些，你一定会承受不住的。</p><p>无心并非是说真的遗失了我们的内心，而是指着这内心抵达了极端“空无”的状态。与此同时，它也是一个充满着创造力的“无”的世界。</p><p>感受着诗歌的刹那，便是内心抵达空无的瞬间，而诗歌正是“无心”涌动的具象化，除此之外，别无其他。</p><p><strong>在日常生活的方方面面，是色彩帮助我们表达自己的内心。</strong></p><p><strong>出席婚礼或葬礼，是所着服饰的色彩替我们传达了心中的情绪。</strong></p><hr><p>人们相信，自古以来色彩不仅是象征的手段，而且拥有守护灵魂的作用。</p><p>色彩是沉默的辞藻。</p><p>悲伤不是众人的忌讳，它已成为高声宣告生之意义的契机。而别离，隐喻着新一轮际遇的展开。</p><p>当一部作品的梗概开始广泛地出现在人们的视野，故事本身反而隐去了它原本真实的模样。</p><p>我们都有过这样的体会，对着那些轻易相信谣言的人，我们不会想要讲述隐藏在内心深处的情思或念想。</p><blockquote><p>《心》在成千上万的日本人里，我唯独想对你一人，讲述我的过去。</p></blockquote><p>真正的读者，能够在零散细碎的字里行间，在故事的深层，发现某些连作者本人都无法察觉的真意。</p><p>记忆深刻的人生刹那，让我们模糊地感知到此前从不了解，亦不明白的人、事、物的轮廓。</p><p>内心深处几近神圣的种种事件，在你即将开口的瞬间忽然失去了光彩。</p><p><strong>然而，某些时候，我的脑海里也会闪过一个念头，说不定在我身上发生的意外事件，其实是在提醒我，经历之后需要的不是倾诉，而是书写。</strong></p><p>与其说书写的一刻记录的并不是心中的念想，不如说，我们正通过书写，厘清究竟何为自己心中的念想。</p><p>相守和追思，亦是永不消灭的同一种情感，不过拥有两个不同的名字罢了。</p><p>想想就能理解，人这种生物，每时每刻都处在无常的变化，没有一个瞬间会是完全相同的自己。</p><p>所有脱离了表现意图，而后经过提纯被摘抄下来的词句，反而会照亮藏匿在摘抄者内心深处的事物。</p><p>希望阅读本书的读者诸君，不仅能透过书页看到组成一篇篇散文的辞藻，还能在今后，借由亲身书写，邂逅本应同自己相遇的文字。</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E5%A3%B0%E5%85%89/">声光</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E9%98%85%E8%AF%BB/">阅读</category>
      
      <category domain="https://www.ninojay.top/tags/%E6%91%98%E6%8A%84/">摘抄</category>
      
      <category domain="https://www.ninojay.top/tags/%E6%95%A3%E6%96%87/">散文</category>
      
      
      <comments>https://www.ninojay.top/2022/different-colors-of-sadness/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>摘抄《献给阿尔吉侬的花束》-（美）丹尼尔·凯斯</title>
      <link>https://www.ninojay.top/2022/A-Bouquet-for-Algernon/</link>
      <guid>https://www.ninojay.top/2022/A-Bouquet-for-Algernon/</guid>
      <pubDate>Sun, 29 Jan 2023 14:46:08 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>这本书让我想起大一躺在宿舍床上，拿着kindle读《尘埃落定》的自己。</p><h2 id="摘抄"><a href="#摘抄" class="headerlink" title="摘抄"></a>摘抄</h2><h3 id="进步报告─10"><a href="#进步报告─10" class="headerlink" title="进步报告─10"></a>进步报告─10</h3><p>“再过一分钟他就会想起来，如果他们不要催他就好了。为什么凡事都得这么匆忙呢？”</p><p>“那婊子也能算老师吗？”</p><h3 id="进步报告─11"><a href="#进步报告─11" class="headerlink" title="进步报告─11"></a>进步报告─11</h3><p>“但整体看起来并不搭调，仿佛艾丽斯无法决定自己是谁，以及要住在哪一个世界。”</p><p>“查理，不要逼我。我不知道，你已经不是我的智慧所能企及，再过几个月或甚至几星期，你就会变成另一个人。随着你的智慧更加成熟，我们可能会无法沟通。一旦你的情感也跟着成熟，你甚至不会想要我。我也必须为自己着想，查理。让我们等着瞧，要有耐心。”</p><p>“他做了什么？你听到了吗？我可以告诉你干了什么好事，高登先生。你带着你的想法和建议冒出来，让其他人看起来像群呆子。不过我可以告诉你，对我来说，仍然只是个白痴。我或许不懂你说的那些大话，或是书本上的名字，但我还是不比你差，甚至还更优秀。”</p><p>“书籍在这方面没有太大用处。”</p><p>“我还能听到她的嘶吼。但或许我已经被释放出来，也许那种恐惧与恶心不再是会让我沉溺的大海，而只是一摊在现在中倒映出过去的水池。我自由了吗？”</p><p>“他们总是找到借口开溜，害怕暴露他们知识范围的狭窄。”</p><p>“噢，天哪！不用费心用个好听、纯净的说法，最重要的是在参与这项实验之前，我拥有朋友和关心我的人。但现在，我担心……”<br>”</p><p>“但她轻抚着我的头发时，我知道她也像我需要她一样需要我。”</p><p>“如今再没有任何疑问，我恋爱了。”</p><br><p>“你全身都淋湿了，水都从你脸上流下来了。”<br>“天空在下雨，对花朵是件好事。”</p><br><p>“而从面包店被赶出来的恐惧却很茫然，是种我不了解的害怕。”</p><p>“她在和我讲道理，可是我不想听。“那天晚上，”我几乎呛到了，“你不知道我有多期待那次约会，我几近疯狂地想着应该有什么样的举动、该说什么话，我拚命想给你最好的印象，就怕说错话让你生气。”</p><p>“人要怎么做才能学会如何对待另一个人呢？男人要如何才能学会对待女人呢？“</p><p>“只要他们可以嘲笑我，在我面前显得聪明，一切都没问题，但现在我却让他们觉得自己比白痴还不如。我开始了解，我的惊人成长让他们萎缩，也突显出他们的低能。我背叛了他们，他们也因此痛恨我。”</p><p>“我是个人，在接受手术之前，就已经是个人，我必须去爱别人。”</p><p>“如果我能让自己的心思化成一片空白该有多好。”</p><p>“他们只是凡人，而且害怕别人发现这个事实。”</p><p>“很快就能把事情联结起来，然后你会发现，所有不同的学习世界都是相关的”</p><p>“你是被迫跳下救生艇的初学游泳者，因为失去脚下站立的安全木头而惊慌”</p><p>“我书读到一半时，会在书页中看到你的脸庞，但不是活在过去的模糊记忆，而是历历在目的鲜明影像。我轻触书页，你的脸庞消失了，我想把书撕掉，扔出去。”</p><p>“当我不知情时，我可以置身事外，也没有责任。但现在我知道了，我若保持沉默，我就和他一样有罪。</p><h3 id="进步报告─12"><a href="#进步报告─12" class="headerlink" title="进步报告─12"></a>进步报告─12</h3><p>“你哪会知道我的感受？你未免太随意看待别人的心思，”</p><p>“你又知道什么？他们当中最好的一个，也不外是自鸣得意地摆派头，利用我去衬托他们在平庸之中的优越与安全感。在白痴身边，每个人都会觉得自己很聪明。”</p><p>“我体会到自己对艾丽斯的感情，已在我的学习浪潮冲刷下逐渐倒退，从最初的崇拜消退成爱情、喜欢、感激以致某种责任感。”</p><h3 id="进步报告─13"><a href="#进步报告─13" class="headerlink" title="进步报告─13"></a>进步报告─13</h3><p>“他们不喜欢承认自己的无知”</p><p>“为什么每个人都说谎呢？我认识的人中，没有一个名实相副”</p><h3 id="进步报告─14"><a href="#进步报告─14" class="headerlink" title="进步报告─14"></a>进步报告─14</h3><p>“我能看出，如果诺尔玛现在是我们花园中盛开的花朵，我就是株杂草，必须躲在角落与暗处不被看见，才能够继续存活。”</p><p>“酒是做这件事最有效的东西，”她说，“如果你把注意力集中在胃窝中开始感受到的温热点，所有线条就会逐渐消失。”</p><p>“小孩或许不知道怎么喂自己，或是该吃什么，但他知道饿。”</p><p>“我看到他那迟钝空洞的微笑时，打从心里感到厌烦……男孩明亮的大眼虽然犹疑，却热切地想要取悦他人，我了解自己在他身上认出什么，他们正因他的迟钝而嘲笑他。”</p><p>“这些人都急于说服她相信我是个笨蛋，以致在我需要更多爱的时候，她却掉头愈行愈远”</p><h3 id="进步报告─15"><a href="#进步报告─15" class="headerlink" title="进步报告─15"></a>进步报告─15</h3><p>“我不只是一件事物，也是种存在方式，众多方式中的一种，了解自己选择的道路，以及那些我没踏上的道路，都能够协助我了解自己的转变。”</p><h3 id="进步报告─16"><a href="#进步报告─16" class="headerlink" title="进步报告─16"></a>进步报告─16</h3><p>“世上有太多问题未获解答，但究竟是因为人们知道得不够多？或是因为对创造的程序以及他们自己没有足够的信心，不愿放任整个心灵去运作所造成呢？”</p><p>“我把阿尔吉侬的尸体放在一个小金属容器里带回家，我不会让他们把它丢进焚化炉。这样做有些愚蠢和伤感，但昨天深夜我把它埋在后院。把一束野花放在坟上时，我哭了起来。”</p><p>“我一直在推迟拜访母亲的行程。我既要去看她，却又不太想去”</p><p>“我曾经梦想过这种时刻，此刻虽身历其境，但有什么用呢？我不能把自己即将面对的遭遇告诉她，而且，我能够接受这种出于虚假前提的亲情吗？如果我还是以前那个弱智、需要倚赖别人的查理，她势必会以不同方式和我说话。所以，我现在有什么权利可以要求呢？我的面具很快就会被撕掉。”</p><p>“谁能说我的光明就比你的黑暗美好呢？我有什么资格说呢？……”</p><p>“这不是去参观沃伦之家的好日子，天空灰扑扑的，还下着毛毛雨，或许也因为如此，才会让我想到这件事时，心情就低沉起来。但也可能是我在欺骗自己，让我真正感到不安的，是想到自己有一天可能被送去那里。”</p><p>“你受伤了……”她未必是为我难过，因为她对撕裂脚爪的狗，或在打斗中被抓伤的猫也会做同样的事，而不是因为我是她的查理。”</p><p>“不只是关于查理·高登，也关于人和生命， 而且我发现没有人真的关心查理·高登，不管他是个白痴或天才。所以，这有什么区别呢？”</p><p>“和我母亲有关，我现在比以往更想去了解她，想知道她是怎样的人，为什么她会有这样的行为。我一定不能恨她。”</p><p>“我舍不得离开工作中的每一刻，对每个想偷走我时间的人都不”</p><p>“她现在正重新经历那一幕。我无法开口或移动，觉得全身一阵恶心，肢体紧张僵直，耳中有许多声音鸣响，胃不停地纠结拉扯，好像要从体内撕裂开来。”</p><p>“我和查理不同，我没有结交朋友的能力，不懂为别人和他们的问题设想，我只对自己有兴趣。”</p><p>“我注意到她一直站在我左边，以便藏住脸上的红斑。”</p><p>“她用围裙擦脸，我伸手搂住她时，她在我肩上放声哭泣。这时，所有痛苦都已一扫而光，我很高兴跑了这一趟。”</p><p>“亲爱的教授，问题是你希望把一个人变聪明后，还可以继续将他关在笼子，必要时搬出来展示，为你博取荣耀。但我可是个人哪！”</p><p>“你跟我说说话呀，跟我说些事情，就像我还是小孩的时候一样，我要的只是这些。我不会伤害你，也不会恨你。但我必须了解自己，在还没太迟之前，好好认识我自己。你必须知道，除非我了解自己，否则不能成为一个完整的人，现在你是世上唯一能帮助我的人。让我进来，我们坐下好好聊聊。”</p><p>“她早已不是我记忆中被惯坏的小孩，她已经长大，变得亲切、体贴、重感情。”</p><p>“不要误解我的意思，”我说，“智慧是人类最伟大的恩赐之一，只是在追寻知识的过程中，对爱的追寻往往就被搁在一旁。这是我自己最近发现的结论。我可以把这个假设提供你参考：没有能力给予和接受爱情的智慧，会促成心智与道德上的崩溃，形成神经官能症，甚至精神病。而且我”</p><p>“我一点都不记得了。噢，查理，我对你真的那么坏吗？”</p><p>“我尽可能强忍着，但一走到街上，我就再也忍不住了。要记下这件事很难，但在走回停车处的路上，我”</p><p>“没有人必须在任何方面为发生的事受到责难。”</p><p>“有很多人愿意捐献金钱或物资，但很少人愿意奉献他们的时间与感情”</p><p>“我的手被敲破的玻璃割破流血，我一时不知道该怎么办，便把手插进口袋，免得血液沾到她刚刷洗过的地毯。”</p><p>“我过去几个月吸收的知识，此刻仿佛已结合在一起，把我提升到光明与理解的绝顶。这是美、爱与真的合一，是何等的欢愉”</p><p>“真的吗？我以为你再也不想见到我。”</p><p>“这对你的信念是一大挑战，因为你认为智商低于一百的人不值得被当人看待。尼姆教授，我相信你看我的时候，你的良心会感到不安。”</p><p>“你变得愤世嫉俗，”尼姆说，“你得到的机会对你没有太大意义，你的才华已经摧毁你对世界与世人的信心。”<br>“这不全是真的，”我轻声说，“但我学到光是智慧没有太大意义。在你的大学里，智能、教育与知识都是大家崇拜的偶像。而我现在知道，你们一直忽略了某件事：如果没有人性情感的调和，智慧与教育根本毫无价值。”</p><p>“最后，总算发出一点声音，却不是我想说的话（我原先计划要说些鼓舞、慰藉的话，准备三言两语就消除所有的过去与痛苦，并迅速掌控局面），但从我干裂的喉咙迸出来的话却只是：“妈……”</p><p>“大家都认为我这样的工作节奏形同自杀，但他们不了解的是，我正处于神智清明的美妙颠峰，是我从来不曾有过的体验”</p><p>“别人的想法永远最重要，外表要比她自己或家人更优先，而且认为是理所当然。虽然马特一再强调，别人对你的想法不是生活中唯一重要的事，但一点用也没有。诺尔玛必须穿得体面，房子里必须有高雅的家具，查理也必须留在家里，别人才不会知道他有什么不对劲。”</p><p>“我有自己的苦难要面对，想要阻止知识的流沙穿过我心中的沙漏消失，是不可能的事。”</p><p>“我是怎么啦？为何老是孤零零地活在世界上。”</p><p>“多么不可思议！比起其他人，他们的缺损这么多，智能障碍，又聋又哑，却仍热切地打磨他们的板凳。”</p><p>“时间现在具有另一个层次的意义……工作与全心投入追寻解答。周遭世界以及我的过去似乎变得遥远而扭曲，时间与空间就像经过拉扯、揉搓与扭动的太妃糖，已经完全变了样。唯一真实的事物，就只有实验大楼四楼的这些笼子、老鼠与实验仪器。”</p><p>“我只想看到她微笑，并知道我才是能让她快乐的人。在我的生命中，我第一次让她的嘴唇绽开笑容。”</p><p>“设想一切，但就是不把我当人看。你一再宣称我在接受实验前什么也不是，我知道为什么。因为如果我什么也不是，你就可以成为我的上帝和主人。你无时无刻憎恨我不知感恩，但信不信由你，我确实感激。然而，你为我做的事尽管美妙，你却没有权利可以像实验动物一样对待我。我现在是个独立的个人，但查理在走进实验室前，同样也是独立的个人。你看起来很惊讶！是的，突然间我们发现我一直是个人，即使以前也是”</p><p>“如果我能找出结果，只要能对已知的心智障碍增添一丝丝了解，能对和我一样的人带来帮助，我就会感到无比满足。无论我的下场如何，我对那些尚未出世生命的帮助，已等于让我活过千百次正常的人生。<br>这样就足够了。”</p><p>“也许我永远不会知道，但不论事实如何，我都不能因为罗丝保护诺尔玛而恨她，我必须了解她的观点。除非我能原谅她，否则我将一无所有。”</p><p>“我低头看自己，然后看到自己真正变成的模样。我觉得羞耻。”</p><p>“正常小孩长得太快，很快就不再需要你……走上自己的路……忘记一向是谁在爱他们、照顾他们。但这些孩子需要你全心付出，一辈子都需要你。”她又笑了起来，对自己的严肃感到尴尬。“这里的工作很辛苦，但很值得。”</p><h3 id="进步报告─17"><a href="#进步报告─17" class="headerlink" title="进步报告─17"></a>进步报告─17</h3><p>“我很高兴能够看到这些即使只是很短的时间。我很高兴我发现了所有关于我的家人和我的事。好像在我想起他们并且看过他们之前我并没有家人似的但现在我知到我有家人而且我和大家一样也是一个人。”</p><p>“没什么意思，”她耸耸肩，“只是……就像一首诗，我想看你。”<br>“动物园没开吗？”<br>“噢，别这样，查理。不要把我推开，我等你等得太久了，决定自己来找你。”</p><br><p>“等所有节目都结束后，我会对自己感到恶心，因为我只剩下很少的时间阅读、写作与思考，而且我应该很清楚，我不能拿这些以我身上的幼童为目标的废物，来毒害我的心灵，特别是我身上的幼儿已经要索回他的心灵。”</p><p>“不，你不了解，因为这没发生在你身上，除了我自己，没有人能够了解。我没有怪你。你有你的工作要做，有博士学位要拿，而且……喔，是的，别告诉我，我知道你主要是基”</p><p>“请告诉尼姆教受当别人朝笑他时皮气不要那么暴躁这样他就会有更多的朋友。如果你让别人朝笑你你就比叫容易有朋友。我要去的地方我将会有很多的朋友。”</p><p>“我也不后悔，但你已失去一些你以前的特质。你以前会微笑……”</p><p>进步报告─14</p><p>“我今天学到一些东西，就是必须停止像小孩一样不断为自己忧虑，不是担心过去就是挂虑未来。”</p><p>进步报告─13</p><p>“他期待能被视为新学习法则的发现者，心理学的爱因斯坦。然而，他却存有老师的恐惧，害怕被学生超越，虽是大师，却又担心门徒不信任他的工作（但我在任何实质意义上，却都不像伯特一样是尼姆的学生或门徒）。”</p><p>进步报告─12</p><p>“查理，我就像这样告诉自己，但每次我们见面，你告诉我一些新东西，然后很不耐烦地看着我的时候，我知道你是在嘲笑我。”</p><p>进步报告─10</p><p>“如果他们给他足够的时间，只要他们不要催他催得太急，他就会学起来。可是大家没有时间。”</p><p>进步报告─17</p><p>“这些我都很清楚，但当艾丽斯告诉我不要浪费时间时，我就会生气，要她少管闲事”</p><p>进步报告─14</p><p>“他无法了解，他会这样不是他的错……看在上帝分上，请对他放尊重点！他终究也是个人！”</p><p>进步报告─13</p><p>“他这种人我看多了，很了解在他们的傲慢与专断之中，其实混合了很大成分的恐惧与不安。”</p><p>进步报告─17</p><p>“我不会假装成另一回事，但在你去那里之前，我们也没有各自保持孤独的理由。”</p><p>进步报告─15</p><p>“许多心理学家赖以建立他们对人类智能、记忆与学习信仰的观念，都只是一厢情愿的想法。”</p><p>进步报告─14</p><p>“如果我能回到过去的记忆中，我会让她知道，她把我伤得多深。”</p><p>进步报告─12</p><p>“但伴随自由而来的，是种忧伤的感觉。”</p><p>”</p><p>进步报告─17</p><p>“还有：如果你有机会请放一些花在后院的阿尔吉侬坟上。”</p><p>进步报告─17</p><p>“她努力想忍住不哭，而我却想把她弄哭。“也许是因为这样，我才觉得学习是很重要的事。我认为这样能让别人喜欢我，我以为这样能让我拥有朋友。这很可笑，不是吗？”<br>“还有比拥有高智商更重要的事。”</p><p>进步报告─14</p><p>“我的意思是，查理·高登存在于过去，而过去才是真实的。你必须先拆掉旧房子，才可能在同一个地方盖出新的建筑，但旧查理是无法摧毁的，他一直存在”</p><p>进步报告─13</p><p>“然而，当我知道掌握自己命运的，并不是原先以为的知识巨人，而是些不知道所有答案的凡人，仍是相当吓人的事。”</p><p>进步报告─12</p><p>“但只要我谈起某些事，我可以看到你很不耐烦，仿佛那些事都很幼稚。我希望你的智慧愈来愈高，愿意协助你、和你分享……可是你现在却把我关在外面。”</p><p>进步报告─11</p><p>“走回头路是不可能的，范妮。我没做错任何事。我就像个天生的盲人获得重见光明的机会，这绝对不是罪恶。很快地，世界各地就会有千百万像我一样的人。这是科学的功劳，范妮。”</p><p>进步报告─11</p><p>“怎么做才对？讽刺的是，我所有的聪明才智也无法帮我解决这道难题。”</p><p>进步报告─10</p><p>“因为人们在我面前都会照常说话或做事，就好像当我不在场一样，他们根本不在乎我听到什么。”</p><p>进步报告─17</p><p>“我觉得我所以看电视，是为了可以不必思考，不用去想起面包店、我的母亲、父亲以及诺尔玛。我不要再想起过去。”</p><p>进步报告─14</p><p>“有着诚实与体贴情感的人，不会去占个天生没有手、脚或没有眼睛的人便宜，却会认为欺负一个弱智的人不算什么”</p><p>进步报告─13</p><p>“但你的发展很不平衡，你知道很多事，也看清很多事，但你没有发展出了解的能力，换句话说，如果我可以使用这种字眼的话，就是容忍”</p><p>进步报告─11</p><p>“但在我梦里，手握宝剑的是那位少女。”</p><p>进步报告─11</p><p>“比起解答问题以及系统地获得知识，这件事可暧昧多了。”</p><p>进步报告─11</p><p>“查理，所有层级就像一个巨大楼梯的梯阶，而你会愈爬愈高，看到愈来愈多周遭的世界。”</p><p>进步报告─17</p><p>“艾丽斯在身边的唯一坏处，是我觉得现在必须对抗这件事。我想要停下时间，把自己冻结在这个层级，绝不放她走。”</p><p>进步报告─14</p><p>“孤独让我有机会好好阅读与思考，既然过往的记忆如今再次涌现，刚好可以让我重新发现自己的过去，找出我究竟是谁，或做了什么事。如果情况真的会转坏，至少我已经做了这件事。”</p><p>进步报告─12</p><p>“艾丽斯和我智商一百八十五时的距离，竟和我智商七十的时候一样遥远。”</p><p>进步报告─11</p><p>“理智上的了解并没有帮助，我根本无法独自坐在房间里。我不分昼夜，整天在街头闲晃，不知道自己在找什么……一直走到迷路……然后发觉自己回到面包店外。”</p><p>进步报告─11</p><p>“我看得出她很想答应。她对我的坚持感到讶异，我自己也很吃惊。我只知道不能停止对她施压，而且我在恳求她时，喉咙里还有某种恐惧。我的手掌都湿了，究竟我是害怕她说不，或是怕她说好呢？如果她没回答，并打破紧张局面，我想我大概会昏倒。”</p><p>进步报告─11</p><p>“为什么？我可以告诉你原因。因为你突然间变成个大人物，一个无所不知的聪明家伙！你现在是个正常的神童，一个蛋头。随时捧着书本，随时都有答案。好吧，我可以告诉你，你自以为比这里的其他人优秀吗？那好，去别的地方混吧。”<br>”</p><p>进步报告─17</p><p>“我告诉自己，当一切都变暗，我就会有足够时间可以大睡特睡。”</p><p>进步报告─14</p><p>“但我发现查理不仅活在过去，也活在当下”</p><p>进步报告─14</p><p>“我既想要她把我抱进怀里，说我是个好孩子，又想赶紧跑开，避免被赏一巴掌。”</p><p>进步报告─12</p><p>“我仔细听她叙述时，心里开始恍然大悟。我一直太过专注在自己以及我经历的变化，却从未想到她经历的转变。”</p><p>进步报告─11</p><p>“以前，他们都嘲笑我，因为我的无知与无趣而看不起我；现在，他们却因为我的知识与了解而痛恨我。为什么？他们假上帝之名，到底要我怎么样？”</p><p>进步报告─11</p><p>“在成人中心一年多来，我唯一在乎的事就是讨她欢心”</p><p>进步报告─10</p><p>“只是两个烦恼着要从工作中获得某些东西的平凡人”</p><p>进步报告─17</p><p>“我现在搭着下楼的电扶梯，如果我站着不动，就会一路降到底部。但如果我开始往上爬，也许我至少还能维持原来的水平。重要的是，不论发生什么事，都要继续往上移动。”</p><p>进步报告─14</p><p>“即使在我还迟钝的时候，我也知道自己不如别人。别人拥有我所欠缺的、被剥夺的东西。”</p><p>进步报告─13</p><p>“你说他们虚伪，但他们何曾宣称自己完美，或者是超人？他们只是凡人，你才是天才。”</p><p>进步报告─12</p><p>“语言有时是”</p><p>进步报告─11</p><p>“他觉得智慧上的快速发展，可能让我误以为可以有正常人的情感生活。可是我必须承认，在这些两性接触状况下引发的恐惧与障碍，说明我在情感上还只是个青少年─性行为上的迟缓。我猜想他的意思是说，我还没有与艾丽斯这样的女人建立关系的心理准备。还没有。”</p><p>进步报告─11</p><p>“一般人只能看到一点点，他们无法改变太多或超越自己，但你是个天才。你会愈爬愈高、愈看愈多，你的每一步都会为你揭开一个令你惊奇的新世界。”</p><p>进步报告─17</p><p>“我猜我是觉得被刺伤才发作，我知道她认为留下这些东西是很蠢的事，但她没有告诉我她的想法，只是假装一切都很正常，她是刻意迎合我”</p><p>进步报告─14</p><p>“我不是他儿子，那是另一个查理。智能与知识已经改变我，他会恨我，就像面包店里的其他人一样，因为我的成长让他显得渺小，我不要他这么想。”</p><p>进步报告─13</p><p>“但我从来不曾停止渴盼变成她期待的聪明孩子，好让她能够爱我。”</p><p>进步报告─11</p><p>“我说得愈多，她似乎愈沮丧。”</p><p>进步报告─11</p><p>“她关上门，我站在建筑外看着她住处的灯光，直到灯光熄灭为止。”</p><p>进步报告─11</p><p>“智慧离间了我和所有我爱的人，也让我从面包店被赶出来。现在，我比以前更孤独。我怀疑如果他们把阿尔吉侬放回大笼子，和其他老鼠放在一起会发生什么事。它们会群起对付它吗？<br>”</p><p>进步报告─17</p><p>“我觉得有些头昏眼花，心灵一片空白。这很不寻常，因为在心理疗程中，我心中通常会涌现许多材料来谈论。梦境……回忆……联想……问题……但现在我只觉得孤立与空洞。”</p><p>进步报告─14</p><p>“想要独自解决问题是很愚蠢的，但我在这团梦境与记忆的迷雾中纠缠越深，我也越了解情感的问题无法像智慧的问题一样解决”</p><p>进步报告─14</p><p>“似乎她的磁极已经逆转，原本会吸引的，现在变成排斥”</p><p>进步报告─12</p><p>“所以，如果你不介意的话，我要去修补破碎的自我……谢谢”</p><p>进步报告─11</p><p>“所以，人就是这样才会轻视自己，明知是错的事，偏又忍不住去做。”</p><p>进步报告─11</p><p>“查理。你要的答案不在书本里，也不能靠别人来解决，除非你想一辈子当小孩。你必须在自我内部找到答案，感受到该做的正确事情。查理，你必须学习信任自己。”</p><p>进步报告─10</p><p>“是去了解你以前一直相信的事情并非真实，而且任何东西都不能只靠外表来决定。”</p><p>进步报告─17</p><p>“我想我知道我为什么运气不好。因为我丢掉了我的兔脚和马蹄铁。我必须赶快在去弄另一个兔脚。”</p><p>进步报告─14</p><p>“即使是弱智的人也会想和别人一样。”</p><p>进步报告─13</p><p>“而且，只要罕见一词开始对某个人有特别意义时，他们就会更换用词。这样的做法似乎是说：只有在一个措词对任何人都没有任何意义时才去用它”</p><p>进步报告─11</p><p>“紧抓着过去不放很愚蠢”</p><p>进步报告─11</p><p>“我以前从未恨过任何人，但她的轻松答复与母性般的大惊小怪，却让我对她痛恨起来。我想打她耳光，让她趴倒在地，然后再把她拥进怀里亲吻。”</p><p>进步报告─12</p><p>“很难想象那已是两星期前的事”</p><p>进步报告─13</p><p>“我正在学习控制自己的憎厌，不要凡事不耐烦，要懂得等待。”</p><p>进步报告─14</p><p>“我希望有人在黑暗中围绕着我。”</p><p>进步报告─17</p><p>“我为什么不断责怪艾丽斯？她为何从不争辩呢？这只会让我更加生气，因为我在她的脸上看到怜悯的表情。”</p><p>“仅仅片刻间，我已再次回到沙发上，把意识的指头伸进躯体的手套中”</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E5%A3%B0%E5%85%89/">声光</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E9%98%85%E8%AF%BB/">阅读</category>
      
      <category domain="https://www.ninojay.top/tags/%E5%B0%8F%E8%AF%B4/">小说</category>
      
      
      <comments>https://www.ninojay.top/2022/A-Bouquet-for-Algernon/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>海浪翻涌之前</title>
      <link>https://www.ninojay.top/2022/before-the-waves-churned/</link>
      <guid>https://www.ninojay.top/2022/before-the-waves-churned/</guid>
      <pubDate>Thu, 29 Dec 2022 08:51:43 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>脑海里还是会浮现一个陌生的可爱女孩子。有一些话总是想记录下她。</p><p>也是去年（2021年）差不多这个季节，我在成都与世隔绝，隔三差五去四川图书馆看了差不多两个月的书。在那里的一楼就是文学哲学区域。三四楼的大厅都是提供给读者的自习桌。我喜欢这里的氛围，周围坐着的人年龄分布很广，当然还是以年轻人为主。</p><p>在一楼借了几本想看的书，就来到三楼和写着学校的作业，或是完成社会工作用着电脑，或者像我一样只是读着闲书的人们坐在一起。</p><p>我看书看累了，环顾下四周，起身去到开水房倒一杯热水，回到座位抬头一望，是用一片片细小的灯模拟群星的天花板。</p><p>我把目光拉回对面，从我的右侧走过来一个女生，白色外套，暖色的围巾，可爱的发箍，轻快的脚步拉开我对面的座位，放下挎包，拿出笔记本电脑。我礼貌地将自己占用的区域往回收一些，假装把心思放在了书本上，继续埋头阅读，余光仍在注意她。</p><p>她很活泼。因为她戴着耳机身体还一直随着音乐晃动。她很可爱。她不管周围人的目光，因为我留意到她时不时敲一会儿键盘，就“手舞足蹈”地开心起来，我每次看到她这样，我自己也会感觉很开心。</p><p>奇怪，我看见她的每一个动作，我都很开心。直到今天我脑海里一想到她就开心。那是我人生的低谷时刻，如若不然，我想主动认识她。</p><p>现在也是我人生的低谷时刻，我至少现在是相信自己是有未来的，我至少不再想成为一个悲伤的人。有时候想想，期盼什么，我也想像那个女生一样，能够自然快乐地在公众场合释放自己的向上能量。</p><p>我想认识这样的女生或者男生，我想认识这样的朋友。可我还得花上那么一段时间的独处，才能见到我的朋友。</p><p>早一点到来吧。</p><p>阳光的人生。</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/">情绪</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      
      <comments>https://www.ninojay.top/2022/before-the-waves-churned/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>尽可能地尝试直到达到自己的目的</title>
      <link>https://www.ninojay.top/2022/achieve-my-goals/</link>
      <guid>https://www.ninojay.top/2022/achieve-my-goals/</guid>
      <pubDate>Mon, 02 May 2022 13:50:24 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>从跟MarginNote相关的两件事所感。</p><p>得益于某位朋友的安利，加上互联网上看到的安利，我开始正式接触marginNote3。实话说，被折服。之后再写相关的经验。</p><h2 id="第一件事：想尽办法购买MarginNote3。"><a href="#第一件事：想尽办法购买MarginNote3。" class="headerlink" title="第一件事：想尽办法购买MarginNote3。"></a>第一件事：想尽办法购买MarginNote3。</h2><p>marginNote3挺贵的，ipad版本和mac版本都上百块了。我的需求是想买永久版的mac版本的marginNote3的，首先是从appstore搜到了，可以免费试用14天，后续需要将近300块解锁永久版。</p><p>想到去官网看看。在官网看到一些官方使用技巧。突然想到有没有教育优惠呢。往下翻，发现mac版marginNote提供dmg下载和appstore下载两种方式。接着发现一个帖子，果然可以提供教育信息，发送到相关邮件证明，就可以打折购买dmg版本的marginNote激活码，168就可以买到，再加上有两个激活码。碍于刚毕业没有学生身份，我想有没有其他学生购买了激活码，再网上卖另一个激活码呢，这样等于说最后我只需要花84就能买到原价接近300的永久版marginNote。</p><p>开始去找找网上，首先在豆瓣小组里面一搜，果然marginNote小组很多mac版本组团买激活码的。只是特别抢手，当时看到的时候，并没有新的人发贴，都是大家已经完成了交易的帖子。</p><p>我想等等吧。不知道是不是因为刚刚过完年，没有到marginNote的需求期（感觉暑期开学的时间应该最火爆），接连几天都没有看到新的学生帖子卖激活码的。前几页的帖子都没我刷了几遍，也没有看到“漏网之鱼”。</p><p>看来是很抢手，一发出来就被抢光了。</p><p><strong>我应该得主动出击了</strong>。所以就发了一个帖子。</p><p>然后去b站搜marginNote，果然也搜到了一个卖激活码的，可惜就是十几天前的事情。被别人抢先了。又过了几天，还是没有人回我的帖子。真是纳闷了，这个时间段这么少人吗。</p><p><strong>我好像得更加主动出击一点。</strong>开始豆瓣，小红书，微博都去搜相关的帖子，发帖。还是没有人回我。</p><p>无意之间看到了marginNote官方qq群，加入了几天，看着群里面时不时有人讨论marginNote的用法，经验。我想着死马当活马医，随口问了一句：有没有人有多余的学生激活码，可以买你一个。</p><p>接着我还去找了在读研究生的本科室友，让他在他研究生学校的网站帮我发一起买marginNote的帖子。</p><p>过了一两天好像。</p><p>在网上所有的帖子都没有人回。下午快到晚上了，qq群有人艾特我，他有。哈哈哈，奏效了。我马上联系，说可以走海鲜市场买。他说在外面，晚上回到家就给我发。</p><p>过了一会儿，豆瓣小组有人回我了，她说她是国外的学生，可以申请。</p><p>真是奇了怪了，很多时候我遇到的事情都是这样，渴望的时候都不来，心冷静的时候，全都一起来了。跟她说一声不好意思，找到来源了，还给她分享了我怎么找到的。</p><p>到了晚上，验货，没问题。很舒服。</p><h2 id="从前辈学习技巧"><a href="#从前辈学习技巧" class="headerlink" title="从前辈学习技巧"></a>从前辈学习技巧</h2><p>软件都是工具。而工具是值得提前花一些时间熟练掌握的。之后的运用只会事半功倍。ipad和mac我都有了marginNote后，我就想怎么样才能运用好这个软件呢。开始自己瞎玩，看看官方的教程视频。b站的分享。总觉得还是不太了解。</p><p>这个时候想着在使用中学习，就用marginNote看了一本书《如何阅读一本书》，做了思维导图。实话说，第一次使用，做的稀烂。感觉没有用出marginNote的精髓。</p><p>开始在qq群潜水，有一天下午看到有的网友开始“吵架”怎么使用marginNote，有个人发了一张自己使用该软件的截图，我放大一看，好家伙，跟我一样考计算机的选手。不过是刚考完的一批。我觉得他用的很好，规整，分块，就这样一张截图都能感觉到使用清晰。</p><p>不能放过学习机会呀。马上私聊请教，询问能不能发我一份自己的思维导图，想学习一下。他很豁达，同意了。也就是说，偷学成功。</p><h2 id="结论"><a href="#结论" class="headerlink" title="结论"></a>结论</h2><p>说到底，这不过是关于一个软件发生在我身上的相关小事件。关于第一件事实际上是我近些年，应该说一直以来缺少的行动：<strong>即主动想办法尽可能最大化自己的利益。</strong></p><p>而要是之前的我，我会想着，嗯就直接花300块买了吧。我现在觉得其实是懒惰的行为体现。我并不是特别着急，其实只需要多了解了解，就能得知省钱的方式，那么为什么不去省这个钱呢？</p><p>之后为了达到省钱这一目的，我所进行的多方努力也是我之前很少使用的方法。我是一个很容易放弃的人。也许就想着，算了。其实只需要再试试其他方法，就能柳暗花明。解决问题，需要时间。不要怕时间。</p><p>关于第二件事倒是我平常的经历。我本就是一个喜欢和前辈聊天吹牛的人。</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%80%9D%E8%BE%A8/">思辨</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E6%96%B9%E6%B3%95%E8%AE%BA/">方法论</category>
      
      
      <comments>https://www.ninojay.top/2022/achieve-my-goals/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>小炒肉</title>
      <link>https://www.ninojay.top/2022/stir-fried-pork/</link>
      <guid>https://www.ninojay.top/2022/stir-fried-pork/</guid>
      <pubDate>Thu, 31 Mar 2022 06:27:36 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h2 id="小炒肉"><a href="#小炒肉" class="headerlink" title="小炒肉"></a>小炒肉</h2><h3 id="一、食材"><a href="#一、食材" class="headerlink" title="一、食材"></a>一、食材</h3><p>【主料】<br>五花肉（约150克）<br>里脊肉（约100克）</p><p>【辅料】<br>二荆条（300克）<br>小米辣（几个）<br>蒜苗（2根）<br>大蒜（15克）<br>生姜（15克）<br>蛋清（2克）<br>干淀粉（少许）<br>植物油（适量）</p><p>【调味料】<br>食用盐（少许）<br>胡椒粉（少许）<br>生抽酱油（适量）<br>蚝油（6克）<br>白糖（少许）<br>老抽（2克）</p><h3 id="二、做法"><a href="#二、做法" class="headerlink" title="二、做法"></a>二、做法</h3><h4 id="前期准备"><a href="#前期准备" class="headerlink" title="前期准备"></a>前期准备</h4><ol><li>将二荆条（辣）或者大绿椒（不辣）🫑、小米辣🌶️都切好（小米辣中间竖着切，切成条状，炒出来比颗粒更好看）</li><li>把蒜🧄，姜先拿刀🔪拍散，切成颗粒</li><li>把两条蒜苗斜着切成条状</li><li>五花肉🐷切薄片，越薄越好，里脊肉🐷切成条状（五花肉和里脊肉增加肥瘦混合感）</li><li>腌里脊肉🐷：放入盐🧂、胡椒粉、生抽酱油、蛋清、淀粉、植物油</li></ol><h4 id="炒菜"><a href="#炒菜" class="headerlink" title="炒菜"></a>炒菜</h4><ol><li>干炒辣椒，把辣椒炒出虎皮即可</li><li>清洗锅</li><li>用油滑锅后，五花肉🐷下去榨油出来八成熟，再下里脊肉🐷</li><li>放入姜蒜🧄末，爆香</li><li>加蚝油🦪、生抽酱油、白糖🍬、胡椒粉、老抽酱油（上色）</li><li>加辣椒</li><li>最后加蒜苗，炒至蒜苗断生即可出锅</li></ol><h3 id="三、卖家秀"><a href="#三、卖家秀" class="headerlink" title="三、卖家秀"></a>三、卖家秀</h3><div style="position: relative; padding: 30% 45%;"><iframe style="position: absolute; width: 100%; height: 100%; left: 0; top: 0;" src="//player.bilibili.com/player.html?aid=98598787&amp;bvid=BV1G7411m7Qn&amp;cid=168313216&amp;page=1&amp;as_wide=1&amp;high_quality=1&amp;danmaku=0" frameborder="no" scrolling="no"></iframe></div><h3 id="买家秀"><a href="#买家秀" class="headerlink" title="买家秀"></a>买家秀</h3><p><a href="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/postImages/xiaochaorou.jpg" class="gallery-item" style="box-shadow: none;"> <img src="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/postImages/xiaochaorou.jpg"></a></p><p>反思：</p><ul><li>切🔪辣椒🌶️，切的不够好看，小米辣应该切成条状</li><li>油少了，锅都被我炒干了</li><li>炒菜环节忘加白糖！</li><li>以为二荆条不够辣，腌肉的时候又私自加了一勺豆瓣，吃的时候辣死了</li></ul><p>还不错，一次比一次好吃😋</p><p>家常菜就是吃的饱，扎实😄</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E8%A1%A3%E9%A3%9F%E4%BD%8F%E8%A1%8C/">衣食住行</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E9%A3%9F/">食</category>
      
      
      <comments>https://www.ninojay.top/2022/stir-fried-pork/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>《鸟人》</title>
      <link>https://www.ninojay.top/2022/Birdman/</link>
      <guid>https://www.ninojay.top/2022/Birdman/</guid>
      <pubDate>Mon, 21 Mar 2022 16:59:17 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h2 id="“过时”的意义-寻求爱-理解"><a href="#“过时”的意义-寻求爱-理解" class="headerlink" title="“过时”的意义/寻求爱->理解"></a>“过时”的意义/寻求爱-&gt;理解</h2><p>喜欢这部电影。属于是我近几年一看，为数不多就超级喜欢的那种。</p><p>有一个想法。针对爆米花电影，也影射当下所有人的娱乐至上。新的潮流出现就是会吸引大批跟风的人并且持续很长一段时间吧。</p><p>手机、互联网、超级英雄爆米花电影。如今漫威的风评也下来了，互联网也渐渐有人觉得容易无聊且无脑了（俄乌打仗几周热榜消息不断反转）。手机想必大家都体会过刷一天手机的空虚感。</p><p>我想说的是：新的所谓潮流就是得盲目流行一段时间，在这个世界疯狂冲刷。这没办法，似乎只能等待尘埃落定，看到背后的价值。</p><p>《鸟人》的主人公在我看来是可悲的，也是可以理解的，新事物接受能力太差，太固执，太沉浸在自己的世界。当然这些都能从对事业，自己的热爱角度变为褒义词。关键是“意义”两字本来就可悲。”意义“本就是人为创造的。像《鸟人》一样坚守着自己深以为然的“意义”的人们，其实活的很拧巴。</p><p>我觉得自己也是这样的人，我们要做的也许还是学会拥抱当下的时代，把自己觉得珍贵的融入到当下的时间就行了。</p><p>至于评判，赞誉，责骂。确实不是有自己一个人可以做的。</p><p>柏拉图的书里面似乎说过这样一句话：“发明家发明一个东西，是自己的事。这件东西的好坏却是属于别人认为的事。”</p><hr><p>很同意有个影评说，这里面的人都寻求爱，却不得。喜欢和朋友见面聊天，喝酒吃饭。我的朋友们却喜欢在手机上长期保持交流。甚至是我喜欢打电话听到声音语气，让我的思维也更敏捷说话都更利索，精确判断对方的感受，我的朋友们却都喜欢发文字，发一段语音，他们的理由是方便。</p><p>我承认自己在手机聊天软件里用文字聊天，不能像许多人一样妙语连珠。因为我觉得隔着一个屏幕，就不能称之为真实。但是大家都仿佛是想躲进屏幕，找自己想要的爱。</p><p>也可能是我没找到真正的朋友。哈哈。</p><p>这跟这部电影有什么关系呢。可能我想表达的是“理解”吧。理解固执的人为何固执，理解亲人为何生气，理解他为何放浪形骸。</p><p>理解理解别人，很累。但是尽量理解理解。</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E5%A3%B0%E5%85%89/">声光</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E7%94%B5%E5%BD%B1/">电影</category>
      
      
      <comments>https://www.ninojay.top/2022/Birdman/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>小孩遭遇</title>
      <link>https://www.ninojay.top/2022/child-encounter/</link>
      <guid>https://www.ninojay.top/2022/child-encounter/</guid>
      <pubDate>Mon, 21 Mar 2022 06:32:09 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>我是一个痛恨填鸭式教育的人。没经历过大城市如何培养一个小孩子，只能日复一日责骂我所受的小城市教育太绝对。“<strong>着急学习给其他人看</strong>”，就是我所总结的中国小城市的教育。</p><p>大城市是否就会好很多呢？那里的孩子成才率与发现自我的能力在我的想象中应该很高吧。实际上，我没有任何头绪。我心里是这么希望的。本科毕业后终于有机会离开四川前往更大的城市生活。我细心观察周围五湖四海来的人，听他们讲着截然不同埋藏在记忆里的童年、青年、成年经历。许久听完，很可惜，我还是没有看到，听到想要的声音。不同城市，不同家庭，很多人，经历各不相同，却还是能被统一的概括：那还是暗藏“先讨好别人，再希望未来讨好自己”的奔流。我只是担心，也不是担心，只是觉得，未来也没有能力再讨好自己了。这世界不缺别人，也不缺需要被人讨好的别人。</p><p>孩子作为被塑造者，来到这个世界。思想的形成几乎取决于长时间的家庭教育，遇到的社会环境。家庭教育，社会环境不该怪孩子。该怪这些孩子长大后，明明意识到了什么，还是不曾做出一点改变。</p><hr><p>亲身经历。</p><p>今年冬天的一个下午，成都的一个算是大商圈的一楼，我在其中的书店，看夏目漱石的《心》。那本书快看完了，我很投入到故事的高潮，即主人公开始揭秘前辈隐藏在心中的秘密。书店里的这一片座位，从我中午来时就只有我一个人。这时店里来了两个妇女和两个上小学的孩子，两个孩子一男一女，女孩应该是姐姐。</p><p>我还是投入到自己的阅读中。她们嘟嘟囔囔地挑了一本书，围在了离我三个座位的距离。商圈里的书店，顾客本就复杂一些，孩子时不时的欢闹也很正常。我还是能够投入到掌心的世界。</p><p>“今天我来到了远大的书店，阅读了一本书，这本书是川端康成的《雪国》，讲述的故事是…”</p><p>我抬起头眼神瞥向左边，那个女孩坐姿端正，字正腔圆地说着学校培养的普通话，她的对面是其中一个妇女手持手机给她录像。</p><p>“你说慢一点嘛，这么快谁听的清。”坐在女孩左边，靠近我两个座位的位置上的妇女这么说。</p><p>“你不要在这里逼逼赖赖，逼逼赖赖！”，女孩语态转换的这么快，应该是她的妈妈吧。</p><p>摄像的妇女放下手机，应该是在点击删除。</p><p>“姐姐确实该说慢一点，感觉这样更好。”在摄像妇女身后是那个女孩的弟弟，他也开始出主意。</p><p>“哼，你不要说话。”女孩伸手打了她的妈妈一下。摄像妇女又拿起了手机。</p><p>“川端康成的《雪国》，这本书非常好看，给我的感受是…”，普通话。</p><p>“唉，后面是什么来着。搞忘了。”，四川话。</p><p>“哈哈，哎哟，你在干啥子哦。”她的妈妈笑起来。</p><p>“喊你不要讲话啊！嗯是的。”女孩气势汹汹，她们俩打闹起来。</p><p>弟弟翻着从其他书架找到的绘本，跟她们说这本书感觉好看。</p><p>“川断康城的《雪国》，带给我最大的感受是：…”这是她第三次说《雪国》的简介了。</p><p>事实上差不多完成第五次说《雪国》的简介后，摄像妇女才说了可以。其中的每一次间歇，女孩和她妈妈的争吵都很爆裂。录像时却很端庄。</p><p>女孩着急拿过手机检查。外放的声音让我听到了第六次《雪国》的简介。女孩的妈妈探过头：“让我看看，嗯，还阔以嘛。”</p><p>女孩和弟弟和他们的妈妈都笑了。桌上的《雪国》静静地躺在桌上。</p><p>女孩拿起了《雪国》，左翻翻，右翻翻。更多的时候是看着背部封面的介绍。</p><p>女孩若有其事的说：“这本书应该挺好看的，我之后好好看一下。”</p><hr><p>实际上我忘了桌上躺着的书是《雪国》、还是《伊豆的舞女》。我只记得女孩在录像时字正腔圆地说：“川端康成的著作有《雪国》、《伊豆的舞女》…”</p><p>这就足够了。</p><p>这个书店今天已经倒闭了。</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/">情绪</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      
      <comments>https://www.ninojay.top/2022/child-encounter/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>明月，愿温柔穿戴于你</title>
      <link>https://www.ninojay.top/2022/bright-moon-may-you-wear-gentleness/</link>
      <guid>https://www.ninojay.top/2022/bright-moon-may-you-wear-gentleness/</guid>
      <pubDate>Sun, 06 Mar 2022 12:19:50 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><center>为什么那么多的人歌颂月亮🌙</center><center>为</center><center>什么</center><p>2020年7月31日左右。走在杭州的余杭街道。实习下班回家的路上，江南的空气闷热得不像话。任何的感官刺激都与我在丰子恺书中预期的江南违背甚远，我很失望。</p><p>我，那时，呆呆的，在江南上班了。我，像还在上学一样，背着书包。和学生又不太一样，书包里装的只有电脑，和公司里领取的加班夜宵-牛奶面包，这一点，像周围大多数成年人一样。</p><p>为什么这么闷热。下班距离是两公里。步行二十分钟左右。时间通常是从夜晚九点开始计算。</p><p>已经九点了为什么还是这么闷热呢。</p><p>我的头发很长，那样让我自己好看一些。书包解放了我的双手，随着步伐的前进，它间断地在我后背摇荡，在它荡到最大的角度，我感受到肩膀很酸，穿过缝隙的风让我知道我的后背已经湿透了，牛奶和面包也已经热了吧，这才不过走几分钟。这个时间段，没有公交车。就算有，我也不想坐。我坐了一天，走走吧，即使是已经接近夜晚十点。</p><p>十点。江南漆黑一片。路上能看见的行人都和我一样背着书包。下班了，我便当他们不是人，他们只是一条条会行走的随风草。所以街上每天晚上都只有我一个人。我一个人的时候喜欢散步🚶‍♀️。这是从高中就一直保持的好习惯。思想随着夜的降临终于敢大声地和我商量一点什么。</p><p>“你今天那一句话说的真是妙啊，逗得大家哈哈大笑”，我微笑。</p><p>“他们好像都在夸你，也不要骄傲，其实你知道自己很危险”，我沉默。</p><p>“觉得自己能完成安排的任务吗，还得请教请教前辈”，我皱眉。</p><p>“回去舒舒服服看看追的剧，不过洗完澡好像只能看一集了，还是直接洗洗睡吧，你一看就停不下来，肯定会看到凌晨两三点，接着第二天精神又不好，日复一日重复精神不好，想着早睡，然后晚睡，然后精神不好，然后…”，我停下脚步大叫：“打住。”</p><p>路上有三个红绿灯。我走到了第二个。时间是60s。我的小腿也有点酸痛。十字路口总是空旷，风能够一丛丛从江南附近的河吹来，这才对嘛，我点头，擦擦太阳穴上的汗，我想：晚上应该叫月亮穴。</p><p>江南不像书里面写的那么小。这条斑马线大概一百多米。他们说公司搬到这个地方是因为这里便宜，前几年这里到处都是农田，是公司让这里变成了这样。我更想在这里看到农田，在西湖边看到公司。</p><p>这个红绿灯一过，路灯接着减少，光亮减少，影子拉得模糊且更长。经过一座小桥的时候，有时候迎面是一条野狗，或者没穿衣服的中年人。狗或人从我身旁像风一样游过，我仿佛都能闻到一丝酒气。</p><p>“对嘛，这才是江南。”我站在桥上看桥下的小河，河里有月亮🌙。</p><p>“这一切有意义吗？”</p><p>“什么？”</p><p>“你每天被动做的事，你如今花时间不得不像他们一样讨好年长的人，你花的每一分时间。”</p><p>“他们不是都羡慕我吗？羡慕我的年轻，羡慕我的勤奋好学。”</p><p>“你羡慕你自己吗？”</p><p>“我还太年轻吧。大家不都是这么过来的吗。”</p><p>“行了，别找借口了，果真像你所想，此时是谁在问你呢？”</p><p>“是…”</p><p>“你不会想说是月亮吧🌙。”</p><p>“你说为什么那么多诗人文人歌颂月亮呢，你抬头看看，不过是一个圆圆的白光，有时半圆，有时半弯，有时四分之一弯，你看今天的月亮就比昨天的要扁…等等…”</p><p>“月有阴晴圆缺。凌晨四点，海棠花未眠。这些都是被人观察到了，才被记录下来的对吧。”</p><p>“你说之前的人们生活跟现在比，夜晚的娱乐肯定更无趣一些。睡的晚，睡不着的人们目之所及，月亮就在那里照耀，对于那时的人们来说，月亮也未免过于明显了一些。也就是说，这就有了人的观察。人一观察，就容易联想到很多这那。比方说：‘她要是没有睡，和我也看的是一个月亮吧’，‘今天的月亮缺了一大半，似是照应我心中的悲愤’…”</p><p>“大家都观察到月亮，但未必有人，记其于笔，画于纸。所以说，哈哈哈，我看，月亮的意义无非是那些人无聊生活的触景生情。不对，’触景生情‘得加上引号，因为这个景并不难遇到。”</p><p>“所以？”</p><p>“所以，不过如此。”</p><p>“但是？”</p><p>“但是，我还是觉得月亮很温柔。她不像太阳那么主动产生热。她就静静地坐落在那里。她从不主动做什么，就算散发着光也是别人给她的，让她穿上她就这样穿在身上。似乎就觉得她没有什么所求，也没有什么所失。她就在那里。她也没有告诉你什么来，也没有说她什么时候会走，她就在那儿。夜晚，你一抬头，你就知道，她，一定在那里。不曾刻意与任何人约定，所有人却都仿佛和她达成了默契。”</p><p>“所以。”</p><p>“所以，如果要我选，成为太阳还是月亮。我想:”</p><p>“等一下。为什么要这么快下结论呢？”</p><p>“我是说，我想像月亮那样温柔。不辜负明月22年的关照。”</p><p><a href="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/postImages/hangzhoudeyekong.jpg" class="gallery-item" style="box-shadow: none;"> <img src="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/postImages/hangzhoudeyekong.jpg"></a></p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/">情绪</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      
      <comments>https://www.ninojay.top/2022/bright-moon-may-you-wear-gentleness/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>正确认识自我状态，像真正的成人一样-《蛤蟆先生去看心理医生》</title>
      <link>https://www.ninojay.top/2022/know-oneself/</link>
      <guid>https://www.ninojay.top/2022/know-oneself/</guid>
      <pubDate>Sun, 27 Feb 2022 13:25:14 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><blockquote><p>来源：《蛤蟆先生去看心理医生》-罗伯特·戴博德（英）</p></blockquote><p>我们看到的自己，并不一定总是我们喜欢的样子。从当下的你，变成你想成为的自己，必定要经历行为和态度的转变，需要付出艰辛的努力，需要勇气和觉醒。为什么很多人会拒绝打开这扇学习之门，因为它通向一条艰辛之路。</p><ul><li>困惑是学习过程的第一阶段，这说明固有知识的局限开始被打破了。由此产生的焦虑是让你改变的动力，很可能也会开启你的创造力。</li><li>被旧的思想主宰，单靠争论就无法改变想法，只会让人更固执己见。</li><li>想要理解你的现在，就必须回顾你的过去。</li></ul><h2 id="故事梗概"><a href="#故事梗概" class="headerlink" title="故事梗概"></a>故事梗概</h2><p>鼹鼠有一天去看望好朋友蛤蟆，无意间在门外看到了平常光彩照人的蛤蟆不寻常的悲伤情绪。回家告诉了共同的朋友河鼠，正巧河鼠在报纸上看到了心理咨询师苍鹭的广告，提议劝说蛤蟆去看心理咨询。</p><p>鼹鼠和河鼠前去蛤蟆家的路上，遇到了獾-共同的严厉长辈，和蛤蟆的父亲是好友。獾了解情况后立马同意大家的想法，积极揽头去帮助蛤蟆。</p><p>由此蛤蟆在一开始被朋友们的关心下，不得不来到了苍鹭心理咨询室，在苍鹭的引导式的心理咨询上，逐渐探索了内心深处的秘密，意识到童年对自己以及身边所有人的影响，渐渐从习惯性情绪化责怪自己，变得理性正确看待所有的情绪，最终还是积极起来拥抱“成年人状态”。</p><h2 id="核心理论"><a href="#核心理论" class="headerlink" title="核心理论"></a>核心理论</h2><p><strong>人</strong>的自我状态上有这样的三位一体</p><ul><li>儿童自我状态</li><li>父母自我状态</li><li>成人自我状态</li></ul><h3 id="一、儿童自我状态（Child-Ego-State）"><a href="#一、儿童自我状态（Child-Ego-State）" class="headerlink" title="一、儿童自我状态（Child Ego State）"></a>一、儿童自我状态（Child Ego State）</h3><blockquote><p>一位诗人说过：“孩子是成年人的父亲”。</p><p>童年体验到的最强烈的情绪，不可避免地变成我们成年后经常有的感受。</p></blockquote><p>“儿童自我状态”：当一个人处于“儿童自我状态”时，是指他的行为和感受都像一个孩子。⚠️这不同于“幼稚”，而是“像孩子一样”。</p><p>这是由童年残留的遗迹搭建而成，包含小时候体验过的所有情感。幼年时，这些基本情感逐渐发展演变成更微妙、更复杂的行为模式，这些行为模式成为自我的核心，融为我们自身的一部分，定义了我们一生的行为。正因为这样，某些特定的情形和场景会激发我们的基本行为模式，让我们自动做出反应，所以我们会和小时候一样去行动和感受。具体的情绪和场景因人而异。</p><p><strong>所以处于儿童状态没有好坏，只是会产生一些效果。</strong></p><p>”儿童自我状态“可分为：<u>“自然型儿童状态”</u>  或者 <u>“适应性儿童状态”</u>。</p><hr><p>孩子出生来到这个世界，携带一些<strong>天生的基本情感</strong>：</p><ul><li>快乐和深情</li><li><font color="red">愤怒</font></li><li>悲伤</li><li>恐惧</li></ul><hr><h4 id="自然型儿童"><a href="#自然型儿童" class="headerlink" title="自然型儿童"></a>自然型儿童</h4><p>以上的基本情感加在一起，构成了<u>“自然型儿童”</u>。也就是说，当我们看到一个人处于以上的情感，可以说他正处于“自然型儿童”的状态里。</p><p>不过<font color="red">愤怒</font>这一情感更为复杂。</p><h4 id="适应性儿童"><a href="#适应性儿童" class="headerlink" title="适应性儿童"></a>适应性儿童</h4><p>从出生第一天开始，以上天生的情感开始运作。但是人的成长过程情感世界的继续丰富有着很多其他的因素，最重要的因素就是<strong>父母。</strong></p><ul><li>婴儿做的几乎所有事情都会引发<strong>母亲或父亲的某些反应</strong>，这些反应对孩子具有深远的影响。</li><li>你能拥有怎样的父母，又像买彩票一样，得看走不走运。</li><li>父母也是人，会不可避免地把他们的观念和行为传递给后代。</li><li>所以孩子们要学会的是，如何<strong>应对和防御因此而产生的后果</strong>。</li></ul><p>为什么孩子只能学会忍受并学会应对父母的各种状况？<strong>因为无处可逃，孩子唯一能做的就是去适应他们每一次的喜怒无常。</strong> 由此，产生了与“自然型儿童”不一样的“适应性儿童”。</p><blockquote><p>很多长大后的人不觉得，甚至完全否认自己现在身上有“适应性儿童”状态。可如果要更好地理解自己，就需要跟自己的情绪做联结，并理解这些情绪。如果否认它们，无论是用无视还是压抑的方式，结果都像是做了截肢，就如身体的重要部位被切掉了一样，在某种程度上这样的人也是一个<strong>残缺的人。</strong></p></blockquote><p>而“适应性儿童”的“适应”，往往就体现在<strong>适应</strong> <em>（无论是他人或者自己的）</em>  <font color="red">愤怒</font>上。<font color="red">愤怒</font>是我们与生俱来的基本情绪之一，父母的严厉挑剔，孩子自动想要去适应<font color="red">父母的愤怒</font>以便利于生存。儿童能想到的方法就产生了：<strong>顺从他们、同意他们的大部分想法、自己努力来取悦他们、总是主动的道歉、总是依赖他们、对自己不诚实（PLOM）。</strong></p><blockquote><p>PLOM: Poor Little Old Me</p></blockquote><h4 id="适应性儿童的后果"><a href="#适应性儿童的后果" class="headerlink" title="适应性儿童的后果"></a>适应性儿童的后果</h4><p>顺从行为可能导致有些人学会了把依赖<strong>当成生活方式</strong>。也就是说，等到儿童达到成人年纪，社会规则下离开了父母，”适应性儿童状态“依然在起作用。会自然而然把和父母性格类似的人关联在一起，启动”适应性儿童状态“来依赖新接触的人，甚至极大可能重复从小就经历的自我伤害（顺从他人、贬低自己、取悦他人、积极道歉…）。</p><p>这样的人永远都没有真正长大成人。因为成长的本质就是要减少并最终打破这样的依赖关系，这样才能成为一个独立自主的人。很少有人能完全达到这点，有些人能部分达成，而很多人则会依赖一辈子。</p><h4 id="一些建议"><a href="#一些建议" class="headerlink" title="一些建议"></a>一些建议</h4><p>正是由于长大后终于明白了<font color="red">愤怒</font>是我们与生俱来的基本情绪之一，是我们行为的必要组成部分，不可能完全压抑下去。</p><p>那么请质问自己为什么现在仍然不去生气呢？是因为长大后明白虽然占了上风，但是又完全依赖这些人，怎么能直接生气呢？更何况还算爱着他们。</p><p>所以要学会的是<strong>如何不带攻击性地发火。</strong>用缓和的方式来释放愤怒，让别人几乎觉察不到，这样就不会让任何人不安。</p><hr><p><strong>儿童</strong>如何释放愤怒（由强到弱的方式）：</p><p>叛逆&gt;撒泼&gt;怄气&gt;任性&gt;郁闷&gt;拖延&gt;厌烦&gt;退缩</p><p>所有这些行为策略实际上都是从我们童年发展而来的防御机制，用来保护我们免于收到伤害。</p><p><u>所以当一个成年人怄气、撒泼、郁闷或是厌烦的时候，我们会想他们究竟是行为不当，还是在无意识或无法控制地重演童年的行为模式。</u></p><p>在道德层面上，这类行为没有错，但是会导致两个后果，且都是负面的后果：</p><ol><li>会被人嘲笑，让人尴尬。</li><li>容易透露一个信息：这个人是个失败者。</li></ol><hr><p>以上的论述即是，就算是成年人，处于“适应性儿童状态”面对 <font color="red">愤怒</font>，可能做出和儿童一致的行为来释放愤怒，并不一定是好事。那么该如何学会当一个成年人？</p><h3 id="二、父母自我状态（Parent-Ego-State）"><a href="#二、父母自我状态（Parent-Ego-State）" class="headerlink" title="二、父母自我状态（Parent Ego State）"></a>二、父母自我状态（Parent Ego State）</h3><p>“父母自我状态”：处于这一状态，我们表现得正如自己的父母。</p><p>“父母状态”包含了自出生起，我们从父母那里学到的所有价值观和道德观，还包含了对生活的批判标准，让我们借此判断是非对错。这些价值观来自父母，所以父母是最能左右我们行为的人。他们的言行塑造了我们童年的生活，也不可避免地对我们之后的人生产生影响。</p><h4 id="挑剔型父母"><a href="#挑剔型父母" class="headerlink" title="挑剔型父母"></a>挑剔型父母</h4><p>父母状态中有比较常见的类型：挑剔型父母，这一类型的父母爱批评人、愤怒、严厉…</p><hr><p>相信有人会说：自己并没有感觉到有”父母自我状态“。</p><p>请首先界定如下问题：</p><ul><li><strong>每个人都有”父母自我状态“</strong></li><li>似乎没有证据显示自己有”父母自我状态“</li></ul><p>那么接下来的问题是：”自己这种情况是怎么产生/运作的？“</p><p>很显然，<strong>是因为自己的“父母状态”运作起来和其他人不同。</strong></p><hr><p>”挑剔型父母“这一类型通常像一个法官，一只在控诉别人，给他们定罪，然后顺理成章地惩罚他们。如果自己有这样的父母，在不觉得自己有这样的“父母状态”下，很可能是因为自己虽然没有像父母一样一直审判他人，但是一直在<strong>审判自己，惩罚自己</strong>。</p><p>当自己意识到这一点，能停止自我批判吗？能对自己好一些吗？最重要的是，能开始爱自己吗？</p><p>虽然父母对我们的影响极大，但每个人自身的独特性确保了我们不是父亲或者母亲的复制品，而是独立的个体。</p><h3 id="三、成人自我状态（Adult-Ego-State）"><a href="#三、成人自我状态（Adult-Ego-State）" class="headerlink" title="三、成人自我状态（Adult Ego State）"></a>三、成人自我状态（Adult Ego State）</h3><p>在“儿童自我状态”和“父母自我状态”恶劣部分的影响下，我们成长后甚至会和新认识的人们达到一种“共谋状态”，偷偷地或无意识地配合对方，来给自己制造不快，同自己共谋来谴责自己，自己不自知到连潜意识也没能察觉。这就是在玩心理游戏，而且在游戏里输的人才算是赢家。</p><p>如果你<strong>决心要改变</strong>，那么应该还存在另一种自我状态，让我们既不会表现得像父母，也不会感觉像孩子。在这个自我状态里，更像大人，更像当下的自己。</p><p>“成人自我状态”：用理性而不是情绪化的方式来行事。让我们能应对此时此地正在发生的现实状况。</p><p>也就是说能计划、考虑、决定、行动，能理性而合理地行事。处于这个状态时，我们所有的知识和技能都能为自己所用，而不再被脑子里父母过去的声音所驱使，而不会被童年的情绪所围困。相反，我们能思考当下的状况，基于事实来决定要怎么做。</p><hr><ol><li>没人能强迫别人进入他们的“成人状态”。只能鼓励他们。只有他们自己能决定要怎么做。</li><li>没人知道应该怎么做才能进入“成人状态”。只能自己找到答案，只有自己能决定。</li></ol><hr><p>首先要明白，没有人能“让”我们产生什么感受，除非他们用蛮力胁迫你。说到底，是我们“选择”了自己的感受。我们“选择”了愤怒，我们“选择”了悲伤。</p><p>相比于责怪别人，试试<strong>负起责任</strong>：为自己的行为负责，包括自己的情绪。这意味着一个天大的好处，能开始对此行动了，如果为自己负责，就会认识到对自己是有自主权的。因此就知道自己有力量来改变处境，更重要的是，有力量改变自己。</p><p>学会<strong>原谅</strong>无法再合理释放愤怒的事情或人。</p><p>学会<strong>为自己的情绪，行为做正确的决定。</strong></p><p>在回忆时不再谴责自己，找到事件之间的联系，客观地去看，而不再感到内疚。慢慢理解为什么有些事情会以那样的方式发生，以及会带来怎样的影响。总的来说：<strong>反思</strong>自己的所作所为，并从中学习<strong>领悟</strong>。</p><p><strong>真诚地回应当下的需求</strong>，从而打破童年延续而来的因果循环，让真实的自我摆脱过去经历的束缚，在自由中成为真正的自己。</p><h2 id="再谈“三位一体”"><a href="#再谈“三位一体”" class="headerlink" title="再谈“三位一体”"></a>再谈“三位一体”</h2><ul><li>儿童自我状态<ul><li>体验童年的感受，好的坏的都有。再现过去的情形，再次体验过去的情绪，但是学不到任何新的东西。</li></ul></li><li>父母自我状态<ul><li>基本上不是在挑剔就是在教育别人。不管是哪种，都在用言行重复从父母那里学来的观念和价值观，会想证明给别人看，让别人接受你的观念和价值观。这种确信无疑的状态，就没法给新知识和新理念留出一席之地。</li></ul></li><li>成人自我状态<ul><li>在成功的人生里，三种状态都是必需的。已经演化了千百年，所以每一种状态肯定都很重要，都对生产有价值。不过，“成人自我状态”有特殊重要性。<strong>只有在“成人自我状态”里，才能学到关于自我的新知识。</strong></li></ul></li></ul><p>”成人自我状态“很难，是因为这个过程需要艰辛的努力和刻意的思考。在另外两种状态时，几乎不需要去思考，因为我们知道要做什么、要说什么，就好像在演戏一样。</p><h2 id="人生坐标系"><a href="#人生坐标系" class="headerlink" title="人生坐标系"></a>人生坐标系</h2><p>有这样四种态度：</p><ol><li>我好；你也好<ol><li>并非静止的状态，而是动态的过程。得靠行动和态度持续地对自己和别人展示出来。</li><li>这个选择肯定不能给我们庇护，不能免于“残暴命运如投石飞箭般地摧残”。</li><li>这是一种发自内心信念的行为，接近于人本主义的信条：信自己，信他人，而不一定非要信神或超自然。</li></ol></li><li>我好；你不好<ol><li>总是觉得自己应该比别人好。喜欢玩“NIGYYSOB”，常常会占据权利和权威的制高点，对别人评头论足。经常发生在“工作场合”、“挑剔型父母状态”、“养育型父母状态”）</li><li>这类人从来不会抑郁，因为愤怒能过非常有效地抵抗抑郁。愤怒的人从不觉得内疚，因为他们总在怪罪别人。</li><li>极端的行为：谋杀。</li></ol></li><li>我不好；你好<ol><li>这类人认为自己很差劲，别人都比他好，认为自己是生活的受害者，制造悲伤的“自证预言”，容易玩成为受害者的心理游戏。</li><li>容易抑郁。</li><li>极端的行为：自杀。</li></ol></li><li>我不好；你也不好</li></ol><blockquote><p>NIGYYSOB: Now I’ve Got You, You Son of Bitch.</p></blockquote><p>利于理解，请在脑海中想象上北（我好），下南（我不好），左西（你不好），右东（你好）。</p><p>一旦我们在童年决定用哪种态度和观点，我们就会在随后的人生里始终坚持自己的选择。这些态度和观点，变成我们存在的底层架构。从那以后，我们便建构出一个世界，不断确认和支持这些信念和预期。也就是说，我们把自己的人生变成了一个<strong>“自证预言”</strong>。</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>这些理念不是用来给人贴标签，攻击羞辱别人的。<strong>它们只是用来理解行为的方法，尤其是理解我们自己的行为。</strong>由此就有了“情商”：</p><ol><li>有强大的自我意识，了解自己的情感。管理情绪，能从悲伤和不幸中重新振作。但也许最重要的是，控制冲动，也懂得延迟满足，从而避免轻率的决定和不妥的行为。</li><li>“情商”也和理解别人有关，“高情商”的人能辨识他人的感受（“共情”），通过理解和回应对方的情感，与他人建立良好的关系。</li></ol><p>情感智力让我们在自我成长和完善的路上走得更远，因为带我们从独立的个体走向共生的关系。</p><p><strong>独立性</strong>：隐含了做自己的自豪感，还包括独特的才能、与众不同的部分。独立的人时刻守护新发现的自主权，如同一个曾被殖民的国家重获自由一样。</p><p><strong>共生性</strong>：体现出成熟和自我接纳，还包括求同存异地接纳他人。共生性可以让我们在社交和工作上与别人有效联结，协同合作。</p><h2 id="摘抄"><a href="#摘抄" class="headerlink" title="摘抄"></a>摘抄</h2><ul><li>情绪是自我的核心。</li><li>要充分理解自我，唯有通过和自己的情绪做联结。</li><li>只要我们的情绪真正得到理解，就能有成长的机会。这就是真正在实践中学习。自出生开始，我们便是以这种方式学习任何一种重要的东西。</li></ul><hr><ul><li><p>你被称在天平里，显出你的亏欠。</p></li><li><p>男孩里的男人，男人里的男孩。</p></li><li><p>残暴命运如投石飞箭般地摧残。</p></li><li><p>每个人的早年经历本质上不同，所以每个人看到的都是一个不同的世界。<strong>外面的世界变成了在我这里的世界。</strong></p></li><li><p>谁在问你？是生命本身，特别是你体验到的生命</p></li></ul></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E5%A3%B0%E5%85%89/">声光</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E9%98%85%E8%AF%BB/">阅读</category>
      
      <category domain="https://www.ninojay.top/tags/%E6%91%98%E6%8A%84/">摘抄</category>
      
      <category domain="https://www.ninojay.top/tags/%E5%BF%83%E7%90%86%E5%AD%A6/">心理学</category>
      
      
      <comments>https://www.ninojay.top/2022/know-oneself/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>1频词</title>
      <link>https://www.ninojay.top/2022/1-frequency-words/</link>
      <guid>https://www.ninojay.top/2022/1-frequency-words/</guid>
      <pubDate>Fri, 25 Feb 2022 02:01:17 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h2 id="001-011"><a href="#001-011" class="headerlink" title="001~011"></a>001~011</h2><table><thead><tr><th>abdomen</th><th>abruptly</th><th>absolutely</th><th>absolutist</th><th>abstractly</th></tr></thead><tbody><tr><td>absurd</td><td>abundantly</td><td>abuse</td><td>accessibility</td><td>accommodate</td></tr><tr><td>accountability</td><td>accumulate</td><td>accusation</td><td>acutely</td><td>adaptation</td></tr><tr><td>adaptive</td><td>addictive</td><td>adherence</td><td>administrator</td><td>admirable</td></tr><tr><td>admiration</td><td>adolescence</td><td>adoptive</td><td>advancement</td><td>advantageous</td></tr><tr><td>adverse</td><td>advisory</td><td>advocacy</td><td>aesthetic</td><td>affectionate</td></tr><tr><td>affiliated</td><td>affiliation</td><td>affirmation</td><td>aggressively</td><td>aggressiveness</td></tr><tr><td>agitated</td><td>agonizing</td><td>agony</td><td>agreeable</td><td>airborne</td></tr><tr><td>alarmingly</td><td>allegation</td><td>ally</td><td>alteration</td><td>alternatively</td></tr><tr><td>ambiguity</td><td>amiable</td><td>amplify</td><td>analogous</td><td>analytics</td></tr><tr><td>analytically</td><td>ancestral</td><td>anchor</td><td>anecdotal</td><td>anecdote</td></tr><tr><td>anticipation</td><td>antique</td><td>applaud</td><td>appraisal</td><td>apprehension</td></tr><tr><td>apprenticeship</td><td>approachable</td><td>appropriately</td><td>apt</td><td>arbitrary</td></tr><tr><td>archive</td><td>arguably</td><td>arrogance</td><td>arrogant</td><td>articulate</td></tr><tr><td>artifact</td><td>assault</td><td>assembly</td><td>assimilate</td><td>assimilative</td></tr><tr><td>associative</td><td>assurance</td><td>athletic</td><td>attendant</td><td>attributable</td></tr><tr><td>audit</td><td>automotive</td><td>aviation</td><td>avoidance</td><td>bait</td></tr><tr><td>banqueting</td><td>baseless</td><td>beam</td><td>bedrock</td><td>belongings</td></tr><tr><td>bend</td><td>benign</td><td>bestseller</td><td>beverage</td><td>bewildering</td></tr><tr><td>bidder</td><td>biographer</td><td>biomedical</td><td>biotechnology</td><td>bitter</td></tr><tr><td>bizarre</td><td>blacken</td><td>blaze</td><td>bloody</td><td>blossom</td></tr><tr><td>blueprint</td><td>blunt</td><td>boldness</td><td></td><td></td></tr></tbody></table><h2 id="012～023"><a href="#012～023" class="headerlink" title="012～023"></a>012～023</h2><table><thead><tr><th>bombing</th><th>boot</th><th>brainstorm</th><th>bravery</th><th>breed</th></tr></thead><tbody><tr><td>bribe</td><td>broadcast</td><td>broaden</td><td>bruising</td><td>brutal</td></tr><tr><td>Buddhist</td><td>bureaucrat</td><td>bureaucracy</td><td>burnable</td><td>bypass</td></tr><tr><td>cable</td><td>campaigner</td><td>canal</td><td>capability</td><td>carefree</td></tr><tr><td>casualness</td><td>Catholic</td><td>causality</td><td>celebration</td><td>cement</td></tr><tr><td>census</td><td>centrepiece</td><td>ceremonial</td><td>certificate</td><td>characterization</td></tr><tr><td>charitably</td><td>chatter</td><td>cheerfully</td><td>cheerfulness</td><td>cherish</td></tr><tr><td>chronological</td><td>citation</td><td>citizenry</td><td>citizenship</td><td>clarify</td></tr><tr><td>cleanser</td><td>clergyman</td><td>clinical</td><td>cloak</td><td>clumsy</td></tr><tr><td>coder</td><td>coexistence</td><td>coherence</td><td>collaborate</td><td>collaboratively</td></tr><tr><td>collectively</td><td>colonialism</td><td>colonist</td><td>combative</td><td>commemorate</td></tr><tr><td>commercially</td><td>commonplaceness</td><td>communist</td><td>compact</td><td>companionship</td></tr><tr><td>comparative</td><td>compensatory</td><td>competence</td><td>competitiveness</td><td>complement</td></tr><tr><td>complimentary</td><td>compose</td><td>composite</td><td>comprise</td><td>compulsory</td></tr><tr><td>computational</td><td>computing</td><td>concede</td><td>conceivably</td><td>concession</td></tr><tr><td>concisely</td><td>confer</td><td>conference</td><td>confirmation</td><td>conform</td></tr><tr><td>confrontation</td><td>confusedly</td><td>confusion</td><td>conquer</td><td>conspiracy</td></tr><tr><td>constancy</td><td>constitutionality</td><td>constructive</td><td>consultancy</td><td>consultant</td></tr><tr><td>consumerism</td><td>contemptible</td><td>contextual</td><td>contextualize</td><td>continental</td></tr><tr><td>contingent</td><td>continual</td><td>continuance</td><td>continuity</td><td>contractor</td></tr><tr><td>contributor</td><td>contributory</td><td>controllable</td><td>controversialist</td><td>conveyor</td></tr><tr><td>convict</td><td>convincingly</td><td>copyright</td><td>correction</td><td>correspondent</td></tr><tr><td>corruptive</td><td>costless</td><td>counsel</td><td>counselor</td><td>counteraction</td></tr><tr><td>counterintuitive</td><td>countless</td><td>craftsman</td><td>credential</td><td></td></tr></tbody></table><h2 id="024～035"><a href="#024～035" class="headerlink" title="024～035"></a>024～035</h2><table><thead><tr><th>creep</th><th>crude</th><th>cruise</th><th>crushingly</th><th>crust</th></tr></thead><tbody><tr><td>crystallize</td><td>cultivation</td><td>curiously</td><td>customize</td><td>dampen</td></tr><tr><td>darkness</td><td>dazzlingly</td><td>decent</td><td>deceptiveness</td><td>decider</td></tr><tr><td>decisive</td><td>deduce</td><td>deductible</td><td>deed</td><td>deepen</td></tr><tr><td>defendable</td><td>defensible</td><td>deference</td><td>deferential</td><td>deletion</td></tr><tr><td>deliciously</td><td>demonstration</td><td>demoralization</td><td>denote</td><td>dentistry</td></tr><tr><td>dependence</td><td>depiction</td><td>depredation</td><td>deprivation</td><td>deputy</td></tr><tr><td>descend</td><td>despair</td><td>desperation</td><td>despise</td><td>destination</td></tr><tr><td>destiny</td><td>destruction</td><td>detection</td><td>detector</td><td>deter</td></tr><tr><td>developer</td><td>devise</td><td>diabetes</td><td>diagnosis</td><td>diagnostic</td></tr><tr><td>diffusionist</td><td>digitalized</td><td>diligence</td><td>dilute</td><td>dimensional</td></tr><tr><td>diplomacy</td><td>diplomat</td><td>diplomatic</td><td>directive</td><td>disagreeable</td></tr><tr><td>disapprove</td><td>disassemble</td><td>disbelief</td><td>discernible</td><td>disciplinary</td></tr><tr><td>disclaim</td><td>disclosure</td><td>discontent</td><td>discoverer</td><td>discriminate</td></tr><tr><td>disgusting</td><td>dishonesty</td><td>disorganized</td><td>disperse</td><td>displace</td></tr><tr><td>displeasure</td><td>disposable</td><td>disposal</td><td>disputable</td><td>dissatisfied</td></tr><tr><td>dissolve</td><td>distinctively</td><td>distressed</td><td>diversify</td><td>domestically</td></tr><tr><td>donation</td><td>doubter</td><td>downgrade</td><td>drain</td><td>dramatist</td></tr><tr><td>duplicate</td><td>duplication</td><td>duration</td><td>dweller</td><td>dynamic</td></tr><tr><td>dynamism</td><td>earnestness</td><td>eclipse</td><td>ecologically</td><td>editorial</td></tr><tr><td>efficiently</td><td>electronically</td><td>elevation</td><td>embark</td><td>embed</td></tr><tr><td>emigrant</td><td>emigration</td><td>eminent</td><td>empathy</td><td>empower</td></tr><tr><td>empowerment</td><td>emptiness</td><td>encyclopedia</td><td>endangered</td><td>endlessly</td></tr><tr><td>endorse</td><td>endurance</td><td>engrave</td><td>enlarge</td><td>enlightenment</td></tr></tbody></table><h2 id="036～047"><a href="#036～047" class="headerlink" title="036～047"></a>036～047</h2><table><thead><tr><th>enormously</th><th>enrage</th><th>enthusiastically</th><th>entitlement</th><th>entity</th></tr></thead><tbody><tr><td>entrepreneurship</td><td>envisage</td><td>erect</td><td>erroneous</td><td>escapism</td></tr><tr><td>ethic</td><td>ethically</td><td>ethnicity</td><td>evaporate</td><td>evoke</td></tr><tr><td>excessively</td><td>exclaim</td><td>exclusion</td><td>exclusionary</td><td>execution</td></tr><tr><td>exemplify</td><td>exhaustion</td><td>experimentation</td><td>expire</td><td>explainable</td></tr><tr><td>expressly</td><td>exquisitely</td><td>extinct</td><td>extraction</td><td>fabulous</td></tr><tr><td>faint</td><td>falsehood</td><td>fantasize</td><td>farsighted</td><td>fascination</td></tr><tr><td>fascism</td><td>fatal</td><td>faulty</td><td>fearful</td><td>fearsome</td></tr><tr><td>feat</td><td>federation</td><td>fertilizer</td><td>feverish</td><td>filer</td></tr><tr><td>finalize</td><td>fixation</td><td>fleeting</td><td>flexibly</td><td>fluency</td></tr><tr><td>fondness</td><td>forecaster</td><td>foresight</td><td>foresighted</td><td>forester</td></tr><tr><td>formidable</td><td>forthcoming</td><td>framer</td><td>freethinking</td><td>frequency</td></tr><tr><td>fruitful</td><td>fruitless</td><td>furnish</td><td>fuse</td><td>fuss</td></tr><tr><td>gaping</td><td>gateway</td><td>gathering</td><td>gear</td><td>geneticist</td></tr><tr><td>genuinely</td><td>geographical</td><td>giggle</td><td>glamorous</td><td>glow</td></tr><tr><td>glowingly</td><td>goallessness</td><td>gossip</td><td>grace</td><td>grader</td></tr><tr><td>grammatical</td><td>graveyard</td><td>grimly</td><td>groan</td><td>gross</td></tr><tr><td>guardianship</td><td>guesswork</td><td>guidance</td><td>habitation</td><td>habitual</td></tr><tr><td>hamper</td><td>harden</td><td>hardship</td><td>harmony</td><td>harness</td></tr><tr><td>hasten</td><td>hawk</td><td>hazard</td><td>hedge</td><td>hesitancy</td></tr><tr><td>hesitant</td><td>hesitate</td><td>hindrance</td><td>horrified</td><td>hospitality</td></tr><tr><td>hostage</td><td>humbly</td><td>humiliating</td><td>humiliation</td><td>humility</td></tr><tr><td>hurriedly</td><td>husbandry</td><td>idealized</td><td>idealism</td><td>idealist</td></tr><tr><td>ideally</td><td>identical</td><td>ideological</td><td></td><td></td></tr></tbody></table><h2 id="048～059"><a href="#048～059" class="headerlink" title="048～059"></a>048～059</h2><table><thead><tr><th>illegally</th><th>illogical</th><th>illuminate</th><th>imaginable</th><th>immensely</th></tr></thead><tbody><tr><td>immerse</td><td>immoral</td><td>impair</td><td>impart</td><td>impartially</td></tr><tr><td>imperative</td><td>imperfect</td><td>implausible</td><td>implementation</td><td>implicitly</td></tr><tr><td>imprison</td><td>inability</td><td>inaccessible</td><td>inarticulate</td><td>inbox</td></tr><tr><td>incidence</td><td>incompatible</td><td>incompetence</td><td>incompetent</td><td>inconceivable</td></tr><tr><td>incorporate</td><td>indefensible</td><td>indefinite</td><td>indication</td><td>indirectly</td></tr><tr><td>individualism</td><td>individually</td><td>induce</td><td>inducement</td><td>indulgent</td></tr><tr><td>industriousness</td><td>ineffectiveness</td><td>inefficiency</td><td>inefficient</td><td>inequity</td></tr><tr><td>inescapably</td><td>inexcusable</td><td>inexperienced</td><td>inexpressible</td><td>infect</td></tr><tr><td>inflationary</td><td>informal</td><td>informality</td><td>infrequent</td><td>ingredient</td></tr><tr><td>inhale</td><td>inheritor</td><td>initiator</td><td>inject</td><td>innovational</td></tr><tr><td>innovatively</td><td>innovator</td><td>input</td><td>insensitivity</td><td>insider</td></tr><tr><td>insightful</td><td>insincere</td><td>inspiration</td><td>instability</td><td>installation</td></tr><tr><td>instantaneous</td><td>instill</td><td>instructive</td><td>instrumentalist</td><td>instrumentally</td></tr><tr><td>intact</td><td>intangible</td><td>integration</td><td>intellectualize</td><td>intensely</td></tr><tr><td>intensive</td><td>intentional</td><td>intently</td><td>interdependence</td><td>interim</td></tr><tr><td>interior</td><td>intermittently</td><td>interrelation</td><td>interviewee</td><td>intimacy</td></tr><tr><td>intimation</td><td>intimidate</td><td>intimidation</td><td>intriguing</td><td>intrinsically</td></tr><tr><td>intrude</td><td>intrusion</td><td>intrusive</td><td>intrusiveness</td><td>invalid</td></tr><tr><td>inventive</td><td>inventiveness</td><td>inventor</td><td>inventory</td><td>investigator</td></tr><tr><td>involuntarily</td><td>ironically</td><td>irrational</td><td>irregular</td><td>irrelevant</td></tr><tr><td>irrepressible</td><td>irritate</td><td>isolation</td><td>issuer</td><td>jointly</td></tr><tr><td>lameness</td><td>landmark</td><td>lawless</td><td>lawmaker</td><td>layout</td></tr><tr><td>league</td><td>liability</td><td>liberalize</td><td>liberalism</td><td>lifeblood</td></tr></tbody></table><h2 id="060～071"><a href="#060～071" class="headerlink" title="060～071"></a>060～071</h2><table><thead><tr><th>linger</th><th>linguistic</th><th>linguistics</th><th>livestock</th><th>lodging</th></tr></thead><tbody><tr><td>logicality</td><td>logician</td><td>longstanding</td><td>loosen</td><td>lump</td></tr><tr><td>luxuriant</td><td>magically</td><td>magnetic</td><td>mammal</td><td>manifestation</td></tr><tr><td>manual</td><td>marital</td><td>masculine</td><td>massacre</td><td>mayoral</td></tr><tr><td>meaningfully</td><td>meaningless</td><td>measurable</td><td>mechanization</td><td>mentality</td></tr><tr><td>mercilessly</td><td>mercy</td><td>messy</td><td>methodically</td><td>methodology</td></tr><tr><td>mightily</td><td>mighty</td><td>milestone</td><td>millennium</td><td>mindless</td></tr><tr><td>misadjusted</td><td>misapply</td><td>miserably</td><td>misguide</td><td>misguided</td></tr><tr><td>mispredict</td><td>mixture</td><td>moan</td><td>mobilize</td><td>mobility</td></tr><tr><td>moderately</td><td>modernization</td><td>modernism</td><td>moisture</td><td>monotonous</td></tr><tr><td>monumental</td><td>moralist</td><td>mortal</td><td>mount</td><td>mournful</td></tr><tr><td>mourning</td><td>multibillion</td><td>multidimensional</td><td>multilingual</td><td>multiply</td></tr><tr><td>multitask</td><td>murmur</td><td>muscular</td><td>mutually</td><td>narrative</td></tr><tr><td>naturalization</td><td>naturalist</td><td>naturalistic</td><td>navigation</td><td>necessitate</td></tr><tr><td>needlessness</td><td>needy</td><td>negligence</td><td>nerve</td><td>neurological</td></tr><tr><td>neurologist</td><td>neurology</td><td>newborn</td><td>newlywed</td><td>newsworthy</td></tr><tr><td>nitrogen</td><td>noisiness</td><td>nonagricultural</td><td>noncommercial</td><td>noncontroversial</td></tr><tr><td>noneconomic</td><td>nuisance</td><td>numerous</td><td>nutrient</td><td>objectively</td></tr><tr><td>observable</td><td>observatory</td><td>obstruct</td><td>oceanic</td><td>offset</td></tr><tr><td>omission</td><td>oppression</td><td>oppressive</td><td>opt</td><td>orchestral</td></tr><tr><td>orderly</td><td>organizational</td><td>organism</td><td>oriental</td><td>ornament</td></tr><tr><td>outlook</td><td>outperform</td><td>outrage</td><td>outset</td><td>outsize</td></tr><tr><td>overfish</td><td>overhead</td><td>overjoyed</td><td>overprotective</td><td>overreact</td></tr><tr><td>overreaction</td><td>oversize</td><td>overtime</td><td>oxide</td><td>packet</td></tr></tbody></table><h2 id="072-083"><a href="#072-083" class="headerlink" title="072~083"></a>072~083</h2><table><thead><tr><th>panorama</th><th>paradoxically</th><th>parcel</th><th>partial</th><th>partiality</th></tr></thead><tbody><tr><td>particularist</td><td>passionately</td><td>penalize</td><td>pensioner</td><td>pepper</td></tr><tr><td>perceptive</td><td>perfection</td><td>performative</td><td>periodically</td><td>permanently</td></tr><tr><td>permeate</td><td>perpetual</td><td>perplex</td><td>persistently</td><td>personalized</td></tr><tr><td>pharmaceutical</td><td>physician</td><td>physiologist</td><td>physiology</td><td>plague</td></tr><tr><td>plaster</td><td>plea</td><td>plug</td><td>plunge</td><td>poisonous</td></tr><tr><td>poke</td><td>policymaking</td><td>populate</td><td>portable</td><td>postmodern</td></tr><tr><td>powerhouse</td><td>pray</td><td>prayer</td><td>preach</td><td>precedent</td></tr><tr><td>precise</td><td>precision</td><td>precondition</td><td>preface</td><td>preferably</td></tr><tr><td>preside</td><td>prestigious</td><td>pretend</td><td>priest</td><td>primitive</td></tr><tr><td>privately</td><td>probe</td><td>problematic</td><td>procedurally</td><td>processor</td></tr><tr><td>professionalisation</td><td>professorship</td><td>proficient</td><td>profitably</td><td>programmer</td></tr><tr><td>prohibition</td><td>prolong</td><td>prominence</td><td>promoter</td><td>promptly</td></tr><tr><td>pronouncement</td><td>propaganda</td><td>propagate</td><td>propagation</td><td>protein</td></tr><tr><td>proverb</td><td>prudence</td><td>prudently</td><td>psychologically</td><td>publicize</td></tr><tr><td>puff</td><td>punch</td><td>punctuality</td><td>punctuation</td><td>purchaser</td></tr><tr><td>purifier</td><td>purposelessness</td><td>quickness</td><td>quotation</td><td>racial</td></tr><tr><td>raid</td><td>rap</td><td>rationalization</td><td>rationally</td><td>readable</td></tr><tr><td>readmit</td><td>reaffirm</td><td>realism</td><td>reasonableness</td><td>reawaken</td></tr><tr><td>rebalance</td><td>rebel</td><td>recite</td><td>reckless</td><td>reclassify</td></tr><tr><td>reconstruct</td><td>recount</td><td>recreate</td><td>recreation</td><td>rectify</td></tr><tr><td>redirect</td><td>redirection</td><td>rediscover</td><td>reductionism</td><td>refuge</td></tr><tr><td>refusal</td><td>regional</td><td>regularity</td><td>rein</td><td>relationally</td></tr><tr><td>relay</td><td>relevance</td><td>reliability</td><td>reliably</td><td>reluctantly</td></tr></tbody></table><h2 id="084～095"><a href="#084～095" class="headerlink" title="084～095"></a>084～095</h2><table><thead><tr><th>remake</th><th>remarkably</th><th>remedy</th><th>remodel</th><th>remold</th></tr></thead><tbody><tr><td>removal</td><td>renovation</td><td>repel</td><td>repertoire</td><td>replaceable</td></tr><tr><td>reportedly</td><td>representational</td><td>reproducibility</td><td>reproducible</td><td>reproductive</td></tr><tr><td>reputable</td><td>reschedule</td><td>resemblance</td><td>resent</td><td>reskill</td></tr><tr><td>resolute</td><td>restoration</td><td>restrain</td><td>retention</td><td>retrospect</td></tr><tr><td>rifle</td><td>rightfully</td><td>rigorous</td><td>rivalry</td><td>robust</td></tr><tr><td>rough</td><td>runaway</td><td>ruthless</td><td>sake</td><td>sarcastic</td></tr><tr><td>satire</td><td>satirist</td><td>saturate</td><td>savagely</td><td>scandal</td></tr><tr><td>scarce</td><td>scary</td><td>scattered</td><td>scenery</td><td>scent</td></tr><tr><td>scholarship</td><td>scholastic</td><td>scold</td><td>scrap</td><td>sculpture</td></tr><tr><td>seal</td><td>searing</td><td>selectively</td><td>seminar</td><td>sensitiveness</td></tr><tr><td>serially</td><td>sewing</td><td>shaky</td><td>sharply</td><td>sharpness</td></tr><tr><td>shatter</td><td>shipload</td><td>shorten</td><td>shorthand</td><td>shove</td></tr><tr><td>shrewd</td><td>shrug</td><td>signify</td><td>silliness</td><td>simplification</td></tr><tr><td>simulation</td><td>sin</td><td>singular</td><td>sip</td><td>skillful</td></tr><tr><td>skim</td><td>slowdown</td><td>slum</td><td>slump</td><td>sneak</td></tr><tr><td>socialization</td><td>soften</td><td>softener</td><td>solidarity</td><td>solvable</td></tr><tr><td>spacecraft</td><td>spacious</td><td>spammer</td><td>specialization</td><td>specialize</td></tr><tr><td>specialty</td><td>spectacle</td><td>sphere</td><td>spiritual</td><td>spite</td></tr><tr><td>spotlight</td><td>spy</td><td>stagnation</td><td>staircase</td><td>stalk</td></tr><tr><td>stance</td><td>standstill</td><td>staple</td><td>startling</td><td>statesman</td></tr><tr><td>steer</td><td>stereotyped</td><td>stir</td><td>storehouse</td><td>striking</td></tr><tr><td>strip</td><td>stroll</td><td>structural</td><td>stubbornly</td><td>subordinate</td></tr><tr><td>subsidize</td><td>substance</td><td>suburban</td><td></td><td></td></tr></tbody></table><h2 id="096～107"><a href="#096～107" class="headerlink" title="096～107"></a>096～107</h2><table><thead><tr><th>suck</th><th>sue</th><th>sufficiently</th><th>sugary</th><th>suggestive</th></tr></thead><tbody><tr><td>suicide</td><td>suitability</td><td>suite</td><td>summon</td><td>superstition</td></tr><tr><td>supplier</td><td>surplus</td><td>suspension</td><td>swallow</td><td>swamp</td></tr><tr><td>swell</td><td>symbolically</td><td>symphony</td><td>synthetic</td><td>systematicness</td></tr><tr><td>systemic</td><td>tangible</td><td>tedious</td><td>telecommunication</td><td>temper</td></tr><tr><td>temperament</td><td>tentative</td><td>termination</td><td>terminator</td><td>terrific</td></tr><tr><td>terrifying</td><td>terror</td><td>terrorism</td><td>terrorist</td><td>theft</td></tr><tr><td>theoretical</td><td>theorize</td><td>therapist</td><td>therapy</td><td>thinness</td></tr><tr><td>thoughtless</td><td>thread</td><td>threshold</td><td>thrift</td><td>thrill</td></tr><tr><td>tick</td><td>tile</td><td>timber</td><td>timeless</td><td>timely</td></tr><tr><td>timescale</td><td>timetable</td><td>tissue</td><td>toil</td><td>toothless</td></tr><tr><td>traceable</td><td>tragic</td><td>trainee</td><td>transcendence</td><td>transferable</td></tr><tr><td>transparent</td><td>tremble</td><td>tribute</td><td>triviality</td><td>troublemaker</td></tr><tr><td>troublesome</td><td>tuck</td><td>unaccountably</td><td>unaffected</td><td>unaffordable</td></tr><tr><td>unanimous</td><td>unauthorized</td><td>unavoidable</td><td>unaware</td><td>unbalanced</td></tr><tr><td>unbearable</td><td>unchangeable</td><td>uncommon</td><td>uncompetitve</td><td>uncontrollable</td></tr><tr><td>uncontrolled</td><td>uncover</td><td>uncrowded</td><td>undercover</td><td>underestimation</td></tr><tr><td>undergo</td><td>understandably</td><td>undeveloped</td><td>undivided</td><td>undo</td></tr><tr><td>undoubted</td><td>uneconomic</td><td>uneven</td><td>unexpectedly</td><td>unfairly</td></tr><tr><td>unfairness</td><td>unfeasible</td><td>unflattering</td><td>unforeseen</td><td>unfunded</td></tr><tr><td>ungrateful</td><td>uniformity</td><td>uniformly</td><td>unintentional</td><td>unjust</td></tr><tr><td>unknowable</td><td>unlearned</td><td>unmentioned</td><td>unmercifully</td><td>unmistakable</td></tr><tr><td>unnamed</td><td>unpredictable</td><td>unrealistically</td><td>unrecognized</td><td>unreliability</td></tr><tr><td>unremarked</td><td>unresponsive</td><td>unstoppable</td><td>unsuitable</td><td>unsurpassed</td></tr></tbody></table><h2 id="108～112"><a href="#108～112" class="headerlink" title="108～112"></a>108～112</h2><table><thead><tr><th>unsurprisingly</th><th>unsustainability</th><th>untested</th><th>unthinkable</th><th>unthinkingly</th></tr></thead><tbody><tr><td>unwilling</td><td>unwittingly</td><td>unworthy</td><td>upside</td><td>usage</td></tr><tr><td>usefulness</td><td>utmost</td><td>utopia</td><td>utterly</td><td>vacancy</td></tr><tr><td>vacuum</td><td>variously</td><td>vastly</td><td>veg</td><td>verbally</td></tr><tr><td>veteran</td><td>veto</td><td>vicious</td><td>vigorously</td><td>violently</td></tr><tr><td>visibly</td><td>visionary</td><td>vocal</td><td>vulnerability</td><td>wasteful</td></tr><tr><td>weave</td><td>wherever</td><td>whip</td><td>whisper</td><td>wholeheartedly</td></tr><tr><td>wilderness</td><td>willfully</td><td>willfully</td><td>willingness</td><td>withstand</td></tr><tr><td>workout</td><td>worktable</td><td>worldly</td><td>worrisome</td><td>worship</td></tr><tr><td>worshipper</td><td>wrap</td><td>wreck</td><td></td><td></td></tr></tbody></table></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E5%A4%96%E8%AF%AD/">外语</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%8B%B1%E8%AF%AD/">英语</category>
      
      
      <comments>https://www.ninojay.top/2022/1-frequency-words/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>谢谢你，红色的河</title>
      <link>https://www.ninojay.top/2022/red-river/</link>
      <guid>https://www.ninojay.top/2022/red-river/</guid>
      <pubDate>Sat, 12 Feb 2022 12:56:45 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width="100%" height="86" src="//music.163.com/outchain/player?type=2&amp;id=1464928350&amp;auto=1&amp;height=66"></iframe><br><center>世有无望的福歌</center><br><center>亦有无望的祸责</center><br><center>远风吹着又吹过</center><br><center>吹不动这红色的河</center><br><p>昨天心情不太好，找了家网吧，差不多有几年没有一个人去网吧了，游戏更加早已没有像读书时候那么沉迷了。昨天只想通过已经很久没玩的网络游戏逃离逃避一下现实。</p><p>打开音乐软件，实际上我盯着比记忆里居然还花哨的网吧软件界面细细地找，才找到我想使用的音乐软件。戴上网吧厚重的耳机，进入了游戏。</p><p>音乐软件随机推到了《红色的河》，第一遍听到一半，我渐渐把游戏的背景音乐调低了。</p><p>第一遍听完，我不顾游戏进程，反正也是来散心的，切到音乐软件，重新播放了一遍《红色的河》。</p><p>重新播放了第三遍</p><p>第四遍</p><p>第五遍</p><p>第六遍</p><p>…</p><p>到底有多少遍呢，直到屏幕上提醒我所剩时间只有半小时。</p><p>我最喜欢 孔一蝉 给这首歌唱的最后一句：</p><p>“飘摇 在这 红色的河”。</p><hr><p>我昨天差一点重新回到抑郁。熬过了昨天，我现在静静地想着，我意识到我还是脆弱不堪的。自以为修复好了一切，自以为周围的阳光洒在了我的身上。其实还是太低估了自己的消极。</p><p>仅仅是一句话，仅仅是一个表情，仅仅是一次失误。我刻意给自己修筑的精神城堡就坍塌了。我活的还是那么被动，懦弱，不堪，尽管大家都说我正在活出了自我。哈哈哈。</p><p>修筑的精神城堡的地基支撑着我熬过了昨天，其实还有前天，大前天。这个地基让我听到父亲发来语音：“看你离开家的时候不是很开心，情绪不是很好。”</p><p>我能够面无表情地回复：“哈哈哈，没有，我得调整状态好好学习了，嘻嘻哈哈怎么能行。”</p><p>同样的“哈哈哈”，那两天，我在屏幕背后冷静地给到了所有需要安慰缓和的人。我想，我很有可能都得这么“哈哈哈”生活下去了，不然大家就看不到我了，算是我给自己的救命稻草。</p><p>哈哈哈。</p><p>哈哈哈。</p><p>哈哈哈。</p><p>我想起了一些事。我不愿意再说。我能改变的只有我。确实只有我。他们都不想不愿懒于改变。在这一层面，他们比我病的更重。我意识到他们比我病的更重的这一刻，我释然了，也安心地让自己病了。就这样哈哈哈下去吧。</p><p>听着《红色的河》，看着《红色的河》的歌词，记得早已不用的qq签名里，我以前写过这样一句话：</p><center>阵阵晚风去了又来，</center><br><center>次次日出循环往复。</center><br><br><br><br><br><br><br></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/">情绪</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      <category domain="https://www.ninojay.top/tags/%E6%AD%8C%E6%9B%B2/">歌曲</category>
      
      
      <comments>https://www.ninojay.top/2022/red-river/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>《哥儿》夏目漱石：由读后感延伸到自我思辩</title>
      <link>https://www.ninojay.top/2022/Brother/</link>
      <guid>https://www.ninojay.top/2022/Brother/</guid>
      <pubDate>Wed, 09 Feb 2022 08:01:25 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>《哥儿》的作者是夏目漱石（日），《蛤蟆先生去看心理医生》的作者是罗伯特·戴博德（英）</p><p>夏目漱石和川端康成一样，在我心中只是几本著名的书的作者，还没有真正在我身上产生什么影响。夏目漱石的代表作《我是猫》前几年有瞄过几眼，依稀记得开篇读到模仿自己是猫，云云周遭的生活，那天看不下去，紧接着就被阿来的《尘埃落定》吸引了。那个时候应该是刚上大学。</p><p>今年过年回家，习惯性逛逛书店。我的手中有了《哥儿》和《蛤蟆先生去看心理医生》。这两本书有个共同特点，简单易读。体现的方式不太一样，《哥儿》的简单易读在于整本书就只有巴掌大小，我可以随时放在衣服兜里面携带。《蛤蟆》的简单易读在于故事的简洁：通过小动物的故事讲述（心理学）自我心理的探寻与拯救自我的过程。</p><p>简单易读，就是我购买这两本书的原因。不妨碍是好作品～</p><p>《哥儿》讲述的故事：按照原文第一句话：<em>我是个天生的冒失鬼，从小总是吃亏。</em>我还特别爱逞能，在家中不被父母和哥哥待见，在家里做工的阿清婆私下却意外地给予我无限的关爱让我心中有了温柔的地方。随着世事变故，父母突然的离去，哥哥选择和我分家，给我父母遗产的一部分后说今后不再管我。我倒没有特别伤感，只是有些不知所措。而阿清婆还一直管我叫少爷，相信我能成就一番大事，接她回去继续工作。我不明白为什么阿清婆在我小时候就这么相信我。我拿着钱简单思考了一下，选择了自费上学，随后安稳毕业，意外接受了一个偏远地区学校的数学老师职位。阿清婆得知我要去很远的地方，很担心我，也同时叫我不要忘了她，挣到了钱回去接她。我上车的时候，看见阿清婆送我，我的心里产生了伤心。</p><p>来到这个学校的一切经历都让我觉得这里的一切都披着一层别扭。我是个天生的冒失鬼，从而被教导主任影响了自己的判断，导致我对数学教学组长的误会（以为是他恶意怂恿学生在我身上使坏），与他一开始良好的关系破裂。又因为我逞能，识破教导主任的为人但还是没有立马和组长修复关系。终于在我又得知教导主任虽然披着美丽的红衬衣，却狡猾的心去给老实的同事使辫子后，和组长同样义愤填膺得以修复了关系。我更加对像狐狸一样狡猾的校长的不作为感到不快，学生的错误他偏偏要说是自己的责任，教导主任自然是跟着他说，更别提一直跟在教导主任旁边拍马屁的二流子老师了。我觉得这些人的为人连阿清婆都比不上，阿清婆至少真诚正直善良。我最终和有义气的组长大闹一番后离开了这个污秽之地。我回到东京马上看望了阿清婆，随后在铁路公司当上了一名技术员，阿清婆很满意。可惜她很快就离世了，她离去之前叮嘱我把她埋在我家的寺院里，好在地下好好等着我这个小少爷。</p><hr><p>至此，我算是踏入了夏目漱石的一隅。昨天紧接着找了家书店，把夏目漱石的《心》也看了。忘我地阅读，不时地挂念着急把一本书看完，这种感觉我已经很久都没有过了。《哥儿》故事情节中吸引我的，无疑是契合我现在的处境的。一个刚毕业读过一点点闲书，直言自己冒失，逞能，但还算真诚地来到整个社会。其实倒没有一开始故作呻吟自己的失意，自己种种不满，而是在社会乱象中的一幅幅丑陋画卷强制性铺在眼前的时候，不免心生气愤。因为我是个冒失鬼嘛，我得冒失啊，高情商的那一套我无法理解且也学不会，且也觉得虚伪。</p><p>《哥儿》主人公贯彻了自己的冒失，最后远离了那所学校，那群人。正是因为这个原因，主人公成为了主人公吧。那芸芸众生之中，被社会沼泽卷入其中，立马跟着潮涌扭动的，快速满意地沉沦，成为了沼泽的一部分，巩固了沼泽的形成；双腿挣扎过，最终还是没有力气的，总算还是沉沦其中，同时后悔呀，没有早一点接受被动，不然还能早一点占一个位置；一生都在挣扎的人呢，要么大抵死在沼泽层中，一半的身体还能呼吸空气，感受阳光；或者拥抱自由，不屑于回头吧；</p><p>从始至终都不挣扎的人，是不值得一瞥的。</p><p>我现在有很多很多的想法。</p><p>核心讨论疑虑的点是<em><strong>情绪的表达</strong>和</em><em>客观事实的辩驳**。</em>先说“客观事实的辩驳”好了，有智识的人，或者说有思想的人，都不会愿意舍弃自己的理性判断吧。当别人提出一个自己认知明显觉得错误（注意，只是基于自己的认知）的观点，要不要立马进行纠正呢？</p><p>“纠正”这一行为延展下去，是辩论，或者，妥协。</p><p>这一句话又有很多值得提前的定义。辩论，是理想化的双方理性地就事论事，结果是双方达成一个共识，一方理解了另一方纠正的点在于什么地方并且予以接受，或者是双方都接受了对方的观点。妥协，在于实际上暗含一方气愤不已（不论情绪是否外放），当下只是假意妥协。</p><p>从还没引入任何其他设定的情况来看，“纠正”延展下去的不论是“辩论”还是“妥协”，都不是一件孰好孰坏的事，都只是一种可能的发展的方向。</p><p>再来引入交谈双方的身份，场景。双方假如是在学校课堂上，公众社会中的谈判会议，开会场面上，那必然“辩论”是最优且是大家都愿意看到的局面。可以说，公众社会赋予的身份上，“纠正”应该走向“辩论”，是人之所向。</p><p>除此之外，我们的身份就是私人性质的了。亲属关系，配偶关系，朋友关系，交往深远的长辈、晚辈关系。除此之外还有什么私人性质的关系吗？总而言之，这些私人性质上的“纠正”行为，引出了暧昧的“妥协”。</p><p>按照“纠正”的客观道理，不论双方是否是私人性质身份，还是公众赋予身份，都应该走向“辩论”，我看到社会上许许多多的所谓“愤青”也都是这样做的，正如《哥儿》中的主人公踏入社会也是如此，我在互联网大厂上班时也遇到过这样的人。但是我觉得这是一种偷懒的做法，这类人只关注了”辩论“的正确，却失掉了身为人的情感力量，他们其实不明白”妥协“的力量，害怕且不愿意了解一下”妥协“，说到根源，他们只是害怕自己。他们自认为强势的无差别”辩论“能够使自己变得坚固，可是害怕柔软的人是无法变得坚固的。</p><p>我想做如下说明：工作身份上，“纠正”-&gt;“辩论”-&gt;“事情得到解决”。私人相处上，“纠正”-&gt;“辩论”得到的结果往往都会感到这人有些不好相处吧。我们都想被自己在乎的人喜欢，让自己讨厌的人生气。那“妥协”一定是产生于在乎之人身上，如果说把”妥协“用在了自己讨厌之人身上，完完全全是懦弱的行为。</p><p>来到这一步，又明白了一些。公众身份上，”纠正“-&gt;”辩论“-&gt;完全应该。私人性质上，”纠正“-&gt;”辩论“-&gt;对于自己讨厌的人身上完完全全应该。（这里还是得补充一句，既然和讨厌之人都处于”纠正“的场合了，想必场面有些一触即发之味）。</p><p>剩下的就是对于自己在乎的人，那么”纠正“-&gt;是否”妥协“，还得进一步说明。“纠正”-&gt;”妥协”-&gt;结果是不是就完全是好的呢？实际上很容易联想到自己的人生经历，也不尽然。</p><p>其一的情况是妥协方暗含的温柔，这份温柔把无奈情绪隐藏在妥协方的心中，这样的温柔往往能够持续很多很多次，但一生都妥协下去，这样对人温柔的要求未免太理想化了一些，还是会有“纠正”-&gt;”辩论”的那一次，那么之前所有的”妥协“都不再是”妥协“，都会成为了这一”辩论“的助燃剂。</p><p>其二的情况是妥协方对被妥协方的观点无视，完完全全对方的道理离经叛道或者没有立足之点，为了杜绝”辩论“，避免浪费口舌。</p><p>现在的关注点就在于，和在乎之人的“纠正”你是否想把其变为未来可能的助燃剂，还是无视对方的观点。我本来还想说点，什么，来到了这一步，其实对目前我这个年纪来说，很难再引申下去了。既然是自己在乎的人，那么妥协就显得温柔。与之联想到未来的情况实在是没必要继续探讨。我想回到上一步。</p><p>究竟什么情况下，我们会对在乎的人做出，“纠正”-&gt;“辩论”，而不是“纠正”-&gt;“妥协”呢？这个问题到显得容易想一些。那便是私人性质的其中一方，明显地觉察到对方的观点是错误，黑暗，且如果不进行纠正，那么就对其在乎的人产生不好的影响。那么，其中一方就选择了“纠正”-&gt;“辩论”。除了这些观点，与在乎之人剩下的观点只剩无伤大雅，可以说鸡毛蒜皮了。那么就可以大方地选择“纠正”-&gt;“妥协”。</p><p>综上所述：</p><p>“纠正”-&gt;“辩论”：社会赋予公众身份上；与讨厌之人恶劣场合上；明确感知到在乎之人观点黑暗上</p><p>“纠正”-&gt;“妥协”：在乎之人除了黑暗观点之外的温柔上</p><hr><p>本来想写的是《哥儿》和《蛤蟆》的读后感，不知不觉就写成这样子。后面关于“纠正”延伸为“辩论”还是“妥协”的讨论的产生，仔细想来，应该就是因为《哥儿》中“我”在“一直在“纠正”-&gt;“辩论”，社会上甚至家庭中几乎没任何人让“我”觉得应该“妥协”一下，除了阿清婆。阿清婆是”我“唯一的“妥协”，“我”感激且珍惜关于她的一切。</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E5%A3%B0%E5%85%89/">声光</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E9%98%85%E8%AF%BB/">阅读</category>
      
      <category domain="https://www.ninojay.top/tags/%E5%B0%8F%E8%AF%B4/">小说</category>
      
      
      <comments>https://www.ninojay.top/2022/Brother/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>简单词</title>
      <link>https://www.ninojay.top/2022/simple-words/</link>
      <guid>https://www.ninojay.top/2022/simple-words/</guid>
      <pubDate>Fri, 04 Feb 2022 08:08:46 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h2 id="A"><a href="#A" class="headerlink" title="A"></a>A</h2><table><thead><tr><th>A</th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td>achiever</td><td>acre</td><td>activist</td><td>adjective</td><td>admire</td><td>adulthood</td></tr><tr><td>afraid</td><td>agency</td><td>agent</td><td>aid</td><td>aide</td><td>aimlessly</td></tr><tr><td>airbus</td><td>airy</td><td>along</td><td>alongside</td><td>alphabet</td><td>amid</td></tr><tr><td>among</td><td>amount</td><td>amusing</td><td>angle</td><td>arc</td><td>are</td></tr><tr><td>arrival</td><td>arrow</td><td>avenue</td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table><h2 id="B"><a href="#B" class="headerlink" title="B"></a>B</h2><table><thead><tr><th>B</th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td>backward</td><td>backyard</td><td>bacon</td><td>bacterial</td><td>ballet</td><td>band</td></tr><tr><td>barber</td><td>bay</td><td>beacon</td><td>beard</td><td>belt</td><td>Bible</td></tr><tr><td>bill</td><td>billion</td><td>bimonthly</td><td>bin</td><td>biofuel</td><td>blanket</td></tr><tr><td>bleed</td><td>bless</td><td>block</td><td>blood</td><td>blow</td><td>bodily</td></tr><tr><td>boil</td><td>bold</td><td>bone</td><td>brand</td><td>bread</td><td>breast</td></tr><tr><td>bubble</td><td>buck</td><td>bud</td><td>bull</td><td>bullet</td><td>butter</td></tr><tr><td>butterfly</td><td>buzz</td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table><h2 id="C"><a href="#C" class="headerlink" title="C"></a>C</h2><table><thead><tr><th>C</th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td>cab</td><td>cabin</td><td>cage</td><td>calcium</td><td>caloric</td><td>calorie</td></tr><tr><td>candle</td><td>candy</td><td>cannon</td><td>cap</td><td>carrier</td><td>cart</td></tr><tr><td>carve</td><td>cast</td><td>castle</td><td>casual</td><td>cattle</td><td>ceiling</td></tr><tr><td>cell</td><td>cellphone</td><td>chairman</td><td>charitable</td><td>hart</td><td>cheat</td></tr><tr><td>cheese</td><td>chef</td><td>cherry</td><td>chess</td><td>chew</td><td>childbirth</td></tr><tr><td>childless</td><td>chip</td><td>chop</td><td>cinema</td><td>circuit</td><td>circular</td></tr><tr><td>clap</td><td>clause</td><td>clerk</td><td>click</td><td>cliff</td><td>clinic</td></tr><tr><td>clip</td><td>coach</td><td>coal</td><td>coast</td><td>coat</td><td>cocktail</td></tr><tr><td>coil</td><td>comb</td><td>congratulate</td><td>continent</td><td>copper</td><td>corp</td></tr><tr><td>corridor</td><td>costly</td><td>cottage</td><td>cotton</td><td>couch</td><td>coupon</td></tr><tr><td>cousin</td><td>cozy</td><td>crab</td><td>craze</td><td>cream</td><td>crew</td></tr><tr><td>cricket</td><td>crisp</td><td>crop</td><td>cruelty</td><td>cucumber</td><td>curve</td></tr><tr><td>cyber</td><td>cyclist</td><td></td><td></td><td></td><td></td></tr></tbody></table><h2 id="D"><a href="#D" class="headerlink" title="D"></a>D</h2><table><thead><tr><th>D</th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td>daffodil</td><td>dairy</td><td>dam</td><td>dawn</td><td>dean</td><td>deem</td></tr><tr><td>deli</td><td>delight</td><td>dental</td><td>devil</td><td>dialect</td><td>diary</td></tr><tr><td>diet</td><td>dietary</td><td>digit</td><td>diligent</td><td>dip</td><td>dirt</td></tr><tr><td>ditch</td><td>dock</td><td>documentary</td><td>dome</td><td>doom</td><td>dose</td></tr><tr><td>dot</td><td>doubtful</td><td>downhill</td><td>downstairs</td><td>downtime</td><td>downward</td></tr><tr><td>dozen</td><td>draft</td><td>drag</td><td>dropout</td><td>drought</td><td>dryer</td></tr><tr><td>dual</td><td>dub</td><td>dullness</td><td>dumb</td><td>dust</td><td>dwarf</td></tr><tr><td>dye</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table><h2 id="E"><a href="#E" class="headerlink" title="E"></a>E</h2><table><thead><tr><th>E</th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td>earner</td><td>earnings</td><td>echo</td><td>ecology</td><td>ego</td><td>eightfold</td></tr><tr><td>elder</td><td>empire</td><td>environmentalist</td><td>epic</td><td>epoch</td><td>erase</td></tr><tr><td>essay</td><td>euro</td><td>eve</td><td>excel</td><td>excellence</td><td>excellent</td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table><h2 id="F"><a href="#F" class="headerlink" title="F"></a>F</h2><table><thead><tr><th>F</th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td>fabric</td><td>falsely</td><td>familiar</td><td>fancy</td><td>fare</td><td>fee</td></tr><tr><td>fellow</td><td>fetch</td><td>fever</td><td>fiber</td><td>fierce</td><td>filter</td></tr><tr><td>fingernail</td><td>fingerprint</td><td>fisher</td><td>fishery</td><td>flash</td><td>flee</td></tr><tr><td>flesh</td><td>foggy</td><td>folk</td><td>fool</td><td>foolish</td><td>forefather</td></tr><tr><td>fork</td><td>forum</td><td>fossil</td><td>fourfold</td><td>frank</td><td>frankly</td></tr><tr><td>frightened</td><td>frown</td><td>fuel</td><td>furniture</td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table><h2 id="G"><a href="#G" class="headerlink" title="G"></a>G</h2><table><thead><tr><th>G</th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td>gambler</td><td>gap</td><td>garment</td><td>gate</td><td>gatekeeper</td><td>gender</td></tr><tr><td>genre</td><td>giant</td><td>glamour</td><td>glue</td><td>goodwill</td><td>grain</td></tr><tr><td>granny</td><td>grape</td><td>grassland</td><td>grave</td><td>greatness</td><td>greed</td></tr><tr><td>greenhouse</td><td>grin</td><td>grocery</td><td>ground</td><td>groundless</td><td>grower</td></tr><tr><td>guard</td><td>guardian</td><td>gulf</td><td>gum</td><td>gut</td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table><h2 id="H"><a href="#H" class="headerlink" title="H"></a>H</h2><table><thead><tr><th>H</th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td>hail</td><td>hall</td><td>halt</td><td>handful</td><td>handy</td><td>harbor</td></tr><tr><td>harm</td><td>harvest</td><td>haven</td><td>haze</td><td>headhunter</td><td>headquarter</td></tr><tr><td>heel</td><td>hence</td><td>heroic</td><td>heroin</td><td>hill</td><td>hole</td></tr><tr><td>holiness</td><td>homebuyer</td><td>homegrown</td><td>homelessness</td><td>honeydew</td><td>hook</td></tr><tr><td>hormone</td><td>hospitalization</td><td>host</td><td>housekeeper</td><td></td><td></td></tr></tbody></table><h2 id="I"><a href="#I" class="headerlink" title="I"></a>I</h2><table><thead><tr><th>I</th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td>idiom</td><td>idle</td><td>inch</td><td>indeed</td><td>indifferent</td><td>infancy</td></tr><tr><td>infant</td><td>influenza</td><td>insecurity</td><td>instant</td><td>instantly</td><td>instead</td></tr><tr><td>insult</td><td>ironic</td><td>irony</td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table><h2 id="J"><a href="#J" class="headerlink" title="J"></a>J</h2><table><thead><tr><th>J</th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td>jackpot</td><td>jam</td><td>jaw</td><td>jealousy</td><td>jean</td><td>jerk</td></tr><tr><td>jog</td><td>journal</td><td>journalist</td><td>joy</td><td>joyful</td><td>junior</td></tr><tr><td>junk</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table><h2 id="K"><a href="#K" class="headerlink" title="K"></a>K</h2><table><thead><tr><th>K</th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td>keen</td><td>keenly</td><td>kit</td><td>knight</td><td>knit</td><td>knot</td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table><h2 id="L"><a href="#L" class="headerlink" title="L"></a>L</h2><table><thead><tr><th>L</th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td>laboratory</td><td>label</td><td>ladder</td><td>lag</td><td>lame</td><td>landlord</td></tr><tr><td>lane</td><td>laptop</td><td>laziness</td><td>leisure</td><td>lessen</td><td>lest</td></tr><tr><td>lever</td><td>librarian</td><td>lie</td><td>lift</td><td>limb</td><td>linguist</td></tr><tr><td>loan</td><td>log</td><td>lone</td><td>lonely</td><td>lottery</td><td>lounge</td></tr><tr><td>luggage</td><td>lumber</td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table><h2 id="M"><a href="#M" class="headerlink" title="M"></a>M</h2><table><thead><tr><th>M</th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td>manly</td><td>manner</td><td>manpower</td><td>marine</td><td>marker</td><td>mathematical</td></tr><tr><td>mathematics</td><td>mayor</td><td>meadow</td><td>meal</td><td>mealtime</td><td>meantime</td></tr><tr><td>meanwhile</td><td>medieval</td><td>memorial</td><td>mend</td><td>mentally</td><td>mess</td></tr><tr><td>messenger</td><td>metal</td><td>metaphor</td><td>meter</td><td>metric</td><td>midst</td></tr><tr><td>mild</td><td>mill</td><td>million</td><td>mode</td><td>motion</td><td>motor</td></tr><tr><td>motorist</td><td>mud</td><td>multiple</td><td>murder</td><td>muscle</td><td>myriad</td></tr><tr><td>mystery</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table><h2 id="N"><a href="#N" class="headerlink" title="N"></a>N</h2><table><thead><tr><th>N</th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td>naive</td><td>narrow</td><td>nasty</td><td>navy</td><td>nazi</td><td>naval</td></tr><tr><td>neatly</td><td>nest</td><td>newsprint</td><td>newsstand</td><td>nightfall</td><td>nurse</td></tr><tr><td>nursery</td><td>nut</td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table><h2 id="O"><a href="#O" class="headerlink" title="O"></a>O</h2><table><thead><tr><th>O</th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td>organ</td><td>orphan</td><td>outdated</td><td>outdoors</td><td>outline</td><td>outsider</td></tr><tr><td>overdress</td><td>overhead</td><td>overseas</td><td>owing-to</td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table><h2 id="P"><a href="#P" class="headerlink" title="P"></a>P</h2><table><thead><tr><th>P</th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td>pack</td><td>paintbrush</td><td>palace</td><td>palm</td><td>panel</td><td>paraphrase</td></tr><tr><td>partially</td><td>passage</td><td>passive</td><td>patrol</td><td>pave</td><td>paycheck</td></tr><tr><td>pea</td><td>pearl</td><td>pearly</td><td>peasant</td><td>peculiar</td><td>penny</td></tr><tr><td>phase</td><td>phrase</td><td>physician</td><td>pile</td><td>pilot</td><td>pin</td></tr><tr><td>pioneer</td><td>pit</td><td>plate</td><td>pleasant</td><td>plot</td><td>polish</td></tr><tr><td>poll</td><td>pollute</td><td>pork</td><td>portion</td><td>posture</td><td>postwar</td></tr><tr><td>precious</td><td>previously</td><td>prey</td><td>prose</td><td>pudding</td><td>pupil</td></tr><tr><td>purely</td><td>puritan</td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table><h2 id="Q"><a href="#Q" class="headerlink" title="Q"></a>Q</h2><table><thead><tr><th>Q</th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td>quantify</td><td>quantitative</td><td>quantity</td><td>quarrel</td><td>quarter</td><td>quarterly</td></tr><tr><td>quota</td><td>quote</td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table><h2 id="R"><a href="#R" class="headerlink" title="R"></a>R</h2><table><thead><tr><th>R</th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td>radar</td><td>railway</td><td>rake</td><td>rank</td><td>raw</td><td>readily</td></tr><tr><td>rear</td><td>receipt</td><td>recover</td><td>recycling</td><td>refrigerator</td><td>remarry</td></tr><tr><td>rental</td><td>rescue</td><td>reshape</td><td>resume</td><td>retail</td><td>retailer</td></tr><tr><td>rhetoric</td><td>ribbon</td><td>richly</td><td>rightly</td><td>rip</td><td>riverboat</td></tr><tr><td>roast</td><td>rob</td><td>roll</td><td>royal</td><td>rug</td><td>rumor</td></tr><tr><td>rush</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table><h2 id="S"><a href="#S" class="headerlink" title="S"></a>S</h2><table><thead><tr><th>S</th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td>sandal</td><td>santa</td><td>satellite</td><td>scene</td><td>screen</td><td>secretary</td></tr><tr><td>seldom</td><td>separately</td><td>servant</td><td>session</td><td>settler</td><td>shed</td></tr><tr><td>sheet</td><td>shell</td><td>shore</td><td>shout</td><td>shut</td><td>signature</td></tr><tr><td>silicon</td><td>silver</td><td>skyscraper</td><td>slim</td><td>slot</td><td>snack</td></tr><tr><td>soil</td><td>solely</td><td>solidly</td><td>somewhat</td><td>sow</td><td>span</td></tr><tr><td>spare</td><td>spin</td><td>spouse</td><td>spray</td><td>steal</td><td>steward/stewardess</td></tr><tr><td>straw</td><td>stream</td><td>streetlight</td><td>stripe</td><td>studio</td><td>stuff</td></tr><tr><td>subheading</td><td>suburb</td><td>surgery</td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table><h2 id="T"><a href="#T" class="headerlink" title="T"></a>T</h2><table><thead><tr><th>T</th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td>tablet</td><td>tailor</td><td>tap</td><td>tape</td><td>tax</td><td>tear</td></tr><tr><td>tease</td><td>textile</td><td>textual</td><td>thereby</td><td>thesis</td><td>thick</td></tr><tr><td>tobacco</td><td>token</td><td>toll</td><td>tomb</td><td>tone</td><td>toxic</td></tr><tr><td>tragedy</td><td>trail</td><td>treasure</td><td>treasury</td><td>trillion</td><td>troop</td></tr><tr><td>tropical</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table><h2 id="U"><a href="#U" class="headerlink" title="U"></a>U</h2><table><thead><tr><th>U</th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td>unfold</td><td>unified</td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table><h2 id="V"><a href="#V" class="headerlink" title="V"></a>V</h2><table><thead><tr><th>V</th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td>vain</td><td>valley</td><td>van</td><td>verbal</td><td>verge</td><td>vessel</td></tr><tr><td>vice</td><td>violence</td><td>violent</td><td>violinist</td><td>virgin</td><td>visa</td></tr><tr><td>vitamin</td><td>voyage</td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table><h2 id="W"><a href="#W" class="headerlink" title="W"></a>W</h2><table><thead><tr><th>w</th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td>wage</td><td>wallet</td><td>ward</td><td>warehouse</td><td>wardrobe</td><td>wasteland</td></tr><tr><td>wheat</td><td>wheel</td><td>whereby</td><td>whether</td><td>whichever</td><td>wildfire</td></tr><tr><td>wing</td><td>wipe</td><td>wisely</td><td>wit</td><td>witness</td><td>wordy</td></tr><tr><td>workhouse</td><td>worm</td><td>wrist</td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table><h2 id="X"><a href="#X" class="headerlink" title="X"></a>X</h2><table><thead><tr><th>X</th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table><h2 id="Y"><a href="#Y" class="headerlink" title="Y"></a>Y</h2><table><thead><tr><th>Y</th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td>yell</td><td>yet</td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table><h2 id="Z"><a href="#Z" class="headerlink" title="Z"></a>Z</h2><table><thead><tr><th>Z</th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td>zeal</td><td>zone</td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E5%A4%96%E8%AF%AD/">外语</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%8B%B1%E8%AF%AD/">英语</category>
      
      
      <comments>https://www.ninojay.top/2022/simple-words/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>修辞学与论爱情-《斐德若篇》</title>
      <link>https://www.ninojay.top/2022/Phaedrus/</link>
      <guid>https://www.ninojay.top/2022/Phaedrus/</guid>
      <pubDate>Wed, 02 Feb 2022 08:36:12 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>关于文章两个明显法则：</p><ol><li>纵观全体，把和题目相关的纷纭散乱的事项统摄在一个普遍概念下面，得到一个精确的定义，使我们所要讨论的东西可以一目了然。</li><li>顺自然的关键，把全体都剖析成各个部分，却不要像笨拙的宰割夫一样，把任何部分弄破。</li></ol><p>苏格拉底：这种分析和综合，为的是会说话和会思想。一个人如其本能地看出<strong>一</strong>和<strong>多</strong>，我就要追随他。</p><hr><p>修辞的完美：</p><ol><li>生来有语文的天性</li><li>知识</li><li>练习</li><li>还需对自然科学能讨论，能思辨。</li></ol><hr><p>对于想精通又要教旁人精通的事物，先要研究它是纯一的还是杂多的：</p><ul><li>若纯一：<ol><li>研究其自然本质</li><li>它与其他事物发生什么样主动与被动的关系</li><li>发出什么影响，受到什么影响</li></ol></li><li>若杂多：<ol><li>将杂多分析为若干纯一</li><li>再逐一分析纯一</li></ol></li></ul><p>心灵的精确描绘，看看它在本质上是纯一的，还是像肉体一样，杂多。</p><hr><p>无论写作，教学，演讲，尽管他自以是按照艺术去做，听众不相信，就算失败。  </p><p>若一个人所能摆出的不过是天天绞脑汁改而又改，补而又补的那些著作，你就只能称呼他们为诗人，文章作者，或是法规作者。  </p><p>他一句话重复了两三遍，若不是词不达意，就是他对这种题目根本就没有什么兴趣。  </p><p>一个人若完全不能分辨是非好坏，尽管博得世俗的一致赞许，仍然不能逃去他所赢得得指责。  </p><p>这些都是题中应有之义，丢掉它们就无话可说。  </p><p>只有对于原无题中应有之义的那类题目的文章，意思才能难能可贵的，在安排之外，我们还须看意思本身。  </p><p>无论讨论什么问题，都要有一个出发点，这就是必须知道所讨论的对象究竟是什么，否则得不到什么结果。  </p><p>许多人对于事物本质，都强不知以为知。  </p><p>某一种形式显得特别刺目时，犯那毛病的人就因而得到一个不很光荣的称号。</p><p><strong>写文章可丑，是在写得坏的时候。</strong></p><p><strong>体肤的快乐都先经过苦痛而后才可以享受，所以说它们是“奴役性的”快乐是很正当的。</strong>  </p><p><strong>文章要做得好，主要的条件是作者对于所谈问题的真理要知道清楚。</strong>  </p><p>一个人尽管知道了真理，若是没有修辞术，还是不能按照艺术去说服。  </p><p>在言辞方面，脱离了真理，就没有，而且也永不能有真正的艺术。  </p><p>修辞术是用文辞来影响人心的。  </p><p>事物的差异小容易欺骗人或迷惑人。  </p><p>若是你一步接着一步地从正面走到反面，每一步和前一步差异小，旁人就看不出破绽；若是你一步就转到反面，旁人一眼就看出来了。  </p><p>因此一个人若想迷惑旁人而自己不迷惑，他就要能精确地辨别事物的异同。  </p><p>如果一个人不知真理，只在人们的意见上捕风捉影，他所做的文章就显得可笑，而且不成艺术了。  </p><p>每篇文章的结构应该像一个有生命的东西，有它所特有的那种身体，有头尾，有中段，有四肢，部分和部分，部分和全体，都要各得其所，完全调和。  </p><p>你所知道的这些是调音协律的初步，而不是调音协律本身。</p><p>我们不能引他的话作证就算了事，还要追问理由，看他的话能否自圆其说。</p><h2 id="摘抄-修辞"><a href="#摘抄-修辞" class="headerlink" title="摘抄-修辞"></a>摘抄-修辞</h2><p>豺狼也应该陈述它的理由。  </p><p>假想一个羸弱而勇猛的人打倒了一个强壮而怯懦的人。  </p><p>凡有理性的人所要尽力讨好的不是奴隶同辈（除非是偶然破格），而是本身和祖先都善良的主人们。  </p><p>如果追求的境界美，尽管遇到困难，追求本身也还是美的。  </p><p>能发明一种技术是一个人，能权衡应用那技术利弊的是另一人。  </p><p>自以为聪明实在不聪明。  </p><p>我只消补充一句：凡事有爱情的人的坏处，反过来就是没有爱情的人的好处。</p><p>说的都不是正经话，却充得像说出什么道理似的，来欺哄人们，博得声誉。</p><p>每逢他们写了文章，对赞助那文章的人们特别感激，所以在文章开头就特别加一句声明，说在哪些人的赞助。  </p><p>建议人就是作者自己，他这样庄重其词地替自己吹嘘一番，然后向那些赞助人显自己的聪明，就写将下去，往往写得很冗长。  </p><p><strong>一个朋友的荒谬可笑比起一个敌人的凶猛可怕，还要较胜一筹。</strong>  </p><p>这个人是疯子，他读过一点医书或是碰见一些诊方，就自以为是个好医生，其实对于医道全是外行。</p><p>对于神话，如果你全不相信，要把它们逐一检验，看它们是否近情近理，这种<strong>庸俗的机警</strong>就不知道要断送多少时间和精力。  </p><p><strong>一个人还不能知道他自己，就忙着去研究一些和他不相干的东西，这在我看是很可笑的。</strong>  </p><p>我所专心致志的不是研究神话，而是研究我自己。  </p><p><strong>田园草木不能让我学得什么，能让我学得一些东西的是城市里的人民。</strong>  </p><h2 id="摘抄-爱情"><a href="#摘抄-爱情" class="headerlink" title="摘抄-爱情"></a>摘抄-爱情</h2><p>观点之<em>理智的爱情至上</em>（后被抨击）：</p><ul><li>有爱情的人们一旦他们的欲望满足了，对于所施与的恩惠就觉得追悔；至于我们没有爱情的人们却不然，我们不会有追悔的时候，因为我们施与恩惠，不是爱情欲的驱遣，而是自由自愿的，顾到自己的地位能力，也顾到自己的利益。</li><li>只能证明他有着未来的爱人抛弃现在的爱人，如果那未来的爱人要他那样做，他会毫不犹豫地伤害现在的爱人。</li><li>我们没有爱情的人们却不然，我们能控制自己，只讲实惠而不讲虚名。</li><li>我们的交往只会有恩，不会有怨了。</li><li>有爱情的大半只爱容貌，对于爱人的性格和身世毫不明白，因此，到了欲望已满足的时候，交情就保持不止。</li><li>爱情的圈套就是这样，一件事碰得不巧，在旁人看来本值不得烦恼，有爱情的人们就会烦恼；一件事碰得巧，在旁人本值不得高兴，有爱情的人们就会大加赞赏。</li></ul><p>恩宠若是应该给追求最迫切的人们，应该受照顾的就不是最好的人而是最穷困的人，因为最穷困的人得到恩宠就偿还了最大的心愿，因而也就会怀着最深的感激。  </p><p>说到究竟，你应该给恩宠的不是最会讨好的，而是最能感恩图报的；不是只讲爱的，而是值得爱的；不是只爱你年轻貌美的，而是到老也可以和你共安乐的；不是达到目的就向人夸耀的，而是顾全体面，守口如瓶；不是苟图一时欢乐，而是‘白头偕老’，始终不渝的；不是恩尽怨来，吹毛求疵的，而是你虽年老色衰，他还忠心耿耿的。  </p><p>就恩宠者说，漫无选择的恩宠引不起很大的感激。  </p><p>如果我因为爱你而随身附和你，他们都会起来职责我。  </p><p>有一个特别狡猾，虽然和旁人一样爱这个少年，却故意要使这个少年相信并不爱他。  </p><p>应该得恩宠的是有爱情的人，还是没有爱情的人？我们就应该对于爱情的本质和效能先找到一个公认的定义，以后讨论爱情好坏，时刻把眼光注目在这个定义上。  </p><p>一个是天生的求快感的欲念，另一个是习得的求至善的希冀。</p><p>苏格拉底关于<em>理性的爱情</em>（后被自己推翻）：</p><ul><li>有一种欲念，失掉了理性，压倒了求至善的希冀，浸淫于美所生的快感，尤其是受到同类欲念的火上加油，浸淫于肉体美所生的快感，那就叫做“爱情”。</li><li>被欲念所控制，他于是就有一种心病，喜欢一切不和他的欲念作敌的，厌恶一切比他优越或和他平等的。</li><li>说到理智，说到教导合作，从有爱情的人那方面绝对得不到什么好处。</li><li>情人在有爱情的时候已经是够麻烦讨厌的，到了爱情消失的时候，他就成为失信背义的仇人了。</li><li><strong>要明白，情人的友谊不是从善意来的，他有一种瘾，要拿你来过瘾。情人爱爱人，有如狼爱羊。</strong></li></ul><hr><p>我们的爱情观是从<strong>向来没有见过真正爱情</strong>的水手们那里沾染来的吧？  </p><hr><p>应该给恩宠的不是没有爱情的人，而是有爱情的人。  </p><p>如果迷狂绝对是坏的，这话倒还可说；但是也有一种迷狂是神灵的禀赋，人类的许多最重要的福利都是从它来的。  </p><p>相信这种话的人要想胜利的话，他就得证明：老天拿爱情给相爱的两个人，对他们彼此毫无一点益处。  </p><p>凡是灵魂都是不朽的-&gt;因为凡是永远自动的都是不朽的。  </p><p>只有借妥善运用这种回忆，一个人才可以常探讨奥秘来使自己完善，才可以真正改成完善。但是这样一个人既漠视凡人所重视的，聚精会神来观照凡是神明的，就不免被众人看成疯狂，他们不知道他其实是由神灵附着的。  </p><p>坏人和坏人天生注定的不能做朋友，好人也天生注定的只和好人做朋友。  </p><p>他就像一个人看了别人的沙眼，自己也得了沙眼。  </p><p>他的情人像一面镜子，在这里面他看见了自己的形象，何以至此，他却莫名其妙。  </p><p><strong>爱情就是迷狂。</strong>  </p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E5%A3%B0%E5%85%89/">声光</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E9%98%85%E8%AF%BB/">阅读</category>
      
      <category domain="https://www.ninojay.top/tags/%E6%91%98%E6%8A%84/">摘抄</category>
      
      <category domain="https://www.ninojay.top/tags/%E5%93%B2%E5%AD%A6/">哲学</category>
      
      
      <comments>https://www.ninojay.top/2022/Phaedrus/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>我和“会倾听”的故事</title>
      <link>https://www.ninojay.top/2022/Being-a-Good-Listener/</link>
      <guid>https://www.ninojay.top/2022/Being-a-Good-Listener/</guid>
      <pubDate>Sat, 29 Jan 2022 03:01:41 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>在我的眼中看来，小孩阶段的世界，没有倾听的概念，只顾着向世界撒泼打诨，嬉戏玩闹。在我的心中看来，从我接触父母以外的成年人开始，“学会倾听”这件事在我眼前的成长速度比我自身的成长还快。</p><p>记忆中“关于倾听”的初次体验，是小学五年级左右，班上换了个新的数学老师。他叫李小平。名字实在是太好记了。李老师自我介绍的时候，我带着十岁左右清澈童真的态度，心里默默地想，他肯定和邓小平爷爷有故事，要不然就是他的父母和邓小平爷爷有故事。</p><p>新老师上的第一节课，往往不会直接上课。而是穷尽自己的人生经历，让一群新学生马上树立亲切感的同时，还要携带一定的敬畏心。大多数老师敬畏心这一块更加刻意。李老师不一样，将近15年过去，他在我们一群小孩心中是通过幽默感树立的敬畏心，长大后其他同学也都争相约着去李老师家看望他。</p><p>记得那一天，他上课上着上着，和我们一群傻不拉几的小孩说：“我一直以来都保持一个习惯，任何人和我说话的时候，我的身体不会有什么大的动作，侧一点身子，把耳朵靠近他，仔细听他说话，这样会让对方觉得很尊重。”他一边说着这个习惯，一边用自己的动作，表情上凸出的眼珠传达出的那份认真。时至今日，我脑子里面一回想，依然忍不住起鸡皮疙瘩。</p><p>说真的，他描述“仔细听任何人说话能给对方带来尊重”，在当时深深震撼了我幼小的心灵。</p><p>我深刻记住了。但我没有把他说的这个习惯运用在我当时的同龄人身上。就像我开篇说的那样，小孩的年纪更注重表达天性。</p><p>渐渐地周围的朋友们拉着我一起长大到接近十八岁的年纪，我这个男生变得异常地敏感。就算假如作为一个女生来说，都有点过分了。我身边的女同学们也都这样评价我。这份敏感的出现造成我与任何人的交往都是试探性的角色。我小心翼翼地表达着自己的世界，仔仔细细地对待身边的任何的人。二十二岁前的我总是努力寻找接触的任何人身上的闪光点，然后心里默默地羡慕这份闪光点。我记得班上有群同学总是聚在一起开一个同学的玩笑，我心里很不是滋味，那时我就觉得他也是咱们的同学啊，为什么要这么拿他开玩笑呢。但是因为我敏感懦弱讨好的性格，为了迎合这群同学，我没有当面反驳他们。值得庆幸的是，我私下尽自己最大的努力不去开那位同学的玩笑，并且一直到现在也说过，羡慕他的特立独行。</p><p>我那时开始注意到一个小城镇的现象。成绩差的同学，是很难被大多数同学正确看待他的思想的。小城镇的唯成绩论从社会上传递到每一个家庭里面，辛劳工作一生的父母们对成绩的刻板影响也自然传达到孩子身上。大家就这样凑到一个小城镇的学校。尤其是这个学校的老师也基本上唯成绩论。</p><p>我真的不太明白，成绩好的人为什么就自然是班干部，他就是所谓优秀的学生。一个学生成绩好，为什么似乎就代表他就是这个班级的上流人士，他说的话为什么自然被大家很容易接受，管这位学生的老师们，也时常派他做一些小特派员的任务。我的成绩是一直在变化的，有的科目也考过班级上的第一名。当我考第一名的时候，我很刻意在心理强调，就算自己成绩好了起来，也要和所有的同学认真的相处。（但是我现在意识到实际上人在现实中是不可能对所有人用统一标准的。这又是另外一件事。）</p><p>总之，我想说的是，高中时候的我，尽管成为了一个敏感的人，依然在努力发现每个同龄人的闪光点，并且羡慕并且偷偷学习。实话实说，我当时并没有找到和我类似的人。非要去寻找一个原因，应该是我天生就是这样的性格，加上自己开始看课外书，电影，电视剧。我看所有的文学作品以及视频的时候，完完全全被其中人的情绪所打动，我那时就认为，我看的不是一个个作品，而是一个个人生，它让我知道世界上有这样的种种人，以及这些人是这样的心理活动，这样的情绪共鸣。不可避免，脑子里有了这些印象，我觉得每个人都很脆弱，都需要被认真对待，由此自己变得敏感和对他人也小心翼翼。</p><p>印象很深刻，在家看一部很丧的美国成人动画《马男波杰克》，里面的主人公们都是社会人，在酒吧遇到另一个穿着大衣，身材有点奇特的“成年人”（实际上这个“成年人”是三个孩子藏在大衣里面假扮的）。在社会上闯荡多年的主人公们和这位“成年人”聊起了天，最后主人公们说：“你真是一个很好的聊天对象。”实际上这个“成年人”全程什么都没说，“他”只是默默地做一个认真的倾听者的角色。</p><p>我瞬间想起了李老师的话。我开始思考：成年人的世界很难找到听他们说话的人吗？不过会倾听的人实在是太厉害了，那我现在就要这样做起，成为这样的人。</p><p>很可惜高中时候给我的反馈缺依然是糟糕的。大家根本就不在乎你会不会倾听。大家心里有自己想听话的人，即是成绩好的人。一个成绩一般的同学对另一位同学积极地说着海贼王漫画的最新剧情，另一个成绩好的同学随口一句：”不是这样的，我之前看到的不是这样。“那位听众的表情马上就表示出相信这位成绩好的同学的话。成绩一般的同学还在激动地说，”不信我们马上上网查，我昨天才看的。“我记得十分清楚，那位成绩好的同学拒绝了去讲台上的电脑查，开始说起了他看到的剧情。那位听众已经完全不在乎之前的讲述者了。</p><p>我知道前者是对的。因为我前一天也看了最新的剧情。高中的时候，我常常从这些小事，不管是自己还是其他人身上，都感到悲伤。</p><p>我的悲伤让大家也给了我一个称号：”非主流“。</p><p>不过我得诚实地说，我的思想是”非主流“，但是我的行为十分主流。我混迹于一个班级大大小小的圈子，融入地洽到好处。甚至于两方敌对的圈子，我可以是其中互通对方情报的中间人。我今天想起来，很后悔自己成为这样的角色。实在是太不酷了。如果可以重来，我希望自己不再融入任何一个圈子，心形合一，思想上的非主流也要体现在行为上。这样我今天回想起来一定不会觉得羞愧。</p><p>总而言之，再说回”会倾听“这件事，高中时候还是没有让我体会并且真正运用到周围人身上。大家都不需要一个会倾听的人，大家只需要自己的成绩变得好。</p><p>啊，终于大学毕业了。我们终于成为了梦寐以求的社会人。那些读书时说以后有钱了，就能过自己想过的生活的日子来了！真的吗？这个社会好像没有允许人真正休息过，但我觉得不是社会的原因，社会是由人组成的。毕业后的大家默契地把目标放在买房子上了，工资的比较上了。大家还是那么忙。尽管我不理解大家的忙碌。我很简单，我想的只是，过一个有趣的生活。我觉得大家都不够有趣了（也许照他们的话说，我还不够”成熟“）。</p><p>我上班期间经常找同龄人喝酒。试图聊些工作外的内容，聊完的结果是让这些同龄人觉得我和其他人不一样，他们说着不曾对其他人说的隐私。我细心地听着。我在这个时间段恍惚，啊，成年人是越来越孤独的，成年人都只是一个个鲜活的人，成年人都有自己的过去，也都想着自己的未来。成年人都自动接受了社会目前的设定：唯金钱至上。所以成年人们都不得不隐藏自己的想法，只能将自我关在异乡的小房间。成年人的收入基本上是被动地来自于其他更年长的成年人。寻求他人给予金钱的成年人是很难表达自己的想法的，在表达自己的想法之前，得花大量的精力先表达其他人的想法，以及面对自己的想法被对方贬低的伤害。</p><p>如果这时候，有一个人坐在他对面，身体不会有什么大的动作，侧一点身子，把耳朵靠近他，仔细听他说话。他就会感受到尊重。</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E6%83%85%E7%BB%AA/">情绪</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%AE%B0%E5%BF%86/">记忆</category>
      
      
      <comments>https://www.ninojay.top/2022/Being-a-Good-Listener/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>本站涉及的网站</title>
      <link>https://www.ninojay.top/2022/other-website/</link>
      <guid>https://www.ninojay.top/2022/other-website/</guid>
      <pubDate>Fri, 28 Jan 2022 04:07:33 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h1 id="免费商用图片下载网站"><a href="#免费商用图片下载网站" class="headerlink" title="免费商用图片下载网站"></a>免费商用图片下载网站</h1><p><a href="https://unsplash.com/">https://unsplash.com/</a></p><p><a href="https://photock.jp/">https://photock.jp/</a></p><p><a href="https://www.pexels.com/zh-cn/">https://www.pexels.com/zh-cn/</a></p><p><a href="https://gratisography.com/">https://gratisography.com/</a></p><p><a href="https://pixabay.com/">https://pixabay.com/</a></p><p><a href="https://visualhunt.com/">https://visualhunt.com/</a></p><h1 id="B站视频嵌入代码显示问题"><a href="#B站视频嵌入代码显示问题" class="headerlink" title="B站视频嵌入代码显示问题"></a>B站视频嵌入代码显示问题</h1><p>直接使用嵌入代码，尺寸有问题，用如下的，修改下src地址就行。</p><figure class="highlight js"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">&lt;div style=<span class="string">"position: relative; padding: 30% 45%;"</span>&gt;</span><br><span class="line"><span class="language-xml"><span class="tag">&lt;<span class="name">iframe</span> </span></span></span><br><span class="line"><span class="tag"><span class="language-xml"><span class="attr">style</span>=<span class="string">"position: absolute; width: 100%; height: 100%; left: 0; top: 0;"</span> </span></span></span><br><span class="line"><span class="tag"><span class="language-xml"><span class="attr">src</span>=<span class="string">"//player.bilibili.com/player.html?aid=934381863&amp;bvid=BV13M4y1P7PM&amp;cid=447999850</span></span></span></span><br><span class="line"><span class="string"><span class="tag"><span class="language-xml">&amp;page=1&amp;as_wide=1&amp;high_quality=1&amp;danmaku=0"</span><span class="attr">frameborder</span>=<span class="string">"no"</span> <span class="attr">scrolling</span>=<span class="string">"no"</span>&gt;</span></span></span><br><span class="line"><span class="language-xml"><span class="tag">&lt;/<span class="name">iframe</span>&gt;</span></span></span><br><span class="line">&lt;/div&gt;</span><br></pre></td></tr></tbody></table></figure><table><thead><tr><th>key</th><th>参数说明</th></tr></thead><tbody><tr><td>aid</td><td>视频ID 就是B站的 avxxxx 后面的数字</td></tr><tr><td>cid</td><td>应该是客户端id, clientId 的缩写(推测的, 不一定准确) 经过测试, 这个字段不填也没关系</td></tr><tr><td>page</td><td>第几个视频, 起始下标为 1 (默认值也是为1) 就是B站视频, 选集里的, 第几个视频</td></tr><tr><td>as_wide</td><td>是否宽屏 1: 宽屏, 0: 小屏</td></tr><tr><td>high_quality</td><td>是否高清 1: 高清, 0: 最低视频质量(默认) 如视频有 360p 720p 1080p 三种, 默认或者 high_quality=0 是最低 360p high_quality=1 是最高1080p</td></tr><tr><td>danmaku</td><td>是否开启弹幕 1: 开启(默认), 0: 关闭</td></tr></tbody></table><h1 id="Hexo"><a href="#Hexo" class="headerlink" title="Hexo"></a>Hexo</h1><p>Hexo官网：<a href="https://hexo.io/zh-cn/">https://hexo.io/zh-cn/</a></p><p>Hexo-theme-fluid官网：<a href="https://hexo.fluid-dev.com/docs/">https://hexo.fluid-dev.com/docs/</a></p><p>Hexo-theme-fluid使用小技巧博客：<a href="https://hexo.fluid-dev.com/">https://hexo.fluid-dev.com/</a></p><h1 id="Markdown"><a href="#Markdown" class="headerlink" title="Markdown"></a><a href="https://markdown.com.cn/">Markdown</a></h1><h3 id="换行"><a href="#换行" class="headerlink" title="换行"></a>换行</h3><p>在一行的末尾添加两个或多个空格，然后按回车键,即可创建一个换行(<code>&lt;br&gt;</code>)。</p><h3 id="多个段落的块引用"><a href="#多个段落的块引用" class="headerlink" title="多个段落的块引用"></a>多个段落的块引用</h3><p>块引用可以包含多个段落。为段落之间的空白行添加一个 <code>&gt;</code> 符号。</p><figure class="highlight js"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&gt; <span class="title class_">Dorothy</span> followed her through many <span class="keyword">of</span> the beautiful rooms <span class="keyword">in</span> her castle.</span><br><span class="line">&gt;</span><br><span class="line">&gt; <span class="title class_">The</span> <span class="title class_">Witch</span> bade her clean the pots and kettles and sweep the floor and keep the fire fed <span class="keyword">with</span> wood.</span><br></pre></td></tr></tbody></table></figure><p>渲染效果如下：</p><blockquote><p>Dorothy followed her through many of the beautiful rooms in her castle.</p><p>The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.</p></blockquote><h3 id="嵌套块引用"><a href="#嵌套块引用" class="headerlink" title="嵌套块引用"></a>嵌套块引用</h3><p>块引用可以嵌套。在要嵌套的段落前添加一个 <code>&gt;&gt;</code> 符号。</p><figure class="highlight js"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&gt; <span class="title class_">Dorothy</span> followed her through many <span class="keyword">of</span> the beautiful rooms <span class="keyword">in</span> her castle.</span><br><span class="line">&gt;</span><br><span class="line">&gt;&gt; <span class="title class_">The</span> <span class="title class_">Witch</span> bade her clean the pots and kettles and sweep the floor and keep the fire fed <span class="keyword">with</span> wood.</span><br></pre></td></tr></tbody></table></figure><p>渲染效果如下：</p><blockquote><p>Dorothy followed her through many of the beautiful rooms in her castle.</p><blockquote><p>The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.</p></blockquote></blockquote><h3 id="带有其它元素的块引用"><a href="#带有其它元素的块引用" class="headerlink" title="带有其它元素的块引用"></a>带有其它元素的块引用</h3><p>块引用可以包含其他 Markdown 格式的元素。并非所有元素都可以使用，你需要进行实验以查看哪些元素有效。</p><figure class="highlight text"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">&gt; #### The quarterly results look great!</span><br><span class="line">&gt;</span><br><span class="line">&gt; - Revenue was off the chart.</span><br><span class="line">&gt; - Profits were higher than ever.</span><br><span class="line">&gt;</span><br><span class="line">&gt;  *Everything* is going according to **plan**.</span><br></pre></td></tr></tbody></table></figure><p>渲染效果如下：</p><blockquote><h4 id="The-quarterly-results-look-great"><a href="#The-quarterly-results-look-great" class="headerlink" title="The quarterly results look great!"></a>The quarterly results look great!</h4><ul><li>Revenue was off the chart.</li><li>Profits were higher than ever.</li></ul><p><em>Everything</em> is going according to <strong>plan</strong>.</p></blockquote><h3 id="图片和链接"><a href="#图片和链接" class="headerlink" title="图片和链接"></a>图片和链接</h3><figure class="highlight js"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">图片： ![<span class="title class_">Tux</span>, the <span class="title class_">Linux</span> mascot](<span class="regexp">/assets/im</span>ages/tux.<span class="property">png</span>)</span><br><span class="line">这是一个链接 [<span class="title class_">Markdown</span>语法](<span class="attr">https</span>:<span class="comment">//markdown.com.cn "最好的markdown教程")。</span></span><br></pre></td></tr></tbody></table></figure><p>使用尖括号可以很方便地把URL或者email地址变成可点击的链接。</p><figure class="highlight js"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">&lt;<span class="attr">https</span>:<span class="comment">//markdown.com.cn&gt;</span></span><br><span class="line"><span class="language-xml">&lt;fake@example.com&gt;</span></span><br></pre></td></tr></tbody></table></figure><p>给图片增加链接，请将图像的Markdown 括在方括号中，然后将链接添加在圆括号中。</p><figure class="highlight js"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[![沙漠中的岩石图片](<span class="regexp">/assets/img</span><span class="regexp">/shiprock.jpg "Shiprock")](https:/</span>/markdown.<span class="property">com</span>.<span class="property">cn</span>)</span><br></pre></td></tr></tbody></table></figure><h3 id="分割线"><a href="#分割线" class="headerlink" title="分割线"></a>分割线</h3><p>创建分隔线，请在单独一行上使用三个或多个星号 (<code>***</code>)、破折号 (<code>---</code>) 或下划线 (<code>___</code>) ，并且不能包含其他内容。</p><figure class="highlight text"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">***</span><br><span class="line"></span><br><span class="line">---</span><br><span class="line"></span><br><span class="line">_________________</span><br></pre></td></tr></tbody></table></figure><h3 id="删除线"><a href="#删除线" class="headerlink" title="删除线"></a>删除线</h3><figure class="highlight md"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">~~世界是平坦的。~~ 我们现在知道世界是圆的。</span><br></pre></td></tr></tbody></table></figure><h3 id="表格"><a href="#表格" class="headerlink" title="表格"></a>表格</h3><p>创建表格代码的链接：<a href="https://www.tablesgenerator.com/markdown_tables">https://www.tablesgenerator.com/markdown_tables</a></p><p>要添加表格，请使用三个或多个连字符（<code>---</code>）创建每列的标题，并使用管道（<code>|</code>）分隔每列。您可以选择在表的任一端添加管道。</p><figure class="highlight text"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">| Syntax      | Description |</span><br><span class="line">| ----------- | ----------- |</span><br><span class="line">| Header      | Title       |</span><br><span class="line">| Paragraph   | Text        |</span><br></pre></td></tr></tbody></table></figure><p>您可以通过在标题行中的连字符的左侧，右侧或两侧添加冒号（<code>:</code>），将列中的文本对齐到左侧，右侧或中心。</p><figure class="highlight md"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">| Syntax      | Description | Test Text     |</span><br><span class="line">| :---        |    :----:   |          ---: |</span><br><span class="line">| Header      | Title       | Here's this   |</span><br><span class="line">| Paragraph   | Text        | And more      |</span><br></pre></td></tr></tbody></table></figure></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E8%BD%AF%E4%BB%B6/">软件</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E6%90%AD%E5%BB%BA%E7%BD%91%E7%AB%99/">搭建网站</category>
      
      
      <comments>https://www.ninojay.top/2022/other-website/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>1～21unit</title>
      <link>https://www.ninojay.top/2022/1-21unit/</link>
      <guid>https://www.ninojay.top/2022/1-21unit/</guid>
      <pubDate>Thu, 27 Jan 2022 04:46:24 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p>已经将《新东方2023恋练有词》1～21单元过了两遍。但还是没有完全掌握，把一些还需要不断复习的单词记录在这里。只记录单词本身，供自己复习。具体中文涵义，可以利用苹果自身词典和，网页插件进行查询保存记忆程度。</p><h2 id="direct"><a href="#direct" class="headerlink" title="direct"></a>direct</h2><table><thead><tr><th align="center">Monday</th><th align="center">Tuesday</th><th align="center">Wednesday</th><th align="center">Thursday</th><th align="center">Friday</th><th align="center">Saturday</th></tr></thead><tbody><tr><td align="center">patchwork</td><td align="center">overstate</td><td align="center">estate</td><td align="center">statue</td><td align="center">stake</td><td align="center">alter</td></tr><tr><td align="center">social</td><td align="center">socialize</td><td align="center">asocial</td><td align="center">intake</td><td align="center">retake</td><td align="center">blunder</td></tr><tr><td align="center">intention</td><td align="center">intentionally</td><td align="center">demographic</td><td align="center">civilized</td><td align="center">commerce</td><td align="center">commercial</td></tr><tr><td align="center">sector</td><td align="center">section</td><td align="center">remarkable</td><td align="center">markedly</td><td align="center">marked</td><td align="center">wholesale</td></tr><tr><td align="center">soar</td><td align="center">spike</td><td align="center">decline</td><td align="center">diminish</td><td align="center">mortgage</td><td align="center">legitimate</td></tr><tr><td align="center">indicate</td><td align="center">manifest</td><td align="center">demonstrate</td><td align="center">legitimacy</td><td align="center">legislation</td><td align="center">proceedings</td></tr><tr><td align="center">through</td><td align="center">overrule</td><td align="center">throughout</td><td align="center">regulation</td><td align="center">constitution</td><td align="center">regulatory</td></tr><tr><td align="center">unconstitutional</td><td align="center">economical</td><td align="center">economy</td><td align="center">economic</td><td align="center">contest</td><td align="center">basis</td></tr><tr><td align="center">distinctiveness</td><td align="center">distinctly</td><td align="center">distinguish</td><td align="center">distinctive</td><td align="center">distinction</td><td align="center">differentiate</td></tr></tbody></table><table><thead><tr><th>1 January</th><th>2 February</th><th>3 March</th><th>4 April</th><th>5 May</th><th>6 June</th></tr></thead><tbody><tr><td>outcome</td><td>aftermath</td><td>fallout</td><td>courtship</td><td>defendant</td><td>prosecute</td></tr><tr><td>prosecutor</td><td>trial</td><td>plead</td><td>levy</td><td>misplaced</td><td>substitute</td></tr><tr><td>perspective</td><td>prospect</td><td>upkeep</td><td>abide</td><td>detach</td><td>conservative</td></tr><tr><td>effective</td><td>efficient</td><td>impact</td><td>interact</td><td>interplay</td><td>rational</td></tr><tr><td>coherent</td><td>creative</td><td>projection</td><td>scheme</td><td>program</td><td>inclusive</td></tr><tr><td>misuse</td><td>accordingly</td><td>entrepreneur</td><td>transaction</td><td>legislature</td><td>enact</td></tr><tr><td>civility</td><td>prosecution</td><td>credible</td><td>rationlist</td><td>exclusive</td><td>exclusively</td></tr><tr><td>surrounding</td><td>surroundings</td><td>produce</td><td>yield</td><td>reap</td><td>concern</td></tr><tr><td>chronicle</td><td>chronic</td><td>arise</td><td>rise</td><td>raise</td><td>backfire</td></tr></tbody></table><table><thead><tr><th>7 July</th><th>8 August</th><th>9 September</th><th>10 October</th><th>11 November</th><th>12 December</th></tr></thead><tbody><tr><td>affirm</td><td>withhold</td><td>uphold</td><td>grasp</td><td>providing</td><td>supply</td></tr><tr><td>render</td><td>supplement</td><td>complementary</td><td>turnaround</td><td>overturn</td><td>turnover</td></tr><tr><td>downturn</td><td>contemplate</td><td>process</td><td>proceed</td><td>proceeds</td><td>trival</td></tr><tr><td>enhancer</td><td>elevate</td><td>scale</td><td>favorable</td><td>unfavorable</td><td>favoritism</td></tr><tr><td>beneficial</td><td>benefactor</td><td>profit</td><td>profitable</td><td>lucrative</td><td>distract</td></tr><tr><td>distraction</td><td>dispute</td><td>fund</td><td>grant</td><td>pension</td><td>inclined</td></tr><tr><td>inclination</td><td>prone</td><td>formulate</td><td>reform</td><td>transformer</td><td>involve</td></tr><tr><td>involvement</td><td>revolve</td><td>evolve</td><td>revolution</td><td>refrain</td><td>confine</td></tr><tr><td>mandate</td><td>mindset</td><td>ideology</td><td>patentable</td><td>outlet</td><td>term</td></tr><tr><td>terminology</td><td>craft</td><td>dealing</td><td>dealer</td><td>address</td><td>discourse</td></tr><tr><td>curriculum</td><td>board</td><td>broad</td><td>broadband</td><td>extinction</td><td>interpret</td></tr><tr><td>interpretation</td><td>misinterpret</td><td>membership</td><td>remark</td><td>manipulate</td><td>hack</td></tr><tr><td>manipulation</td><td>communal</td><td>community</td><td>corporate</td><td>corporation</td><td>account</td></tr><tr><td>accountable</td><td>claimant</td><td>claim</td><td>declare</td><td>alleged</td><td>contend</td></tr><tr><td>manuscript</td><td>practicality</td><td>malpractice</td><td>impractical</td><td>practically</td><td>routine</td></tr><tr><td>routinely</td><td>instinct</td><td>instinctively</td><td>viscerally</td><td>entrust</td><td>inhabit</td></tr><tr><td>evade</td><td>comparable</td><td>comparatively</td><td>contrast</td><td>evident</td><td>justification</td></tr><tr><td>jurisdiction</td><td>notably</td><td>present</td><td>absently</td><td>embody</td><td>Behalf</td></tr></tbody></table><table><thead><tr><th>peer</th><th>respectively</th><th>reckon</th><th>emerge</th><th>prompt</th><th>spur</th></tr></thead><tbody><tr><td>foster</td><td>extraordinarily</td><td>supposedly</td><td>impose</td><td>opposite</td><td>opponent</td></tr><tr><td>hypothesis</td><td>premise</td><td>presumably</td><td>susceptible</td><td>unionist</td><td>union</td></tr><tr><td>associate</td><td>infer</td><td>inference</td><td>criterion</td><td>norm</td><td>physically</td></tr><tr><td>psychiatrist</td><td>consent</td><td>consensus</td><td>constant</td><td>constantly</td><td>permanent</td></tr><tr><td>perpetuate</td><td>advance</td><td>bleak</td><td>deficiency</td><td>profession</td><td>amateur</td></tr><tr><td>qualify</td><td>qualification</td><td>eligible</td><td>applicant</td><td>application</td><td>exert</td></tr><tr><td>utilise</td><td>counterbalance</td><td>hunt</td><td>elaborate</td><td>lengthy</td><td>roughly</td></tr><tr><td>entail</td><td>outsource</td><td>recur</td><td>incur</td><td>dependency</td><td>dependent</td></tr><tr><td>lean</td><td>neutral</td><td>neutrality</td><td>official</td><td>executive</td><td>authority</td></tr><tr><td>correspond</td><td>correspondence</td><td>whereas</td><td>despite</td><td>otherwise</td><td>nevertheless</td></tr><tr><td>nonetheless</td><td>acknowledgeable</td><td>biomass</td><td>substantial</td><td>nation</td><td>outbreak</td></tr><tr><td>groundbreaking</td><td>examine</td><td>inspect</td><td>scrutinise</td><td>scrutiny</td><td>recognition</td></tr><tr><td>department</td><td>bureau</td><td>bureaucratic</td><td>correlation</td><td>relative</td><td>related</td></tr><tr><td>relevant</td><td>characterise</td><td>characteristic</td><td>revelation</td><td>institution</td><td>institutional</td></tr><tr><td>institute</td><td>behave</td><td>attribute</td><td>distribute</td><td>redistribution</td><td>existential</td></tr><tr><td>lineage</td><td>paternity</td><td>paternal</td><td>superfluous</td><td>sustain</td><td>sustainable</td></tr></tbody></table><table><thead><tr><th>ignorant</th><th>neglect</th><th>forge</th><th>stickness</th><th>attach</th><th>bond</th></tr></thead><tbody><tr><td>adhere</td><td>esteem</td><td>scholarly</td><td>merit</td><td>downside</td><td>discover</td></tr><tr><td>senate</td><td>senator</td><td>criticism</td><td>critic</td><td>critique</td><td>blame</td></tr><tr><td>warrent</td><td>realm</td><td>acreage</td><td>auction</td><td>gratification</td><td>cater</td></tr><tr><td>intricate</td><td>intricacy</td><td>generative</td><td>regard</td><td>regarding</td><td>disregard</td></tr><tr><td>excavation</td><td>utterance</td><td>gasp</td><td>hinder</td><td>curb</td><td>obstacle</td></tr><tr><td>analogy</td><td>charge</td><td>assemble</td><td>converge</td><td>casino</td><td>debt</td></tr><tr><td>conscious</td><td>cognitive</td><td>concept</td><td>spoil</td><td>disruptive</td><td>havoc</td></tr><tr><td>deprive</td><td>secure</td><td>safeguard</td><td>diffuse</td><td>diffusionism</td><td>confront</td></tr><tr><td>eslimate</td><td>unexpected</td><td>bearing</td><td>skeptical</td><td>assuage</td><td>alleviate</td></tr><tr><td>essential</td><td>indispensable</td><td>underlying</td><td>press</td><td>divide</td><td>division</td></tr><tr><td>notoriously</td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table><h2 id="clear"><a href="#clear" class="headerlink" title="clear"></a>clear</h2><table><thead><tr><th>mutual</th><th>communal</th><th>community</th><th>conviction</th><th>convention</th><th>convince</th></tr></thead><tbody><tr><td>commit</td><td>comment</td><td>commute</td><td>commuter</td><td>conventional</td><td>construct</td></tr><tr><td>claim</td><td>contend</td><td>content</td><td>contradict</td><td>contrast</td><td>contract</td></tr><tr><td>unconventional</td><td>constitute</td><td>constitution</td><td>candidate</td><td>consolidate</td><td>conscious</td></tr><tr><td>cognitive</td><td>composure</td><td>compensate</td><td>compulsive</td><td>crash</td><td>crack</td></tr><tr><td>confront</td><td>consent</td><td>consult</td><td>consist</td><td></td><td></td></tr><tr><td>assist</td><td>insist</td><td>insistence</td><td>assert</td><td>asset</td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>estimate</td><td>eliminate</td><td></td><td>reluctant</td><td>fuctuant</td><td></td></tr><tr><td>tactic</td><td>tackle</td><td></td><td>acquire</td><td>acquantance</td><td></td></tr><tr><td>contemporary</td><td>temporary</td><td></td><td>construct</td><td>instruct</td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>evidence</td><td>presence</td><td>essence</td><td>confidence</td><td></td><td></td></tr><tr><td>evaluate</td><td>calculate</td><td>circulation</td><td></td><td>intense</td><td>dense</td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>compromise</td><td>entrust</td><td>commission</td><td></td><td>convey</td><td>converge</td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>extraordinarily</td><td>absently</td><td>presumably</td><td>comparatively</td><td>respectively</td><td>supposedly</td></tr><tr><td>notaly</td><td>predictably</td><td>conventionally</td><td>honorably</td><td>incidentally</td><td>distinctly</td></tr><tr><td>consistently</td><td>profoundly</td><td>dramatically</td><td>initially</td><td>radically</td><td>distinctly</td></tr><tr><td>accordingly</td><td>intentionally</td><td>markedly</td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>likewise</td><td>hitherto</td><td>hence</td><td>furthermore</td><td>moreover</td><td>besides</td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>holistic</td><td>hostile</td><td></td><td>visible</td><td>visual</td><td></td></tr><tr><td>integrate</td><td>integrity</td><td></td><td>strain</td><td>stain</td><td></td></tr><tr><td>solid</td><td>sober</td><td></td><td>predator</td><td>precede</td><td>procedd</td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>tempt</td><td>contempt</td><td>construct</td><td>instruct</td><td></td><td></td></tr><tr><td>interview</td><td>intervene</td><td>internal</td><td>external</td><td></td><td></td></tr><tr><td>contain</td><td>retain</td><td>restore</td><td>revive</td><td>resume</td><td>restraint</td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>defy</td><td>comply</td><td>imply</td><td>explicit</td><td></td><td>Fame</td></tr><tr><td>notion</td><td>noble</td><td>notoriously</td><td></td><td>steep</td><td>sweeping</td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>leak</td><td>lack</td><td></td><td>easy</td><td>cease</td><td>obese</td></tr><tr><td>sketch</td><td>stretch</td><td></td><td>prosecute</td><td>obscure</td><td>secure</td></tr><tr><td>immense</td><td>immersive</td><td></td><td>plausible</td><td>plateau</td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>unexpected</td><td>comprehensive</td><td>specialised</td><td>comparable</td><td>memorable</td><td>predictable</td></tr><tr><td>miserable</td><td>desirable</td><td>advisable</td><td>competent</td><td>consistent</td><td>inconsistent</td></tr><tr><td>persistent</td><td>magnificent</td><td>High-profile</td><td>impressive</td><td>impressionable</td><td>fantastic</td></tr><tr><td>fascinating</td><td>permissive</td><td>operative</td><td>persuasive</td><td>remarkable</td><td>marked</td></tr><tr><td>remarkable</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>habit</td><td>addiction</td><td></td><td>anonymous</td><td>autonumous</td><td></td></tr><tr><td>reckon</td><td>resemble</td><td>assemble</td><td>assume</td><td></td><td></td></tr><tr><td>surppress</td><td>surpass</td><td></td><td>behalf</td><td>behave</td><td></td></tr><tr><td>regarding</td><td>regardless</td><td></td><td>aggravate</td><td>exaggerate</td><td>extravagant</td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>indirect</td><td>incident</td><td>accident</td><td></td><td>lure</td><td>luxury</td></tr><tr><td>intricate</td><td>intricacy</td><td></td><td>allegiance</td><td>alleviate</td><td></td></tr><tr><td>pandemic</td><td>epidemic</td><td></td><td>forge</td><td>fake</td><td></td></tr><tr><td>adhere</td><td>admit</td><td>submit</td><td></td><td>symptom</td><td>sympathy</td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>explore</td><td>prospect</td><td>propose</td><td>prosper</td><td>prosperity</td><td>prompt</td></tr><tr><td>proportion</td><td>property</td><td></td><td></td><td>overweight</td><td>overwhelm</td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>forecast</td><td>foreshadow</td><td>foresee</td><td>feasible</td><td>feeble</td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>prominent</td><td>prime</td><td>premium</td><td></td><td>gasp</td><td>grasp</td></tr><tr><td>inhabit</td><td>inherit</td><td>inherent</td><td></td><td>intuitive</td><td>initiative</td></tr><tr><td>biography</td><td>biology</td><td></td><td></td><td>subtitle</td><td>subtle</td></tr><tr><td>heritage</td><td>prestige</td><td></td><td></td><td>intuitive</td><td>initiative</td></tr><tr><td>exhausted</td><td>enthusiastic</td><td></td><td></td><td>disposition</td><td>indignation</td></tr><tr><td>discuss</td><td>disguise</td><td>deceive</td><td>incentive</td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>paralysis</td><td>paradox</td><td>paradise</td><td>parachute</td><td></td><td></td></tr><tr><td>outlive</td><td>outweigh</td><td></td><td>undermine</td><td>underlying</td><td></td></tr><tr><td>rival</td><td>revive</td><td></td><td>rage</td><td>rally</td><td></td></tr><tr><td>enviable</td><td>evident</td><td></td><td>essential</td><td>potential</td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>coordinate</td><td>cooperate</td><td>collaborate</td><td></td><td>precise</td><td>perceive</td></tr><tr><td>counter</td><td>contradict</td><td></td><td></td><td>sharp</td><td>harsh</td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>dwelling</td><td>dweller</td><td>dealing</td><td>dealings</td><td>dilemma</td><td></td></tr><tr><td>transplant</td><td>transparent</td><td>transient</td><td>transition</td><td>transfer</td><td>transmit</td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>wander</td><td>wonder</td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>plausible</td><td>unilateral</td><td>desperate</td><td>bearing</td><td>assuage</td><td>mechanism</td></tr><tr><td>deteriorate</td><td>sober</td><td>sweeping</td><td>hostile</td><td>resent</td><td>Coax</td></tr></tbody></table></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E5%A4%96%E8%AF%AD/">外语</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E8%8B%B1%E8%AF%AD/">英语</category>
      
      
      <comments>https://www.ninojay.top/2022/1-21unit/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>I dirnk wine</title>
      <link>https://www.ninojay.top/2022/I-dirnk-wine/</link>
      <guid>https://www.ninojay.top/2022/I-dirnk-wine/</guid>
      <pubDate>Wed, 26 Jan 2022 22:27:35 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><h2 id="背景"><a href="#背景" class="headerlink" title="背景"></a>背景</h2><div align="middle"><iframe allow="autoplay *; encrypted-media *; fullscreen *" frameborder="0" height="150" style="width:100%;max-width:660px;overflow:hidden;background:transparent;" sandbox="allow-forms allow-popups allow-same-origin allow-scripts allow-storage-access-by-user-activation allow-top-navigation-by-user-activation" src="https://embed.music.apple.com/cn/album/i-drink-wine/1590035691?i=1590036250"></iframe></div><br><p>今年一开始让我产生共鸣的一首歌。歌词写的很棒，Adele演唱的也很好。还去看了B站Adele演唱这首歌的视频，对Adele也更加喜欢了。</p><p>Adele的各个专辑几乎是自己各个人生阶段不同的感悟，从而产生的作品。我今天突然在想：<strong>人活着如果不能表达自己，那么一生只能为别人表达他们自己。</strong></p><p>真是可悲的一件事。我想反驳者会说：“我们就想过这样轻松的生活。”</p><p>我也不轻松，但是我接受不轻松～</p><p>我觉得，人活着就不要想着轻松。这样<strong>反而</strong>轻松了一些，哈哈。</p><blockquote><p>先在乎自己的感受，思想，行动。尊重他人之前，先尊重自己的一切。这件事本来就不轻松呀。</p></blockquote><h2 id="视频"><a href="#视频" class="headerlink" title="视频"></a>视频</h2><div style="position: relative; padding: 30% 45%;"><iframe style="position: absolute; width: 100%; height: 100%; left: 0; top: 0;" src="//player.bilibili.com/player.html?aid=934381863&amp;bvid=BV13M4y1P7PM&amp;cid=447999850&amp;page=1&amp;as_wide=1&amp;high_quality=1&amp;danmaku=0" frameborder="no" scrolling="no"></iframe></div><h2 id="歌词"><a href="#歌词" class="headerlink" title="歌词"></a>歌词</h2><center><p>How can one become so bounded by choices that somebody else makes?</p><p>一个人怎会被他人的抉择所束缚</p><p>How come we both become a version of a person we don’t even like?</p><p>我们怎么都变成了自己不喜欢的模样</p><p>We’re in love with the world but the world just wants to bring us down</p><p>我们热爱这个世界，这个世界却热衷于将我们击垮</p><p>By puttin’ ideals in our heads that corrupt our hearts somehow</p><p>把理想灌输到我们的脑中，就这样腐蚀我们的心灵</p><p>When I was a child every single thing could blow my mind</p><p>当我还是个孩子的时候，世间新鲜的一切都每每让我惊奇</p><p>Soaking it all up for fun but now I only soak up wine</p><p>曾经在乐趣中享受一切，但现在我只想沉浸在葡萄美酒里</p><p>They say to play hard, you work hard, find balance in the sacrifice</p><p>他们说要尽情去玩，卖力工作，在自我牺牲中寻求微妙平衡</p><p>Yet I don’t know anybody who’s truly satisfied</p><p>我至今未遇到过谁对生活百分百满意</p><p>You better believe I’m trying (Trying, trying)</p><p>你最好相信我在尝试</p><p>To keep climbing (Climbing, climbing)</p><p>继续攀登</p><p>But the higher we climb feels like we’re both none the wiser (Ah, ah, ah, ah)</p><p>但是我们越到高处，越发感觉我们都并非智者</p><p>So I hope I learn to get over myself</p><p>所以我只希望我能学会克服自己</p><p>Stop trying to be somebody else</p><p>不要再努力着成为别人</p><p>So we can love each other for free</p><p>那样我们就能随心所欲去爱着对方</p><p>Everybody wants something, you just want me</p><p>每个人都渴求不满，而你只想要我</p><p>Why am I obsessing about the things I can’t control?</p><p>而为何我对那些我无法控制的东西如此着迷</p><p>Why am I seeking approval from people I don’t even know?</p><p>为何我要去寻求陌生人的认可</p><p>In these crazy times I hope to find something I can cling onto</p><p>在疯狂岁月，我希望找到我能紧握的依靠</p><p>‘Cause I need some substance in my life, something real, something that feels true</p><p>因为我的生活需要一些真实的东西，一些真实存在的东西，至少让我感觉很真实的东西</p><p>You better believe for you I’ve cried (I’ve cried, I’ve cried)</p><p>你最好相信我曾为你哭泣</p><p>High tides (High tides, high tides)</p><p>如同高涨的潮浪</p><p>‘Cause I want you so bad, but you can’t fight fire with fire (Ah, ah, ah, ah)</p><p>因为我太渴望你，你却难解我思念之苦</p><p>Oh-oh, oh-oh</p><p>I hope I learn to get over myself</p><p>我只希望我能学会克服自己</p><p>Stop trying to be somebody else</p><p>不要再努力着成为别人</p><p>Oh, I just want to love you, love you for free</p><p>我只想爱你，随心所欲去爱你</p><p>‘Cause everybody wants something from me, you just want me</p><p>因为每个人都想从我这里得到什么，而你想要只是我</p><p>Listen, I know how low I can go, I give as good as I get</p><p>我知道我能够有多么卑微，我会尽我所能为你付出</p><p>You get the brunt of it all ‘cause you’re all I’ve got left</p><p>你首先拥有我的一切，因为我剩下的只有你</p><p>I hope in time (Hope in time) we both will find (We’ll both find) peace of mind</p><p>我希望届时我们都能找到心灵的平静</p><p>Sometimes the road less traveled is the road best left behind (Ah, ah, ah, ah)</p><p>有时候，人迹罕至的道路才是最好的那一条道路</p><p>Well, so I hope I learn to get over myself</p><p>所以我只希望我能学会克服自己</p><p>Stop trying to be somebody else</p><p>不要再努力着成为别人</p><p>Oh, I just want to love you, love you for free, yeah</p><p>我只想爱你，随心所欲去爱你</p><p>‘Cause everybody wants something from me, you just want me</p><p>因为每个人都想从我这里得到什么，而你想要只是我</p><p>You better believe I’m trying (Trying, trying)</p><p>但你最好相信我在尝试</p><p>To keep climbing (Climbing, climbing)</p><p>继续攀登</p><p>But the higher we climb feels like we’re both none the wiser</p><p>但是我们越到高处，越发感觉我们都并非智者</p><p>The only regret I have</p><p>我唯一的遗憾</p><p>I wish that it was just a different time</p><p>是我希望能够相遇在不同的时刻</p><p>A most turbulent period of my life</p><p>我一生中最动荡的时期</p><p>I won’t have without you</p><p>没有你我无法拥有</p><p>Like it’s just like a very heavy thing to talk about</p><p>讨论起它就像提起一件沉重往事</p><p>But because of that period of time</p><p>但正好是因为那段时间</p><p>Even though it was so much fun</p><p>尽管它乐趣万般</p><p>I didn’t get to go and to make new memories with him</p><p>我还未能够和他一起创造新的回忆</p><p>There was just memories in the big storm</p><p>只有回忆关于那场逝去的风暴</p></center></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E5%A3%B0%E5%85%89/">声光</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E6%AD%8C%E6%9B%B2/">歌曲</category>
      
      
      <comments>https://www.ninojay.top/2022/I-dirnk-wine/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>GTD思想</title>
      <link>https://www.ninojay.top/2022/GTD/</link>
      <guid>https://www.ninojay.top/2022/GTD/</guid>
      <pubDate>Sun, 23 Jan 2022 17:16:48 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><blockquote><p> <em>GTD -&gt; Get Things Done</em></p></blockquote><p>所谓GTD思想，即是大部分管理软件所倡导的思想。</p><p>我们熟知的一些系统管理软件都是基于GTD思想来为用户设计的，比如ios，ipadOS，mac系统中的提醒事项、日历、备忘录。根据亲身经历并细心观察，大部分用户和我一样并没有深入学习软件的使用，直接暴力地使用软件常见的功能。我有时候总觉得有些不得劲，明明软件设计的很精巧，随着时间推移，我产生的内容在软件中越来越杂乱无章，即便是在我时不时刻意去分类的情况下。</p><p><em><strong>掌握GTD思想更有助于合理使用软件服务生活、改善焦虑与拖延症、今日事今日毕。</strong></em></p><p>这里是直接借鉴<a href="https://www.youtube.com/watch?v=fFE0Td2o98Y">YouTuber“mac云课堂”的休康</a>总结的使用方法，完全够用。具体的GTD思想的细节使用，就贴一下维基百科：<a href="https://en.wikipedia.org/wiki/Getting_Things_Done">https://en.wikipedia.org/wiki/Getting_Things_Done</a></p><h2 id="具体内容"><a href="#具体内容" class="headerlink" title="具体内容"></a>具体内容</h2><p>按照休康的总结，GTD <em>(Get Things Done)</em> 分为五个步骤：捕获、明晰、组织、回顾、执行</p><p>捕获：弄一个收集箱，把脑袋中所有的想法记录下来。</p><p>明晰：将这些想法进行分类。</p><p>组织：按照分类将它们放到对应的清单。</p><p>回顾：每天<strong>固定的时间</strong>查看收集、项目清单的内容，拆解项目清单的步骤。</p><p>执行：在执行清单中<strong>列出</strong>每个任务需要的时间，并按照花费时间由少到多进行排序去<strong>完成</strong>。</p><p><a href="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/postImages/GTD.jpg" title="ios提醒事项" class="gallery-item" style="box-shadow: none;"> <img src="https://jsd.cdn.zzko.cn/gh/hininojay/images/source/img/postImages/GTD.jpg" alt="ios提醒事项"></a></p><p>ps：</p><ol><li>把任何一项待做/任务都以<strong>动词开头</strong>。比如“奖学金申请”，应该写成“填写奖学金申请表”，并且不能以模糊的动词比如“完成”、“做完”等等。这样就能大幅减少看到一件待做不想去理它、不知道具体该做什么的烦恼。</li><li>如果发现没法给予任务一个动词，代表这个任务属于<strong>需要再细拆分</strong>，直到可以为每一项任务加上动词。在等待事项里，也可以试试看把一些任务转换为主动跟进。</li><li>如果是<strong>事件安排时间</strong>已经确定，即可以将其放在<strong>日历</strong>里面。</li><li>等待清单，应当是需要等待第三方的回馈后再进行执行的事件，最好已<strong>“等待xxx”</strong>命名</li><li>项目清单是无法直接的完成，需要拆解步骤的任务</li><li>可能清单则是目前相对来说无法完成的事情，比如学一门乐器，后续时机成熟的时候再拆解，制定详细的步骤</li></ol></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E8%BD%AF%E4%BB%B6/">软件</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E6%96%B9%E6%B3%95%E8%AE%BA/">方法论</category>
      
      
      <comments>https://www.ninojay.top/2022/GTD/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>2022年1月份的一些摘抄</title>
      <link>https://www.ninojay.top/2022/excerpts-from-january-2022/</link>
      <guid>https://www.ninojay.top/2022/excerpts-from-january-2022/</guid>
      <pubDate>Sun, 23 Jan 2022 05:27:37 GMT</pubDate>
      
        
        
          
          
      <description>&lt;link</description>
          
        
      
      
      
      <content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/hint.css/2.7.0/hint.min.css"><div class=".article-gallery"><p><strong>对待生命，不妨大胆一点，因为我们终将失去它。</strong>-尼采</p><hr><p><em>I’ve learned that people will forget what you said, people will forget what you did, but people will never forget how you</em> made them feel.</p><p><em>Don’t cry because it’s over, smile because it happened</em></p><blockquote><p>不要因为结束而哭泣，微笑吧，至少你曾经拥有过。</p></blockquote><p><em>An ounce of practice is worth more than tons of preaching</em></p><blockquote><p>再微小的实践也远胜繁多的说教。</p></blockquote><p><em>A crisis is a terrible thing to waste</em></p><blockquote><p>白白浪费危机是非常糟糕的事。</p></blockquote><p><em>The greatest danger for most of us doesn’t lie in setting our aim too high and falling short, but in setting our aim too low and achieving our mark</em></p><blockquote><p>对于大多数人来说，最可怕的危险不在于把目标设定得太高却达不到，而是把目标设得过低而达到了。</p></blockquote><hr><p>米兰昆德拉：“人一旦沉醉于自身的软弱，就会一味地软弱下去。会在众目睽睽中倒下，倒在街头，倒在比地面更低的地方。”</p><p>言轻莫劝人。</p><hr><p><em>The only way to become excellent is to be endlessly fascinated by doing the same thing over and over. You have to fall in love with boredom</em></p><blockquote><p><strong>脱颖而出的唯一方法，就是无止境地着迷于反复做同样的事情。你必须爱上无趣。</strong></p></blockquote><p><em>You don’t persuade people through the intellect. You do it through emotion</em></p><blockquote><p><strong>说服别人靠的不是智慧，而是情感。</strong></p></blockquote><hr><p><strong>唾面自干，才是低调的最高境界。</strong></p><p><strong>王小波：“<strong><strong>我活在世上，无非想要明白些道理，遇见些有趣的事。倘能如我所愿。我的一生也就算成功。</strong></strong>”</strong> </p><hr><p>永远不要认为我们可以逃避，</p><p>我们的每一步都决定着最后的结局，</p><p>我们的脚正在走向我们自己选定的终点。</p><hr><p>尘世上那些爱我的人，用尽方法拉住我。</p><p>你不一样，你的爱比他们伟大的多。</p><p>你让我自由。</p></div>]]></content:encoded>
      
      
      <category domain="https://www.ninojay.top/categories/%E5%A3%B0%E5%85%89/">声光</category>
      
      
      <category domain="https://www.ninojay.top/tags/%E9%98%85%E8%AF%BB/">阅读</category>
      
      <category domain="https://www.ninojay.top/tags/%E6%91%98%E6%8A%84/">摘抄</category>
      
      <category domain="https://www.ninojay.top/tags/%E5%8F%A5%E5%AD%90/">句子</category>
      
      
      <comments>https://www.ninojay.top/2022/excerpts-from-january-2022/#disqus_thread</comments>
      
    </item>
    
  </channel>
</rss>
