- 博客(4)
- 收藏
- 关注
原创 动态规划算法
动态规划即将一个问题由规模最小(相同逻辑)的子问题,动态规划有两种不同的实现方式:带备忘的自顶向下法和自底向上法。自顶向下,采用的是递归的形式,与寻常递归不同的是,我们将已经进行递归运算得到的各个子问题结果存储起来——即备忘录,当下一次进行递归时遇到此问题,直接从备忘录取得结果即可,无需进行重复运算。自底向上,采用迭代循环方式,使得问题的求解仅仅依赖于比它规模更小的问题,而我们从规模最小的子问题来开始求解,在此模式下,当我们遇到规模更大的问题时,它的规模更小的前提子问题都已经完成,只需取结果就行
2021-09-15 15:45:42
113
原创 java有限状态机
今天做到leetcode第8题——字符串转换整数,给一串不规则的字符串读取出其中的整数,博主想当然的用ifelse写出了相应代码,不过边界问题在一次次调试后才完善,觉得代码编写繁重且易出错,在看了官方解答之后才发现还有状态机可以用。一番查询后了解到一些需要用到大量复杂的if else,switch case语句的情况,可以用有限状态机来降低程序的复杂性,提高代码可维护性,但是使用状态机的话子类会变多,造成类膨胀,两者的平衡需要开发者自己判断。状态机,网上大多以电梯举例,可以很方便的查询到,就不再重复讲.
2021-09-03 14:10:45
419
原创 无重复字符最长子串——利用哈希集合
解法参照leetcode上的官方解法。class Solution { public int lengthOfLongestSubstring(String s) { // 哈希集合,记录每个字符是否出现过 Set<Character> occ = new HashSet<Character>(); int n = s.length(); // 右指针,初始值为 -1,相当于我们在字符串的左边界的左侧,还没...
2021-09-01 11:14:36
334
原创 差分数组的用处
今天做leetcode 1109. 航班预订统计 算法题时发现解题可用差分数组,一番查询了解后对其进行简单的总结,希望以后能够合理运用差分数组即数组内每一项值减去前一项值的差值所得到的一个数组比如数组[2,4,3,6,8]所对应的差分数组为[0,2,-1,3,2]令b[i]=a[i+1]-a[i],一次遍历(for循环)就可以求得差分数组作为一个辅助数组使用,一般用于数组内区间元素加或减相同数值的情况当给原数组区间[n,m]中所有元素加上3时,差分数组的n项将加3(c[...
2021-08-31 15:10:34
341
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人