动画(漫画)纪行
动画开了一些坑现在都没看完,开个专栏记录一下防止自己遗忘,也可以用以分享一下感想,记录追更时的心路历程。 暗杀教室 偶然刷到了暗杀教室10周年再放送的视频,这部10年前被封杀导致我看得断断续续的作品一下子勾起了我在小学和表哥以及在同学家里一起看这部番的记忆,不太确定自己当时是否完整看完了,决定趁这个机会重新补一遍。 本身并不是很严肃写实的作品,某些情节现在再看还会觉得有些中二,但作品从始至...
动画开了一些坑现在都没看完,开个专栏记录一下防止自己遗忘,也可以用以分享一下感想,记录追更时的心路历程。 暗杀教室 偶然刷到了暗杀教室10周年再放送的视频,这部10年前被封杀导致我看得断断续续的作品一下子勾起了我在小学和表哥以及在同学家里一起看这部番的记忆,不太确定自己当时是否完整看完了,决定趁这个机会重新补一遍。 本身并不是很严肃写实的作品,某些情节现在再看还会觉得有些中二,但作品从始至...
动态规划五部曲: 确定dp数组(dp table)以及下标的含义 确定递推公式 dp数组如何初始化 确定遍历顺序 举例推导dp数组 做动规的题目,写代码之前一定要把状态转移在dp数组的上具体情况模拟一遍,心中有数,确定最后推出的是想要的结果。如果代码没通过就打印dp数组,看看是不是和自己预先推导的哪里不一样。如果打印出来和自己预先模拟推导是一样的,那么就是自己的递归...
贪心算法并没有固定的套路。所以唯一的难点就是如何通过局部最优,推出整体最优。体感就是贪心算法挺看感觉的,十分取巧,多做多练才能在遇到难题的时候想到比较好的策略,此外大多数贪心的题目往往可以通过动态规划来解决,动态规划还是作为重点内容,贪心算法就不把遇到的所有题目都记录下来了。 摆动序列 问题:如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可...
之前已经在二叉树的部分接触到了回溯算法,实际上回溯法解决的问题都可以抽象为树形结构,因为回溯法解决的都是在集合中递归查找子集,集合的大小就构成了树的宽度,递归的深度就构成了树的深度,递归就要有终止条件,所以必然是一棵高度有限的树。 回溯三部曲: 回溯函数模板返回值以及参数:回溯算法中函数返回值一般为void,但回溯算法需要的参数可不像二叉树递归的时候那么容易一次性确定下来,所以一般是...
二叉树遍历 递归遍历 这是所有二叉树递归的题目离不开的基础,不同的遍历顺序决定了递归逻辑的顺序。 递归算法的三个要素: 确定递归函数的参数和返回值: 确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。 确定终止条件: 写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条...
栈 用栈实现队列 问题:用栈实现队列,请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty) 这题是一道简单的模拟题,考察栈的常用方法,很适合对栈有一个初步的理解。由于栈的特性,只用一个栈是无法实现队列的,我们构造一个输入栈一个输出栈。 代码示例: class MyQueue { Stack<Integer> ...
字符串的操作主要涉及到String,char[],StringBuilder,StringBuffer四种,值得注意的是,Java中String是无法被修改的,所以做题的时候往往涉及到这几种类型的转换,需要熟悉不同类型的操作方法。 字符串操作常用方法: toCharArray(String):可以将String类转换为char数组。 String(char[], left, ri...
什么是哈希表?可以是数组,可以是HashSet,可以是HashMap,我做哈希表这类题时更多的是不知道怎么灵活使用哈希表提供的方法,希望通过这个专题的学习能够有所进步。 HashMap常用方法: put(key,value),我们经常用存储一些常用的数据,比如flag、百分比之类的,我们就可以返回map结构,如果key相同则值会覆盖,允许key和value为null。 get(k...
链表基础 移除链表 问题:给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val == val的节点,并返回新的头节点。 这个问题很简单,不需要过多进行说明,但在解题的过程中会碰到各种各样隐形的问题,比如NullPointerException、要考虑头结点需要删除时的情况等等,对于头结点的特殊处理,可以采用添加虚拟节点再进行统一处理,也可以不添加虚拟节点特殊...
二分查找 二分查找 问题: 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 该题问题在于边界的处理,到底是 while(left < right) 还是 while(left <= right),到底是right = middle呢,还是要right =...