- 博客(39)
- 资源 (1)
- 收藏
- 关注
原创 JAVA8 新特性 Lambda 表达式 / 方法引用
JAVA8 新特性Lambda 表达式匿名类定义语法表达式定义条件 必备一个【函数式接口】接口的匿名类实现方式表达式实现方式一 :表达式实现方式二:表达式实现方式三:方法引用引用的实现方式:引用的更多实现方式:常用函数式接口1. Consumer【消费型接口】2. Supplier【供给型接口】3. Function【函数型接口】4. Predicate【断言型接口】Lambda 表达式匿名类定义语法首先需要掌握匿名类的使用规则,可点击本链接了解表达式定义条件 必备一个【函数式接口】必须定义
2020-05-20 02:38:22 144
原创 N皇后问题的思路整理
代码如下:package beginner.dynamic_programming;import utils.StopWatch;/** * @Auther: 苏察哈尔丶灿 * @Date: 2020/10/18 15:46 * @Slogan: 我自横刀向天笑,笑完我就去睡觉。 */public class NQueen { /** * @param i 当前行 * @param record 索引为行号 值为列号 * @param n
2020-10-18 19:53:09 481
原创 并查集的合并流程
并查集的合并流程和对应判断操作只考虑引用类型,基本值类型暂未判断代码和思路如下:package beginner.set;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Stack;/** * 并查集 * * @Auther: 苏察哈尔丶灿 * @Date: 2020/9/29 14:45 * @Slogan: 我自横刀向天笑,笑完我就去睡觉。 */pu
2020-09-29 15:42:25 453
原创 二叉树中两节点的最低公共祖先
二叉树中两节点的最低公共祖先要求如下:给定一个头节点head和另外两个节点 a b返回 a 和 b 的最低公共祖先代码和思路如下:package beginner.tree;/** * 给定一个头节点head * 和另外两个节点 a b * 返回 a 和 b 的最低公共祖先 * * @Auther: 苏察哈尔丶灿 * @Date: 2020/9/28 14:10 * @Slogan: 我自横刀向天笑,笑完我就去睡觉。 */public class LowParentNo
2020-09-28 15:11:16 234
原创 最大的子搜索二叉树的大小 树型DP
最大的子搜索二叉树的大小 树型DP代码和注释原理如下:package beginner.tree;/** * 最大的子搜索二叉树的大小 * Dynamic Programming * * @Auther: 苏察哈尔丶灿 * @Date: 2020/9/27 16:25 * @Slogan: 我自横刀向天笑,笑完我就去睡觉。 */public class MaxSubSBTSize { // 需要向子树寻求的信息 private class Info {
2020-09-27 17:20:03 193
原创 堆结构与比较器
数组与比较运算符实现大顶堆package beginner.tree;import java.util.Arrays;/** * @Auther: 苏察哈尔丶灿 * @Date: 2020/8/26 14:03 * @Slogan: 我自横刀向天笑,笑完我就去睡觉。 */public class HeapTree { // 数据 private int[] dataArr; // 数组大小 private int limit; // 堆使用大
2020-08-26 15:56:42 176
原创 策略模式的思路整理
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。例如,植物大战僵尸中不同的僵尸有不同的属性,如下表:类型外观移动攻击普通僵尸普通朝一个方向移动咬旗手僵尸普通 + 手持旗子朝一个方向移动咬舞王僵尸衣着华丽太空步召唤术它们之间有相同的属性,也有各自独立的功能实现,每种功能之间也并无依赖关系,互相独立。设计代码如下:定义移动接口类package strategy;
2020-08-08 10:55:32 255
原创 装饰器模式的思路整理
在不改变原有对象的基础上,将新功能附加到原对象上,例如生活中在拍照的基础上添加美颜,此功能就相当于一个装饰作用。定义抽象接口做统一调用标准package decorator;/** * @Auther: 苏察哈尔丶灿 * @Date: 2020/8/8 09:11 * @Slogan: 我自横刀向天笑,笑完我就去睡觉。 */public interface IComponent { void operation();}定义相机类package decorator;/
2020-08-08 09:24:31 107
原创 适配器模式的思路整理
家用220v的电压经过手机充电器的适配可以转化为手机需要的5v电压,就是一个最好的适配器的例子。适配器要实现的功能接口package adapter;/** * @Auther: 苏察哈尔丶灿 * @Date: 2020/8/7 16:41 * @Slogan: 我自横刀向天笑,笑完我就去睡觉。 */public interface ITarget { void output5v();}家用电压类package adapter;/** * @Auther: 苏察哈
2020-08-07 16:51:43 159
原创 门面模式的思路整理
提供一致的对外访问接口,内部自己实现具体逻辑的调用子接口一:package facade;/** * @Auther: 苏察哈尔丶灿 * @Date: 2020/8/7 16:09 * @Slogan: 我自横刀向天笑,笑完我就去睡觉。 */public class Client1 { public void method1(){ System.out.println("Client1 method1 doSomething...."); }}子接口
2020-08-07 16:26:03 194
原创 享元模式的思路整理
目的是为了节省不必要的重复开销。尽可能减少相似类的重复创建,可以想象有一个地图,里面有很多树,但是种类就那么几种,所以不需要创建太多的树对象,这种情况并不适合用单例,可以采用享元模式。树节点对象:package flyweight;/** * @Auther: 苏察哈尔丶灿 * @Date: 2020/8/7 15:40 * @Slogan: 我自横刀向天笑,笑完我就去睡觉。 */public class Tree { public final String name;
2020-08-07 15:56:34 127
原创 建造者模式的思路整理
定义需要创建的实体类package builder;/** * @Auther: 苏察哈尔丶灿 * @Date: 2020/8/7 11:29 * @Slogan: 我自横刀向天笑,笑完我就去睡觉。 */public class Product { private String param1; private String param2; private String param3; private String param4; private Str
2020-08-07 14:35:27 185
原创 合并区间 给出一个区间的集合,请合并所有重叠的区间。
给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间[1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。代码如下:import java.util.ArrayList;import java.util.Arrays;
2020-08-06 21:54:12 1558
原创 LeetCode 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5 输出: 2示例 2:输入: [1,3,5,6], 2 输出: 1示例 3:输入: [1,3,5,6], 7 输出: 4示例 4:输入: [1,3,5,6], 0 输出: 0代码如下:/** * 搜索插入位置 * * @Auther: 苏察哈尔丶灿 * @Date: 2020
2020-08-06 20:17:02 87
原创 寻找数组的中心索引
给定一个整数类型的数组 nums,请编写一个能够返回数组 “中心索引” 的方法。我们是这样定义数组 中心索引 的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。示例一:输入:nums = [1, 7, 3, 6, 5, 6]输出:3解释:索引 3 (nums[3] = 6) 的左侧数之和 (1 + 7 + 3 = 11),与右侧数之和 (5 + 6 = 11) 相等。
2020-08-06 20:02:59 109
原创 单例设计模式的思路整理
单例的不同实现方式饿汉式懒汉式静态内部类饿汉式package singleton;/** * 饿汉式 线程安全 * 利用类加载机制,无需多余处理 * * @Auther: 苏察哈尔丶灿 * @Date: 2020/8/6 17:03 * @Slogan: 我自横刀向天笑,笑完我就去睡觉。 */public class HungrySingleton { private static HungrySingleton instance = new HungrySingleton(
2020-08-06 17:46:50 157
原创 mysql 查询性能对比
表结构及数据如下mysql 各种type下性能分析 查询性能从上往下依次递减-- mysql 各种type下性能分析 查询性能从上往下依次递减-- null 在执行阶段不用访问表或索引EXPLAIN SELECT 1;-- system 查询中有且只有一条匹配行EXPLAIN SELECT * FROM sys;-- const 使用【主键索引】【去重索引】来确定行 可以确定唯一行EXPLAIN SELECT * FROM `user` WHERE id = 1;-- eq
2020-08-05 09:50:23 276
原创 单例、懒汉模式的思路整理
采用双检锁/双重校验锁(DCL,即 double-checked locking)package single;/** * 懒汉模式的单例 * * @author 苏察哈尔丶灿 */public class SingleCase { // 类的唯一实例 private static SingleCase instance = null; // 构造方法私有化,阻止外部生成对象 private SingleCase() { } /** * 第一种做法 *
2020-08-03 09:59:01 141
原创 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。p
2020-07-11 17:23:24 1620
原创 二叉搜索树、二叉查找树、二叉排序树
二叉搜索树、二叉查找树、二叉排序树基本的二叉树结构可点此查看二叉搜索树,又称二叉查找树、二叉排序树对于树结构中不合理的根节点选取,可能会导致此树形结构退化为链表结构,因此有更进一步的自平衡二叉树,如红黑树等,本文不做探讨。本示例二叉树结构如下图:树结构代码如下:package structure;// 节点类class Node { int data; Node left = null; Node right = null; public Node(int data)
2020-07-08 16:07:31 184
原创 基本的二叉树结构,前序、中序、后序遍历方式的差异
二叉树及遍历效果的实现本示例二叉树结构如下图:package structure;/* * 树节点对象 * * 为了缩减代码量 省略了get set方法 */class TreeNode { char data; TreeNode leftTreeNode; TreeNode rightTreeNode; public TreeNode(char data, TreeNode leftTreeNode, TreeNode rightTreeNode) { this.
2020-07-07 21:39:39 310
原创 背包问题的思路整理
背包问题的思路整理package algorithm;import java.util.Arrays;public class Backpack { public static void main(String[] args) { backpack(); } public static void backpack() { /* * 物品 1 2 3 4 * 价值 60 100 120 61 * 重量 1 2 3 1 */
2020-07-06 22:42:44 231
原创 快速排序的思路整理
快速排序的实现package algorithm;import java.util.Arrays;public class QuicklySort { public static void main(String[] args) { int[] arr1 = { 45, 28, 80, 90, 50, 16, 100, 10 }; // 快速排序详解 quicklySort(arr1, 0, arr1.length - 1); echoArr(arr1);
2020-07-04 21:03:35 139
原创 猴子吃桃问题的思路整理
猴子吃桃问题: 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个 ,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃前一天剩下的一半零一个,到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少个桃子?答案为:1534个。package algorithm;public class Monkey { public static void main(String[] args) { /* * 猴子吃桃问题: * *
2020-07-04 18:52:07 766
原创 冒泡排序的思路整理
冒泡排序的实现package algorithm;public class BubbleSort { public static void main(String[] args) { int[] arr1 = { 5, 8, 6, 3, 1, 9, 7, 4, 2 }; // 不知道是什么排序 sort(arr1); echoArr(arr1); int[] arr2 = { 5, 8, 6, 3, 1, 9, 7, 4, 2 }; // 冒泡排序
2020-07-03 14:17:56 235
原创 归并排序的思路整理
归并排序的实现package algorithm;public class MergeSort { public static void main(String[] args) { int[] arr = { 9, 8, 7, 0, 1, 3, 2, 5 }; // 插入排序 递归 + 分治 mergeSort(arr, 0, arr.length - 1);// 0 7 echoArr(arr, 0, arr.length - 1); } // 归并排序 publ
2020-07-03 10:26:52 159
原创 插入排序的思路整理
插入排序的实现package algorithm;public class InsertSort { public static void main(String[] args) { // 插入排序 insertSort(); } // 输出数组内容的方法 public static void echoArr(int[] arr) { for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]);
2020-07-03 09:08:31 198
原创 兔子数列递归算法实现的一些补充
兔子数列递归算法实现的一些补充本文整理了一些兔子数列更多递归算法的实现,如【缓存递归】,【尾递归】等。但是性能都受栈空间大小的限制,并不是最佳的实现算法兔子数列动态规划实现,请点此链接查看package algorithm;public class Fibonacci { public static int[] fibarr; public static void main(String[] args) { // 求兔子数列第45位 int n = 45; fibarr
2020-07-02 20:38:41 346
原创 【^ 亦或运算符】 实现【变量值交换】和 【数组反转】
使用 【^ 亦或运算符】 实现【变量值交换】和 【数组反转】废话不多说,直接上代码,一切尽在注释中!!!废话不多说,直接上代码,一切尽在注释中!!!package demo;public class XOR { public static void main(String[] args) { // 使用亦或运算符 更换两个变量的值 changeNumber(1, 2);// 2, 1 // 定义一个数组 int[] arrOne = { 0, 1, 2,
2020-07-02 11:55:21 432
原创 求解一个集合中是否能组成某个数-子集问题
求解一个集合中是否能组成某个数-子集问题public class SubSet { public static void main(String[] args) { // 求数组中能否组成9 子集问题 以下数中能否组成9 -只考虑正数集合 // 负数动态规划难以创建记录对应关系 正数下限为0 负数无下限 int arr1[] = { 3, 34, 4, 12, 5, 2 }; System.out.println("递归求解:" + recSubSet(arr1, 5, 9));
2020-06-22 01:48:09 290
原创 兔子数列的不同实现方式
兔子数列的不同实现方式public class Demo { public static void main(String[] args) { // 求所有互不相邻的数的最大和【15 - 1, 4, 7, 3】 int arr[] = { 1, 2, 4, 1, 7, 8, 3 }; // 递归实现 重复子问题处理过多 System.out.println(rec_opt(arr, arr.length - 1));// 15 // 动态规划实现 System.out.pri
2020-06-20 12:26:56 426
原创 JS 原型链__proto__ prototype
JS 原型链中【__proto__】【prototype】 属性的区别__proto__将属性绑定到父对象上prototype 将属性绑定到本对象实例上【而非 本对象】结论:附全部代码如下:先定义一个 User 函数 【即下文中所有的 本对象】围绕这个函数的 【__proto__】 和 【prototype】 属性进行对比试验function User() {}__proto__将属性绑定到父对象上在此例中,即绑定到 Object 对象上作用:【可供所有兄弟对象使用】执行操作:绑定
2020-06-02 19:30:23 158
原创 C 中的指针变量
C中的指针 可以理解为一个【引用类型的变量】(存储的是另一个变量的内存地址)#include<stdio.h>// C中的指针 可以理解为一个【引用类型的变量】(存储的是另一个变量的内存地址)int main(){ int varA = 20; int varB = varA; int *varC = &varA; printf("&varA 这个语句获取了内存地址:%p \n", &varA);
2020-05-27 17:19:10 138
原创 PHP 对于容器设计思想的实现
PHP 对于容器设计思想的实现1. 先声明一个类,用于后续使用2. 声明一个容器类,用于存取数据对象3. 程序开始时往容器中注册数据4. 使用时获取数据。1. 先声明一个类,用于后续使用class Person{ public function __construct() { echo "Person 被实例化了<br/>"; } public function say() { echo "Person 说话了<
2020-05-26 22:35:21 227
原创 JAVA 匿名类的使用
JAVA中匿名类的使用前置条件:一个匿名类 必须【实现一个接口】或【继承一个类】匿名类语法:new <父类或者接口名> (<参数列表>) { 成员定义} ;附代码如下:package learn;// 预先定义一个类(也可定义一个接口)class Father{ }public class Demo { public static void main
2020-05-18 13:02:08 296
原创 JAVA 获取指定目录下各级子目录中每种类型文件的个数
package day_22;import java.io.File;import java.util.Map;import java.util.Set;import java.util.TreeMap;import java.util.Map.Entry;public class Demo2 { public static void main(String[] args) { // 获取指定目录下各级子目录中每种类型文件的个数 String path = "E:/";
2020-05-13 21:12:17 851
原创 HashMap 给定一个字符串,请输出该字符串由哪些字符组成,每个字符出现几次
给定一个字符串,请输出该字符串由哪些字符组成,每个字符出现几次, 使用 HashMap 存储结果import java.util.HashMap;import java.util.Map;import java.util.Map.Entry;import java.util.Set;public class Demo { public static void main(String[] args) { // (Map) 给定一个字符串,请输出该字符串由哪些字符组成,每个字符出现几次?
2020-05-12 00:02:54 1272
原创 JAVA简单实现冒泡排序,选择排序!
JAVA简单实现冒泡排序,选择排序!还是强烈推荐使用jdk中Arrrays类自带的sort排序,此代码只做了解练习。public class DemoSort{ public static void main(String[] args){ int[] arr = {9,20,59,995,382,90,727,948,71,7284,827,2321}; maoPao...
2020-04-06 17:28:16 127
原创 获取一串数字中每一位数的小技巧
JAVA入门基础知识积累获取一串数字中每一位数的小技巧获取一串数字中每一位数的小技巧假定有一个五位数 57648 ,我们要获取他的万位、千位、百位、十位、个位的每一个数值,有一个比较方便的做法,不用去做字串截取。// 数值 57648int num= 57648;// 万位 除以一万int wanWei = num / 10000;// 利用自动类型转换获取得到 5 以下同理//...
2020-04-04 23:20:01 1833
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人