自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 Head First 设计模式笔记 4.工厂模式

这篇博客记录了`new`操作符新建对象不够灵活的问题,通过一个披萨系统讲解了简单工厂,工厂方法模式,抽象工厂模式。并对依赖倒置原则进行了简单的说明。

2020-12-31 20:50:29 213

原创 剑指 Offer 07. 重建二叉树

先序遍历顺序[根节点|左子树|右子树]中序遍历顺序[左子树|根节点|右子树]例如题目中前序遍历划分 [ 3 | 9 | 20 15 7 ]中序遍历划分 [ 9 | 3 | 15 20 7 ]基于这两个序列的性质,我们可以设计如下算法按序访问前序遍历序列,得到根节点root在中序遍历序列查找root,得到[左子树,root,右子树]根据2中得到的左右子树长度,可以将前序遍历序列划分为[root,左子树,右子树]这里2中查找root的方法有两种,一种是直接按序查找中序遍历序列,时间复杂

2020-12-31 11:40:15 84

原创 Head First 设计模式笔记 3.装饰者模式

这篇博客简要通过一个订单系统案例,各种调料装饰饮品,最后计算咖啡价格。由此介绍了对**扩展开放-对修改关闭**的设计原则和**装饰者模式**的基本概念,它的基础类图,最后用设计者模式将调味料作为装饰者,将饮料作为被装饰者。解决了这一问题并且实现了对应代码。

2020-12-30 15:46:59 313

原创 Head First 设计模式笔记 2.观察者模式

**观测者模式**定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会受到通知并自动更新。这里简要写一下为何使用观察者模式,如何实现以及它在Java中的内置类。

2020-12-30 10:54:41 151

原创 剑指 Offer 06. 从尾到头打印链表

分析没有啥好说的,三种解法,这里只写第一种逆序操作基本上就是堆栈了。遍历List,将其数据压到栈中。再将栈中的数据弹出到数组,完。当然,也可以两次遍历List,第一次遍历得到list的大小,分配对应大小的数组,第二次遍历,倒序地将数插入数组即可。基于递归基于堆栈/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * Lis

2020-12-30 09:31:47 106

原创 剑指 Offer 05. 替换空格

剑指 Offer 05. 替换空格函数搞定用String的replaceAll函数class Solution { public String replaceSpace(String s) { return s.replaceAll(" ", "%20"); }}基于字符串加法的解粗暴的解法直接初始化一个空的目标串res,遍历源串每个元素s若s不为空格直接复制,res+=sres += sres+=s否则,res+="%20"res += "\%20"r

2020-12-30 08:51:04 87

原创 剑指Offer 不修改数组找出重复的数字

acwing链接这里题目要求不修改原来的数组,并且空间复杂度要求为O(1)O(1)O(1)。这里可以用二分查找的方法。设leftleftleft是搜索范围的开始,rightrightright为搜索范围的结束。midmidmid为它们的中间值统计数组中[left,mid][left, mid][left,mid]之间数字的次数cntcntcnt,与left和right之间的数字个数mid−left+1mid- left + 1mid−left+1进行比较。left=rightleft = right

2020-12-29 09:54:36 131

原创 剑指 Offer 04. 二维数组中的查找

这道题有三种解法暴力算法,直接遍历所有元素,时间复杂度为O(n2)O(n^2)O(n2),空间复杂度为O(1)O(1)O(1),没有利用到从左到右和从上到下递增的特性,是我们的下界从右上角开始遍历如果目标值等于当前值,返回True如果目标值小于当前值,则向左移动,即行数-1如果目标值大于当前值,则向下移动,即列数+1最后的算法复杂度为O(m+n)O(m + n)O(m+n),空间复杂度为O(1)O(1)O(1),只用考虑数组的行数和列数的增减,比较方便。/*1.暴力算法,直

2020-12-28 10:08:25 73

原创 Head First 设计模式笔记 1.策略模式

这篇文章将通过一个鸭子的设计修改过程,讲解一点关于策略模式的知识以及一些常用的设计原则。

2020-12-27 21:26:37 169 2

原创 欧拉环游和中国邮递员问题

这篇文章介绍了欧拉环游的定义判定,Fleury算法求欧拉图中的欧拉环游,最后给出了中国邮递员问题的解决步骤。

2020-12-27 12:25:54 5852

原创 剑指 Offer 03. 数组中重复的数字

leetcode题目链接 剑指 Offer 03. 数组中重复的数字这里有三种方法:利用排序,根据数组的每个元素是否与相邻的元素相等,来判断重复值。时间复杂度O(nlogn)O(nlog n)O(nlogn),空间复杂度为O(1)O(1)O(1)利用哈希表或者数组记录每个元素的次数,一旦次数大于1,则返回该元素。时间复杂度和空间复杂度均为O(n)O(n)O(n)原地置换法。以上都没有利用到数组的特性,数组元素大小都在0~1之间。这里我们采用原地置换的方法,将每个元素调整到对应的位置。时间复杂度和为

2020-12-27 09:46:06 63

原创 高级数理逻辑试卷参考答案

要考高级数理逻辑了,和舍友整理了一波去年高级数理逻辑的答案,可能有错误。仅供参考,被坑了,概不负责。嘿嘿嘿。

2020-12-21 10:36:59 5459 24

原创 模态逻辑中的必然和可能

最近复习高级数理逻辑,抽空写了一下个人对于模态逻辑中关于必然和可能的理解,由于是考前突击的所以会有各种问题,有问题欢迎大家指出。

2020-12-21 09:45:17 3616 7

原创 leetcode cannot find symbol [in __Driver__.java]

在leetcode上面刷题的时候,遇到了这么个Bugn个骰子点数和error: cannot find symbol [in Driver.java]double[] ret = new Solution().dicesProbability(param_1);^symbol: method dicesProbability(int)location: class Solution后来发现是主函数的名字被我改了,少打了一个y,????class Solution { public

2020-12-13 09:42:08 8080 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除