自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode -- Maximum SubArray

问题描述: 给定一个整数数组nums,找到具有最大总和的连续子数组(至少包含一个数字)并返回其总和。 Example: Input: [-2,1,-3,4,-1,2,1,-5,4], Output: 6 Explanation: 总和最大的子数组为 [4,-1,2,1], 总和为 6 解题思路一: 基于 DP 算法(动态规划)思想 初始最大总和为 nums[0]。从左至右遍历数组元素,依次找出 nums[0 ~ i] 中的最优解,即元素最大总和,maxSum[0 ~ i]。 找出 max

2020-07-11 13:16:27 118

原创 LeetCode -- Single Number

问题描述: 给定一个非空的整数数组,每个元素出现两次,除了其中一个,找到那一个元素。 Example : Input: [2,2,1] Output: 1 Input: [4,1,2,1,2] Output: 4 解题思路: 采用异或的方式,0 与目标数异或结果仍为目标数,两个相同的数异或结果为 0。 0 ^ a = a a ^ a = 0 所以 0 ^ a ^ b ^ a = (0 ^ b) ^ (a ^ a) = b 代码实现: class Solution { p

2020-07-11 09:06:51 162

原创 设计模式——抽象工厂模式

概述 抽象工厂模式是是对象的创建模式,它是工厂方法模式的进一步抽象和推广。当需要创建的实例来自于多个产品结构,且每个产品结构中的产品都存在相似的情况,就要用到抽象工厂模式。 抽象工厂模式与工厂方法模式的最大区别在于,工厂方法模式针对的是一个产品结构,而抽象工厂模式则针对的是多个产品结构。 如下图,有两个产品结构ProductA、ProductB,它们中的产品两两相似,那么ProductA1与...

2018-08-31 15:20:48 217

原创 设计模式——工厂方法模式

概述 工厂方法模式是类的创建模式,它是简单工厂模式的进一步抽象和推广。核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给工厂类的子类去做,该工厂类为抽象类或接口。工厂方法模式允许系统在不修改工厂类的情况下引进新的产品。 工厂方法模式涉及四个角色: 1)抽象工厂:这是工厂方法模式的核心,它与应用程序无关。任何在该模式中创建对象的工厂类必须实现这个接口或继承这个抽象类。 2)具体工厂:...

2018-08-29 21:07:22 174

原创 设计模式——简单工厂模式

概述 简单工厂(Simple Factory)模式,又称静态工厂方法模式,是类的创建模式。它就是由一个工厂类根据传入的参量决定创建出哪一种产品类的实例。 从结构图中可以看出, 简单工厂模式涉及三个角色: 工厂类:这是简单工厂模式的核心。工厂类在客户端的直接调用下创建产品对象,它往往由一个具体Java类实现。 抽象产品:是由简单工厂模式所创建的对象的父类或接口。抽象产品可以用一个Java...

2018-08-28 21:10:15 278

原创 剑指Offer——11.旋转数组的最小数字

题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{ 3,4,5,1,2 }为{ 1,2,3,4,5}的一个旋转,该数组的最小值为1。 算法思想: 本题给出的数组在一定程度上是排序的,因此可以用二分查找的思想来解决问题。 1.定义两个指针分别指向数组的第一个元素和最后一个元素。根据旋转的规则,得知第...

2018-08-10 16:46:43 152

原创 剑指Offer——10.斐波那切数列

题目1:求斐波那切数列的第n项 写一个函数,输入n,求斐波那切(Fibonacci)数列的第n项。斐波那切数列的定义如下: 算法思想: 采用递归算法可以解决上述问题。递归虽然有代码简洁的优点,但它同时也有显著的缺点。递归由于是函数调用自身,而函数调用是有时间和空间消耗的:每一次函数调用,都需要在内存栈中分配空间以保存参数、返回地址及临时变量,而且往栈里压入数据和弹出数据都需要时间。 本...

2018-08-09 14:51:44 791

原创 剑指Offer——8.二叉树的下一个节点

题目: 给定一颗二叉树和其中一个节点,如何找出中序遍历序列的下一个节点?树中的节点除了有两个分别指向左、右子节点的指针,还有一个指向父节点的指针。二叉树节点定义如下: class BinaryTreeNode { int data; BinaryTreeNode left; BinaryTreeNode right; B...

2018-08-06 20:01:52 177

原创 剑指Offer——7.重建二叉树

题目: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。二叉树节点定义如下: class BinaryTreeNode { int data; BinaryTreeNode le...

2018-08-06 16:43:59 273

原创 Java多线程总结

概述 线程是指程序在执行过程中,能够执行程序代码的一个执行单元。线程也被称为轻量级进程,它是程序执行的最小单元,一个进程可以拥有多个线程,各个线程之间共享程序的内存空间(堆空间、常量池),但是各个线程拥有自己的栈空间。 多线程对于程序的执行有以下几点好处: 可以减少程序的响应时间; 与进程相比,线程的创建和切换开销更小; 能够提高CPU的利用率; 能简化程序的结构,使程序便于理解和维护...

2018-08-04 15:37:19 229

原创 设计模式——单例模式

概述 单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。 单例模式有三个特点: 单例类只能有一个实例。 单例类必须自己创建自己的唯一实例。 单例类必须给所有其他对象提供这一实例。 单例模式的实现主要有两种方式:饿汉式、懒汉式。 饿汉式 类被加载时,就自行创建实例。代码如下: public class EagerSingleton ...

2018-08-02 20:23:22 173

原创 HashMap源码分析

概述 HashMap基于Map接口实现,元素以键值对的方式存储,并且允许使用null 建和null 值, 因为key不允许重复,因此只能有一个键为null,另外HashMap不能保证放入元素的顺序,它是无序的,和放入的顺序并不能相同。HashMap是线程不安全的。如果想要线程安全的HashMap,可以通过Collections类的静态方法synchronizedMap获得线程安全的HashMap...

2018-08-02 16:02:58 182

原创 快速排序

算法思想 1.分解。在数组arr中任选一个元素作为基准(standard)(这里将数组的第一个元素作为基准),基准在数组中的所在位置为index。以此基准将当前无序区划分为左、右两个子数组arr[low...index-1]与arr[index+1...high],使得左子数组中的元素小于等于基准,右子数组的元素大于等于基准,基准位于正确的位置,不需再参加后面的排序。 2.求解。通过递归调用快...

2018-07-30 22:03:53 356

原创 冒泡排序、选择排序、插入排序

冒泡排序 算法思想: 第一轮比较:数组中从开始位置相邻数字两两比较,数字大的后移,直到最大的数字落在数组中的最后一个位置,比较次数为数组长度减1; 第二轮比较:数组中从开始位置相邻数字两两比较,数字大的后移,直到最大的数字落在数组中的倒数第二位置,比较次数为数组长度减2; ...... 依次类推,直到数组排序完成,共进行数组长度减1轮比较。 public void bubb...

2018-07-30 18:32:22 286 1

原创 List集合的实现类总结

一、集合类关系图 上述类图中,实线边框的是类,而点线边框的是接口。 二、ArrayList 继承关系、实现接口 //继承关系 java.lang.Object java.util.AbstractCollection<E> java.util.AbstractList<E> java.util...

2018-07-27 18:03:44 5522 1

空空如也

空空如也

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

TA关注的人

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