- 博客(14)
- 收藏
- 关注
转载 原型模式的浅克隆和深克隆
原型模式简单说就是copy一遍实例,使用copy来的实例进行操作,而不改变原实例。涉及到浅克隆和深克隆。1. 浅克隆: 实现Java提供的Cloneable接口。重写 Object clone方法 return super.clone();调用时就为浅克隆。2. 深克隆: 可以使用反射进行深克隆;使用序列化进行深克隆。 这里我演示一下序列化实现深克隆。首先,被序列化的类需...
2018-10-26 15:06:00 150
转载 单例模式
单例模式初衷是为了使资源能够共享,只需要赋值或初始化一次,大家都能够重复利用。饿汉模式:在类加载的时候就立即初始化并且创建单例对象。优点是没有加任何锁,执行效率高,绝对线程安全。在用户体验上来说比懒汉模式更好,缺点是一定程度上浪费内存。懒汉模式: 在需要使用的时候才初始化,不浪费资源,但是线程不安全。单例模式的七种写法:1. 饿汉模式,线程安全public st...
2018-10-26 14:58:00 112
转载 设计模式六大原则
1. 开闭原则 开闭原则就是说对扩展开放,对修改关闭。在程序需要进行扩展的时候,不能去修改原有的代码,实现一个热插拔的效果。使用接口和抽象类,达到程序扩展性好,易于维护和升级的效果。2. 里氏替换原则 里氏替换原则是面向对象思想的基本原则之一,其表达的意思是只要父类能出现的地方,子类一定可以出现。这一原则是继承复用的基石。只有当子类替换父类,程序完全不受影响的时候,父类才...
2018-10-26 14:22:00 90
转载 LeetCode系列(十)-Divide Two Integers
Given two integers dividend and divisor, divide two integers without using multiplication, division and mod operator. Return the quotient after dividing dividend by divisor. The integer d...
2018-10-09 09:50:00 99
转载 LeetCode系列(九)-Longest Substring Without Repeating Characters
给定一个字符串,找出不含有重复字符的最长子串的长度。示例: 输入: "abcabcbb" 输出: 3 解释: 无重复字符的最长子串是 "abc",其长度为 3。解法:1.利用队列先进先出的特性。重复的元素弹出。最后算队列的长度就是字符串最大长度。 public int lengthOfLongestSubstring(String s) { ...
2018-09-12 10:23:00 79
转载 LeetCode系列(八)-Add Two Numbers
给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807解法:...
2018-09-11 22:13:00 111
转载 LeetCode系列(七)-Find All Duplicates in an Array
给定一个整数数组 a,其中1 ≤ a[i] ≤n(n为数组长度), 其中有些元素出现两次而其他元素出现一次。 找到所有出现两次的元素。 你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗?示例: 输入: [4,3,2,7,8,2,3,1] 输出: [2,3]解法:1. O(N^2): 常规解题思路,先排序。再遍历,如果...
2018-09-11 17:42:00 103
转载 LeetCode系列(六)- Search in Rotated Sorted Array
假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组[0,1,2,4,5,6,7]可能变为[4,5,6,7,0,1,2])。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回-1。 你可以假设数组中不存在重复的元素。 你的算法时间复杂度必须是O(logn) 级别。示例: 输...
2018-09-11 16:34:00 92
转载 LeetCode系列(五)-Remove Duplicates from Sorted Array II
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例: 给定 nums = [0,0,1,1,1,1,2,3,3], 函数应返回新长度 length = 7, 并且原数组的前五个元素被修改为 0, 0, 1, 1, 2,...
2018-09-11 14:47:00 121
转载 LeetCode系列(四)-4Sum
给定一个包含 n 个整数的数组 nums 和一个目标值 target, 判断 nums 中是否存在四个元素 a,b,c 和 d , 使得 a + b + c + d 的值与 target 相等? 找出所有满足条件且不重复的四元组。示例: 给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。 满足要求的四元组集合为: [ ...
2018-09-11 12:54:00 104
转载 LeetCode系列(三)-3Sum Closest
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。 找出 nums 中的三个整数,使得它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在唯一答案。示例: 例如,给定数组 nums = [-1,2,1,-4], 和 target = 1. 与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2)....
2018-09-11 12:07:00 117
转载 LeetCode系列(二)-3Sum
给定一个包含 n 个整数的数组 nums, 判断 nums 中是否存在三个元素 a,b,c , 使得 a + b + c = 0 ? 找出所有满足条件且不重复的三元组。示例: 给定数组 nums = [-1, 0, 1, 2, -1, -4], 满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ]解法:1. 时间复杂...
2018-09-11 11:34:00 87
转载 算法总结(一)-排序
根据时间复杂度排序:O(n2): 冒泡、选择、插入O(nlogn): 归并、快速、希尔、堆O(n): 计数、基数根据空间复杂度排序:O(1): 冒泡、选择、冒泡、希尔、堆O(logn)~O(n): 快速O(n): 归并O(m): 计数、基数稳定性:稳定: 冒泡、插入、归并、计数、基数不稳定: 选择、快速、希尔、堆* 排序算...
2018-09-10 21:22:00 93
转载 LeetCode系列(一)-TwoSum
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]解法:1. O(n2) 循环遍历 ...
2018-09-10 15:47:00 75
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人