2024.01.05_学习日记

天气:晴
学习地点:宿舍
学习时长:6h

学习内容

  1. 猿辅导面试题
    Alt text
    这个题核心是想到,如果有a个1,那必定有a个0是右括号,剩下n-2a/2对括号可以随意更改颜色,k种颜色就是k的这么多次方,然后如果有s种左右括号的确定值存在,就乘以s,最后写递归,i表示位置,j表示左括号比右括号多的个数,有一个剪枝就是当n-i<j时,就得跳出。最后是动态规划。
  2. 米哈游面试题
    Alt text
    这个题首先是要会图的构建,【0:【next】】,list里套list即可,然后想到dfs,题目的要求可以转化为,任意一个head的多条边,颜色至少两种,所以准备两种着色方式,123,132,head为1,另外两条边按照这两条边来着色,用index%3可以重复123这个过程,并且有个筛选过程就是对没着色的才着色,着色的是父节点。然后一直dfs,最后对其他边分别着色132即可,最后返回colors数组。还有如果没找到有多个子节点的head的话,就返回1,1就行。
  3. 逆波兰式(lc150)
    Alt text
    逆波兰式表达成算术表达式,就是用到两个栈,第一个栈放值,第二个栈放值得类型,分为数字,加减,乘除,如果是数字,直接加入栈,如果是加减,返回一个a + b,并且第二个栈入加减,如果是乘除,第二个栈入乘除,然后判断左边和右边的数得类型,如果是加减那就要加括号,再返回。
  4. lc2360(想了很久很久)
    Alt text
    这个题就是用一个数组记录访问该点的时间,如果该点访问过,还要判断访问时间和当前时间的大小,区分是老环还是新环,这个题做了两三个小时,又想多做两个题,又饿,搞得后面很紧张,其实题目本身不难,但是太急了,什么都想不好。。。
  5. 打怪物
    Alt text
    看血量,很大,所以放弃递归,然后想到二分法能不能做,看单调性。先找到中间值看能不能死,不可能死就在右边,能死就在左边,判断能不能死就看每次的攻击伤害谁更高。任何窗口和二分问题都要看单调性。
  6. 最大栈
    Alt text
    用加强堆来实现栈内的元素排序,保存的是节点的内存地址,栈内放的元素是双向链表。这样就能实现最大栈。

学习心得

今天刷题数量达标,最大栈这个问题还要看看,加强堆的结构后面再去了解一下,加油!