EverydayTopics-2023-Oct-31

题目

2003. 每棵子树内缺失的最小基因值

解法

本来我自己想的思路是:

  1. 对于每个节点计算其子树
  2. 对于每个分离下来的子树计算其缺失的最小基因
  3. 记录最小基因

但是这么来算的话,每次都要对子树进行一次遍历,时间复杂度大概有O(n)了,估计按照我模拟的思路也是太久了,于是遂作罢,直接看答案了。

官方题解有两个:

  1. dfs+启发式合并
    但启发式合并我看不懂,后面看了一下OiWIKI也是非常一知半解,就没有耗费更多的时间在上面,直接看dfs了。

  2. 纯dfs
    dfs的解法是:

    1. 若树中无基因值为1的节点,则1为任意子树的最小缺失基因值。
    2. 若树中含有基因值为1的节点,则对于其的任意子树有以下两种情况:
      1. 以该节点为根的子树不包含基因值为1的节点
        那么其缺失值就为1
      2. 以该节点为根的子树包含基因值为1的节点
        在情况2中,该节点肯定为基因值为1的节点的先祖节点,即在基因值为1的节点的上面。

    同时我们又知:父节点的基因值集合肯定是大于子节点的基因值集合的。

写到这里发现上面这一句有啥用呢?也推不出来什么结果。这题的思路还是不是很清晰,明天如果有空的话再理一下吧。

知识:

  1. dfs
  2. 树状结构
  3. 启发式合并(不会)

EverydayTopics-2023-Oct-30

题目

1. 两数之和

解法

暴力

第一想到的就是暴力:一个个算呗,但是这样感觉效率还是太低了,总之贴上代码:

1
2
3
4
5
6
7
8
9
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
n=len(nums)
for i in range(n-1):
n1=nums[i]
for j in range(i+1,n):
n2=nums[j]
if n1+n2==target:
return [i,j]

其他解法

注意到这里的目的是对于x,查找target-x是否在该表中。那么用搜索的想法的话,可以用2分法,时间复杂度为O(nlogn)。

官方解法里给出了一个O(n)的算法:创建一个哈希表,遍历所有的数据,对于每一个x,查找target-x是否在这之中,如果不存在的话则将x存入表中,因为xtarget-x肯定是双向的,所以同样也可以用target-x来查找x。利用哈希表的查找效率为O(1),一次遍历即可。

贴上代码:

1
2
3
4
5
6
7
8
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
hashtable = dict()
for i, num in enumerate(nums):
if target - num in hashtable:
return [hashtable[target - num], i]
hashtable[nums[i]] = i
return []

补充知识

enumerate函数

这其中

1
enumerate(nums)

是python中的枚举函数,用法如下:

enumerate() 是一个 Python 内置函数,用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

1
2
3
4
5
6
7
8
citys = ["jinan", "qingdao", "yantai", "zibo"]
for index,city in enumerate(citys):
print(index,city)
# 输出:
0 jinan
1 qingdao
2 yantai
3 zibo

enumerate() 还接受第二个参数(可选),该参数允许决定索引从哪个数字开始。如果可选的 start 参数不存在,则默认情况下索引从 0 开始。

1
2
3
4
5
6
7
8
citys = ["jinan", "qingdao", "yantai", "zibo"]
for index,city in enumerate(citys,101):
print(index,city)
# 输出:
101 jinan
102 qingdao
103 yantai
104 zibo

哈希表

哈希表(hash tab),亦为散列表。是一个将查找表中的关键字映射成为关键字对应函数的地址。当然这一题中我们并不关注哈希表是如何实现的,但实际上哈希表的哈希函数(散列函数)也是这个内容考察的重要一部分。此处不再赘述

打算考研,随便投着玩的,投的系统开发部,本来以为做前后端,结果面试的时候才知道是bms电池?让我去面试了,面试流程如下:

  1. 自我介绍(1min):我主要说自己学了什么语言,搞了啥项目自己负责的哪一块,然后点了一下自己学生会里的职责
  2. 问我学生会职责的具体职能(我是校园文化部部长)
  3. 问我兴趣爱好,我回答了一堆,说我兴趣爱好挺广泛
  4. 说工作地点在深圳能接受吗 (bms电池研发)
  5. 问我用三个词形容一下自己
  6. 家族是否有遗传病史
  7. 问我数字逻辑挂科了为啥挂的,我说我期末问的都挺好,但是莫名其妙挂科了,然后hr还跟我说她大一的时候高数30分,这算是安慰我吗?
  8. 反问环节:
    1. 内部培训流程
    2. 我会不会有竞赛机会
    3. 竞聘流程
  9. 让我等bms二面

总体还行,hr也很和善还和我开玩笑来着,最后提醒我多注意信息等bms二面干嘛的,要么电话面试要么tx会议面试,

dairy-23-10-19-1

“就是说,嗯,你今年报浙大你就报,然后呢,你就照着这个浙大的这个目标去。”

“然后呢,你就该怎么学你就怎么学,你把基础过完,过强化专业课该怎么过怎么过,然后政治英语呢,能有时间背就背,懂我意思吧。如果没有太多时间呢,你就去找一些比较走捷径的这个方法。“

“然后呢,你今年考完之后,你冷,你再冷静一下,就是好好的去考虑一下考研这件事,以及你考研的院校。”

“啥意思呢?就是说你可以给自己想一想,就是你如果明年二战的话,你还愿不愿意再考一年,然后你去哪里考,怎么考,和谁一起。企业,然后最重要的是择校。”

“我个人建议啊,如果你就是有接着二战考研的打算的话,你的明年的择校一定要想清楚,一定要很良好,如果你。一战结束之后啊,上岸了不谈,如果没有上岸的话,你还得考虑一下明年的春招,就是你会不会考虑直接工作啊?或者说你可以结合当时的一个就业情形啊,经济环境啊,岗位等等,你可以去综合考虑。”

“如果实在找不到合适的岗位呢?而且你也觉得自己确实还想再再静修静修,再读研,再体验一下大学生活,对吧,研究生的生活,那你下定决心二战了。我个人的建议是把目标往下兼容一点,也就是说咱不是非奔着985去,或者说也不是非。奔着浙大去,你要是说有985情怀呢,你你往下看一看中流的985,看看有没有你看得上的啊,或者对吧,那啥一点儿的。那再者或者顶流一点的211呢,你看有没有看得上的,因为我个人觉得二战的话还是要图稳。”

“就是说你一定要稳稳当当的,因为你二战如果再不上岸的话,嗯,你就业是不好就业的,然后,嗯,你如果再考研的话,就相当于三战了。三战的话,你就比同龄人相当于落下来三年,就有一点儿浪费自己的时间了,所以其实原则上我是不鼓励你三战的,要是二战的话,其实还是鼓励的。”

“所以如果是这样子的话,嗯,我建议你可以考虑考虑,看看能不能往下再兼容一下,看看稍微好一点的985。或者说计算机强一点的985,比如说沈阳某985对吧,其实计算机还不错啊,当然你要是说沈阳看不上,也不想在沈阳待着,我就是想回南方,那你看看这个。江浙沪一带这个别的学校看看还有没有看得上的,比如说东南,比如说这个对吧,或者你往下看看厦门大学。或者隔壁的这种叫什么来着的,武汉啊,武汉大学也有点儿高。”

“就是我的意思就是说,你再看看别的学校对吧,你要是说没有985情怀嘛,那你211里面挑,你看上海有好几个211吧,对不对,南京有好几个211吧,苏州还有个苏州大学呢。对不对,这些也好像也不差,你看能不能接受。”

“我去年的,反正一开始是心高气傲吧,我会觉得呀,双飞不愿意去,这个也看不上,那个也看不上,觉得本科都已经211出生了,对吧,好像不能怎么样怎么样。但我现在其实真不觉得这样,我有时候,甚至我今年的想法就是,我只要能上岸,哪怕一志愿翻不了,我调剂一个双飞或者双一流,我觉得都都已经很满足了,我觉得都已经很OK了。我我一点,我要求一点不高的,真的。”

“就你会发现在短短的一年的时间内,会会发生很多事情,你的心态会发生很大的改变,你你的对心情也好,心境也好,什么的都会改变很多的。”

dairy-23-10-19

​ 记录一下现在在想什么。

​ 今天和爸爸推的一个浙大的学姐聊了很久,对我接下来考研啊各种的形式还是聊了一下。主要问题是

  1. 我如果初试过了之后简历是有些匮乏的,那么就需要在论文等这些方面上下功夫。接下来如果有机会的话还是要多找老师去做论文等内容
  2. 对于我接下来考研以及要不要二战的问题探讨了一下。学姐说接下来的就业形势会非常的困难,不过我现在想了一下,假如我没有考上研究生,那我最坏的结局是回到家里去绝味上班、或者我去外面找互联网或者其他公司来上班。那如果我

问一下面试大概都需要问什么 需要哪些工作经验之类的

​ 我在想如果我现在找工作的话,是不是也是对考研这么大的压力的一种逃避?对于我未来一年去放在这上面专心考研、有可能损失应届生身份等压力的逃避?

dairy-23-10-18

​ 今天再去看之前的散爆的校招的时候,发现它已经结束了。说实话今天上午看到这个消息的时候,心里是很不舒服的,而且带有很大的后悔。因为不知道自己以后还会不会有这种机会去试试入职散爆这种大公司了。而且接下来要怎么安排,我个人来说还是非常没底。实习相关的,现在再去犹豫也有点迟了,那么对于我来说接下来要做的到底是什么?

​ 我现在到底想要什么?我的问题到底是什么?

​ 目前而言,要做的事情上来说没有疑问的应该是去考研,然后其他的安排还是都是以这个考研来作安排的。包括之后明年上半年去做实习或者找项目做,其实也都是为了丰富自己的简历,从而在以后的工作或者考研复试面试上有更好的优势。那么对于这件事的安排其实就是说定了。

​ 对于接下来的安排,主要还是今年接下来怎么办、今年接下来要学什么以及寒假之后学什么的问题。我想做的事情大概有如下:

  • 算法方面的学习
  • go语言的学习
  • 其他的暂时还没想到

​ 其实这么看的话,未定的事情其实没有那么多了,主要的还是明年的上半年应该要干嘛这件事。今天下午后来报了好几个企业,总的来说我个人还是觉得会有更做一些实际的事情,让我心里觉得没有那么焦虑了。

diary-23/10/5

当在无数个不经意间看到了时间流逝的痕迹的时候,我总是会有恍惚感。

​ 今天晚上,在我和以往无数个摸鱼的日子一样,打开浏览器想要翻找最新的、能够给我带来多巴胺刺激的视频的时候,一个许久不联系的高中同学打来的电话使我倍感意外。在和她几句简短的寒暄之后,她简要地说明了来意:一个在高中的哥们的情绪似乎有些不对劲,想让一个和他关系不错的人问问他什么情况,她想到了让我去打这个电话。

​ 其实这个时候我是有些犹豫的,因为说到底,我其实自己觉得和那个哥们的关系属于是:说疏远也有很多话题,但说亲近,倒也没那么铁的关系。这个可能是因为我个人那个时候对所有人的一种疏离感导致的吧。过去的影子终究还是对现在产生了影响,对我而言这影响就是听到请求后那三五秒钟的犹豫。

​ 不过最后我还是答应了请求,同意给我的哥们去打这个电话,问问他近况如何心情怎么样,最近有什么烦心事。但我是勉强地答应的:因为我其实不知道该怎么说。

​ 好在电话接通的那一瞬间,我的哥们电话那头传来的声音抚平了我那多少有些内耗的精神。随着我的一句“最近在干啥呢哇”,我们便开始了了无止境的无厘头对话,就像我们还在高中那关系最铁的一段时间那样。男生之间的话题能聊什么呢?自然也逃不过学习生活工作、金钱女人还有理想。我们就这样你一句我一句唠了一个点,从尽管说过无数遍,但再听到仍然会有新鲜感的谁谁谁的黑料,到如今谁谁谁的生活又已经怎样怎样怎样;从玩了很久的某个游戏开发商撤出了国内,到以后工作学习生活上的打算,我们什么都聊。但充斥在这些琐碎的、繁杂的字词句之中的,更多的其实也是多少年前的自己的缅怀,对过往的人和事的缅怀,对过去的影子的缅怀。

​ 我们彼此打了招呼,说好以后一定要去谁谁谁那里玩,谁谁谁下次一定要请客,然后电话愉悦地结束。我向最开始那位向我提出请求的同学报了平安,我们再寒暄一阵,也结束了对话。那个时候我突然有一种感觉,好像大家都没变,我们还是原来高中的我们,说的话题也都是高中的时候我们会说的话题;但是现在再想想,或许我们之间早就有了一层厚厚的障壁吧。

​ 其实写这篇日记的初衷也并不在此,真正引发我对时间流逝的这个感叹的事情,是我在打完电话之后做在线表格的时候。那时候我突然想去看看,我以前创立的部门的团队文档还在不在。然后在我登陆进去我的wps企业号,点进那个大二大三点进过无数遍的团队文档,发现里面从充满了文件到只剩下空空如也的时候,我突然发现,时间确确实实地是已经流逝了,并且把仍然在其中挣扎的我推向了很远很远的远方,不舍昼夜地推着,不舍昼夜地。

ps: 附上最后和哥们的聊天记录:

caption

开发博客日志#1:博客的搭建

前言

​ 其实在很早的时候就有类似于想要搭建一个可以放自己写的东西的平台的想法,之前实施过的方法有:微信公众号,但抛开微信带来的诸多限制不说,其本身所有的“分享”的性质似乎与我本人的想法并不是特别符合,再加上看到那么多所谓“为了赚钱而设立的’公众号‘ “,我个人也就对这个平台多少带有了一点刻板印象与偏见。另外一个方法则是自己花钱租域名租服务器设立了一个自己的网站。这个性质似乎与现在的其实也差不太多,但是当时因为我个人疏于维护,这个网站在后期也就慢慢地一点点荒废掉了。所以之前的两次尝试最后其实都还是以失败告终。

​ 现在最终选择以Hexo+Github Page这么一个平台作为我创作的空间,一方面是非常方便,对于发布上面的内容,我只需要将blog编辑好后在命令行上直接上传即可,至于目录、模板等乱七八糟的东西Hexo会直接给我处理好的;另一方面其实也是懒得折腾了,毕竟我也不是很想搞太多的美化之类的东西,够用就可以。

​ 那有人就要说了:你够用就行干嘛不在自己的便签里写日记啊?我只能说你说的对,确实可以这么做,但是当我扪心自问时,我想说其实我还是有那么一点虚荣心想要其他人肯定的,这也是为什么我一直寻求想要在一些私密但是同样又足够公开的地方写一些所谓我的心里话吧。

​ 不过话又说回来,所谓分享分享,也并没有高低之分吧。有些为爱发电那值得尊敬,有的想要挣钱自然也是不磕碜了。不禁想到了学院里公众号的制作,可能有这一部分原因在吧。

个人开发环境

​ 扯远了。本文中将主要围绕”开始搭建“这么一环节,对搭建博客的这么流程稍作叙述,同时将我过程中所遇到的问题以及困难等东西进行记录。我使用的开发环境如下:

1
2
3
4
5
6
7
8
9
system: macoS Sonoma 14.0
environment:
terminal.app for installing npm and some other things
Webstorm for editing .yml files and page templates
git:
git version 2.39.2 (Apple Git-143)
node: v16.9.1
hexo:
hexo-cli: 4.3.1

​ 鉴于macOS与Windows的差异性,本文中所包含的命令行指令未必能够在Windows环境下正确运行,请注意鉴别。那么接下来就开始正式的搭建过程:

前期准备

Github相关

​ Github Pages貌似是一个可以让Github帮你托管服务器的地方,而且是全免费的,具体的我其实也没太了解,包括automatic action之类的东西,不过现阶段我们先不用管这些。

什么是Github?

​ 我们既然想把博客发在Github Pages上,你总得知道这个是啥东西吧?现本文中仅引用百度百科中的一段话作为介绍:

GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。GitHub拥有1亿以上的开发人员,400万以上组织机构和3.3亿以上资料库。

——百度百科

​ 此处默认读者了解了Github是什么,并且创建了Github的账号,在这里赘述过多未免有偏题的嫌疑。

创建仓库

​ 想要在Github上发布自己的博客,需要将自己的

环境安装

1. 安装git

​ 鉴于读者看到这里可能我个人git是在很早很早之前就已经装好了,现在直接就可以用的。

blakr-first-blog

Test

试试这个新的博客的内容与自动发布,如果这个好用的话,也许也不用每一次都非要跑到网站上自己去点了,就很方便。

接下来要撰写的内容主要是:

  1. 对于微信机器人的开发过程
    这个应该是一个会比较长且持续更新的blog,不过我不知道一键发布的时候会不会同时也对已经发布过的博客进行更改,待会可以试试看。
  2. 学习其他内容上的东西
    这个应该就是一些乱七八糟的内容了,或许是看书的笔记,或许是学习上面的一些心得。之前也有用过微信公众号这样的形式,但是个人体感并不是很好,而且如果用公众号的话,或许这就和我的初衷有所违背了,毕竟写这些东西还是以记录为主,而非炫耀给别人看

目前就先这么多吧,似乎md上也有支持插件的内容,公式这一些也是可以的。不过那些都是后话了。

编辑:我
校对:我