02 2021 档案

摘要:第2章 一切都是对象 2.1 用引用操纵对象 把一切都看作对象,但操纵的标识符实际上是对象的一个引用 2.2 必须由你创建所有对象 2.2.1 存储到什么地方 寄存器:位于处理器内部,速度最快,但不能直接控制 堆栈:位于RAM中,通过堆栈指针分配和释放内存,对象引用存储在堆栈中,Java系统必须知道 阅读全文
posted @ 2021-02-28 19:15 一天到晚睡觉的鱼 阅读(98) 评论(0) 推荐(0)
摘要:第1章 对象导论 1.1 抽象过程 面向对象的五个基本特性: 万物皆对象 程序是对象的集合,它们通过发送消息来告知彼此所要做的 每个对象都有自己的由其他对象所构成的存储 每个对象都拥有其类型 某一特定类型的所有对象都可以接收同样的消息 对象具有状态、行为和标识 状态:内部数据 行为:方法 标识:内存 阅读全文
posted @ 2021-02-28 16:01 一天到晚睡觉的鱼 阅读(101) 评论(0) 推荐(0)
摘要:43. 字符串相乘 题目链接 模拟竖式 用num2的每一个和num1相乘,最终结果相加 注意后面要补0 class Solution { public String multiply(String num1, String num2) { int len2 = num2.length(); List 阅读全文
posted @ 2021-02-28 14:03 一天到晚睡觉的鱼 阅读(78) 评论(0) 推荐(0)
摘要:42. 接雨水 题目链接 暴力枚举 枚举每个点,分别找左边和右边的最大值,二者中较小的就是这个点的深度 每个点深度之和就是结果 class Solution { public int trap(int[] height) { int len = height.length; int ans = 0; 阅读全文
posted @ 2021-02-25 11:50 一天到晚睡觉的鱼 阅读(60) 评论(0) 推荐(0)
摘要:41. 缺失的第一个正数 题目链接 排序后寻找 先排序,再看每个位置的数是否符合 第一个不符合的位置,就是缺失的第一个正数 class Solution { public int firstMissingPositive(int[] nums) { Arrays.sort(nums); int an 阅读全文
posted @ 2021-02-24 10:37 一天到晚睡觉的鱼 阅读(62) 评论(0) 推荐(0)
摘要:第五章 字符串(三) 5.3 子字符串查找 子字符串查找:给定一段长度为N的文本和一个长度为M的模式(pattern)字符串,在文本中找到一个和该模式相符的子字符串 5.3.2 暴力子字符串查找算法 在文本中模式可能出现匹配的任何地方检查匹配是否存在 最坏情况下,暴力子字符串查找算法在长度为N的文本 阅读全文
posted @ 2021-02-23 17:18 一天到晚睡觉的鱼 阅读(92) 评论(0) 推荐(0)
摘要:40. 组合总和II 题目链接 dfs时防止重复 与上一题不同,这题中会有重复的数字,每个位置的数字只能使用一次(不同位置相同数字可以多次使用),且最终的结果不能有重复 因此需要先对candidates数组排序,dfs的时候,如果当前项和上一项相同就跳过 每次进入dfs,直接找下一个位置的数字 cl 阅读全文
posted @ 2021-02-23 11:12 一天到晚睡觉的鱼 阅读(30) 评论(0) 推荐(0)
摘要:第五章 字符串(二) 5.2 单词查找树 API中添加了以下三个方法: public class StringST<Value> String longestPrefixOf(String s) s的前缀中最长的键 Iterable<String> keysWithPrefix(String s) 阅读全文
posted @ 2021-02-22 23:16 一天到晚睡觉的鱼 阅读(89) 评论(0) 推荐(0)
摘要:39. 组合总和 题目链接 dfs class Solution { List<List<Integer>> ans; public List<List<Integer>> combinationSum(int[] candidates, int target) { ans = new ArrayL 阅读全文
posted @ 2021-02-22 10:19 一天到晚睡觉的鱼 阅读(51) 评论(0) 推荐(0)
摘要:第五章 字符串(一) 5.1 字符串排序 低位优先(LSD)的字符串排序:从右到左检查键中的字符 适用于键的长度都相同的字符串 高位优先(MSD)的字符串排序:从左到右检查键中的字符 不一定需要检查所有的输入就能完成排序 5.1.1 键索引计数法 将键值key作为索引,来进行排序 5.1.1.1 频 阅读全文
posted @ 2021-02-21 15:57 一天到晚睡觉的鱼 阅读(116) 评论(0) 推荐(0)
摘要:38. 外观数列 题目链接 按题意模拟 数上一轮产生的数字 class Solution { public String countAndSay(int n) { String s = "1"; for(int i = 1; i < n; i++){ StringBuilder sNext = ne 阅读全文
posted @ 2021-02-21 10:12 一天到晚睡觉的鱼 阅读(97) 评论(0) 推荐(0)
摘要:第四章 图(八) 4.4.5 无环加权有向图中的最短路径算法 按照拓扑排序顺序放松顶点,就能在和E+V成正比的时间内解决无环加权有向图的单点最短路径问题。 算法特点: 能够在线性时间内解决单点最短路径问题 能够处理负权重的边 能够解决相关的问题,例如找出最长的路径 4.4.6 一般加权有向图中的最短 阅读全文
posted @ 2021-02-19 20:30 一天到晚睡觉的鱼 阅读(78) 评论(0) 推荐(0)
摘要:36. 有效的数独 题目链接 直接模拟 class Solution { public boolean isValidSudoku(char[][] board) { for(int i = 0; i < 9; i++){ boolean[] marked = new boolean[9]; for 阅读全文
posted @ 2021-02-19 10:56 一天到晚睡觉的鱼 阅读(44) 评论(0) 推荐(0)
摘要:第四章 图(七) 4.4 最短路径 定义:在一幅加权有向图中,从顶点s到顶点t的最短路径是所有从s到t的路径中的权重最小者。 4.4.1 最短路径的性质 最短路径是有向的 权重不一定等价于距离 并不是所有顶点都是可达的 负权重会使问题更复杂 最短路径一般都是简单的 最短路径不一定是唯一的 可能存在平 阅读全文
posted @ 2021-02-18 22:05 一天到晚睡觉的鱼 阅读(83) 评论(0) 推荐(0)
摘要:35. 搜索插入位置 题目链接 二分查找 查找目标数,若找不到,就返回最小的大于它的数的位置 在普通二分查找的基础上,记录大于目标值的mid即可 class Solution { public int searchInsert(int[] nums, int target) { int left = 阅读全文
posted @ 2021-02-18 10:12 一天到晚睡觉的鱼 阅读(45) 评论(0) 推荐(0)
摘要:34. 在排序数组中查找元素的第一个和最后一个位置 题目链接 二分查找 先二分查找,找到后更新第一个和最后一个的位置,继续二分,找头尾 class Solution { int min = 100000 + 5, max = -1; public int[] searchRange(int[] nu 阅读全文
posted @ 2021-02-17 10:48 一天到晚睡觉的鱼 阅读(40) 评论(0) 推荐(0)
摘要:第四章 图(六) 4.3 最小生成树 加权图是每条边关联一个权值或是成本的图模型 定义:图的生成树是它的一颗含有其所有顶点的无环连通子图。一幅加权图的最小生成树(MST)是它的一颗权值(图中所有边的权值之和)最小的生成树。 一些约定: 只考虑连通图 边的权重不一定表示距离 边的权重可能是0或者负数 阅读全文
posted @ 2021-02-16 21:12 一天到晚睡觉的鱼 阅读(131) 评论(0) 推荐(0)
摘要:33. 搜索旋转排序数组 题目链接 二分查找 在普通二分查找的情况下分情况讨论 旋转排序数组一般分为两个递增的序列,只需要判断mid位于左右哪个序列中,再移动lr即可 class Solution { public int search(int[] nums, int target) { int l 阅读全文
posted @ 2021-02-16 09:45 一天到晚睡觉的鱼 阅读(30) 评论(0) 推荐(0)
摘要:32. 最长有效括号 题目链接 两遍扫描 先从左往右扫描,记录未匹配的左括号数目 若等于0,则记录当前子串长度 若小于0,则匹配失败,将下一个位置作为子串起点 若大于0,则继续匹配 从右往左再进行一次相同的扫描,就可以考虑到左括号比右括号多的情况 因为从左往右扫描,左括号比右括号多的时候,会继续往右 阅读全文
posted @ 2021-02-15 16:48 一天到晚睡觉的鱼 阅读(75) 评论(0) 推荐(0)
摘要:31. 下一个排列 题目链接 找规律 从后往前找,找到在数组末位的最长的逆序子数据,子数组的前一位就是要变的位置 要将前一位替换成逆序子数组中最小的比它大的数,然后将逆序子数组排序即可 特殊情况:全部逆序,包括数组长度为1,都直接返回有序数组即可 class Solution { public vo 阅读全文
posted @ 2021-02-14 15:48 一天到晚睡觉的鱼 阅读(33) 评论(0) 推荐(0)
摘要:第四章 图(五) 4.2.5 有向图中的强连通性 定义:如果两个顶点v和w是互相可达的,则称它们为强连通的,也就是说,既存在一条从v到w的有向路径,也存在一条从w到v的有向路径。如果一幅有向图中的任意两个顶点都是强连通的,则称这幅有向图也是强连通的。 两个顶点时强连通的,当且仅当它们都在一个普通的有 阅读全文
posted @ 2021-02-13 15:51 一天到晚睡觉的鱼 阅读(112) 评论(0) 推荐(0)
摘要:30. 串联所有单词的子串 题目链接 直接枚举所有子串 class Solution { public List<Integer> findSubstring(String s, String[] words) { int sLen = s.length(); int n = words.lengt 阅读全文
posted @ 2021-02-13 11:34 一天到晚睡觉的鱼 阅读(114) 评论(0) 推荐(0)
摘要:SpringBoot(三) 静态资源导入 webjars:前端资源的jar包形式,支持以Maven的方式引入前端资源 localhost:8080/webjars/ 静态资源位置:(classpath为resources目录) classpath:/META-INF/resources/ class 阅读全文
posted @ 2021-02-12 16:48 一天到晚睡觉的鱼 阅读(61) 评论(0) 推荐(0)
摘要:29. 两数相除 题目链接 二分+倍增 不使用除法算除法,很自然就想到二分答案 但是需要注意,要找到比商小,但是离商最接近的整数,所以二分的时候,需要l=mid,循环条件为l<r 但是也不能使用乘法,所以需要用倍增,原理如下 假设a与b相乘,即为a个b相加 我们将a用二进制表示,a & (1 << 阅读全文
posted @ 2021-02-12 10:47 一天到晚睡觉的鱼 阅读(119) 评论(0) 推荐(0)
摘要:SpringBoot(二) 自动配置原理 pom.xml spring-boot-dependencies:核心依赖在父工程中 我们在引入一些Spring Boot不需要指定版本,就是因为有这些版本仓库 启动器 <dependency> <groupId>org.springframework.bo 阅读全文
posted @ 2021-02-11 16:33 一天到晚睡觉的鱼 阅读(57) 评论(0) 推荐(0)
摘要:28. 实现strStr() 题目链接 双指针 class Solution { public int strStr(String haystack, String needle) { if(needle.length() == 0) return 0; int len1 = haystack.le 阅读全文
posted @ 2021-02-11 09:52 一天到晚睡觉的鱼 阅读(52) 评论(0) 推荐(0)
摘要:第四章 图(四) 4.2 有向图 4.2.1 术语 定义:一幅有方向性的图(或有向图)是由一组顶点和一组有方向的边组成的,每条有方向的边都连接着有序的一对顶点。 我们称一条有向边由第一个顶点指出并指向第二个顶点 在一幅有向图中,一个顶点的出度为由该顶点指出的边的总数,入度为指向该顶点的边的总数 定义 阅读全文
posted @ 2021-02-10 22:44 一天到晚睡觉的鱼 阅读(154) 评论(0) 推荐(0)
摘要:SpringBoot(一) 简介 Spring是为了解决企业级应用开发的复杂性而创建的,简化开发 Spring Boot基于Spring开发,核心思想是约定大于配置 Spring Boot的主要优点: 为所有Spring开发者更快的入门 开箱即用,提供各种默认配置来简化项目配置 内嵌式容器简化Web 阅读全文
posted @ 2021-02-10 17:45 一天到晚睡觉的鱼 阅读(63) 评论(0) 推荐(0)
摘要:Vue(三) 第一个vue-cli项目 vue-cli是官方提供的一个脚手架,用于快速生成一个vue的项目模板 环境配置 安装Node.js 官网下载地址,无脑下一步 在cmd中输入node -v和npm -v进行测试 安装淘宝镜像加速器(cnpm),npm install cnpm -g 安装过程 阅读全文
posted @ 2021-02-10 15:50 一天到晚睡觉的鱼 阅读(91) 评论(0) 推荐(0)
摘要:27. 移除元素 题目链接 与26题类似 class Solution { public int removeElement(int[] nums, int val) { int ans = nums.length; int p1 = 0; for(int p2 = 0; p2 < nums.len 阅读全文
posted @ 2021-02-10 09:19 一天到晚睡觉的鱼 阅读(35) 评论(0) 推荐(0)
摘要:Vue(二) Axios异步通信 Axios是一个开源的可以用在浏览器端和Node.js的异步通信框架,它的主要作用就是实现Ajax异步通信 <head> <meta charset="UTF-8"> <title>Title</title> <!--解决闪烁问题--> <style> [v-clo 阅读全文
posted @ 2021-02-09 14:53 一天到晚睡觉的鱼 阅读(70) 评论(0) 推荐(0)
摘要:26. 删除排序数组中的重复项 题目链接 双指针 class Solution { public int removeDuplicates(int[] nums) { int ans = nums.length; int p1 = 0; for(int p2 = 0; p2 < nums.lengt 阅读全文
posted @ 2021-02-09 09:34 一天到晚睡觉的鱼 阅读(45) 评论(0) 推荐(0)
摘要:Vue(一) MVVM Model:模型层,在这里表示JavaScript对象 View:视图层,在这里表示DOM(HTML操作的元素) ViewModel:连接视图和数据的中间件,Vue.js就是这一层的实现者 向上与视图层进行双向数据绑定 向下与Model层通过接口请求进行数据交互 第一个Vue 阅读全文
posted @ 2021-02-08 22:14 一天到晚睡觉的鱼 阅读(95) 评论(0) 推荐(0)
摘要:第四章 图(三) 4.1.6 连通分量 连通是一种等价关系,它能将所有顶点切分为等价类 连通分量的API如下: public class CC CC(Graph G) 预处理构造函数 boolean connected(int v, int w) v和w连通吗 int count() 连通分量数 i 阅读全文
posted @ 2021-02-08 21:10 一天到晚睡觉的鱼 阅读(47) 评论(0) 推荐(0)
摘要:SpringMVC(三) 拦截器 概述 SpringMVC中的拦截器类似于Servlet中的Filter,对处理器进行预处理和后处理,也可以自定义拦截器来实现特定的功能 拦截器只会拦截访问的控制器方法,不会拦截静态资源 自定义拦截器 实现HandlerInterceptor接口,重写方法 publi 阅读全文
posted @ 2021-02-07 19:51 一天到晚睡觉的鱼 阅读(49) 评论(0) 推荐(0)
摘要:24. 两两交换链表中的节点 题目链接 直接换 class Solution { public ListNode swapPairs(ListNode head) { if(head == null) return null; if(head.next == null) return head; L 阅读全文
posted @ 2021-02-07 10:17 一天到晚睡觉的鱼 阅读(47) 评论(0) 推荐(0)
摘要:SpringMVC(二) SpringMVC执行原理 DispatcherServlet表示前端控制器,用户发出请求,DispatcherServlet拦截并接收请求 HandlerMapping为处理器映射,由DispatcherServlet调用,根据请求url查找Handler Handler 阅读全文
posted @ 2021-02-05 17:40 一天到晚睡觉的鱼 阅读(84) 评论(0) 推荐(0)
摘要:23. 合并K个升序链表 题目链接 暴力合并 class Solution { public ListNode mergeKLists(ListNode[] lists) { if(lists.length == 0) return null; ListNode head = new ListNod 阅读全文
posted @ 2021-02-05 11:17 一天到晚睡觉的鱼 阅读(64) 评论(0) 推荐(0)
摘要:第四章 图(二) 4.1.3 深度优先搜索 4.1.3.2 热身 深度优先搜索(DFS)只需用一个递归方法来遍历所有顶点,在访问其中一个顶点时: 将它标记为已访问 递归地访问它的所有没有被标记过的邻居顶点 具体实现如下: public class DepthFirstSearch{ private 阅读全文
posted @ 2021-02-04 22:55 一天到晚睡觉的鱼 阅读(53) 评论(0) 推荐(0)
摘要:SpringMVC(一) MVC 模型(DAO,service)、视图(jsp)、控制器(Servlet) MVC是一种软件设计规范,将业务逻辑、数据、显式分离的方法来组织代码 降低了视图与业务逻辑之间的双向耦合 MVC框架要做的事情 将url映射到java类或java类的方法 封装用户提交的数据 阅读全文
posted @ 2021-02-04 21:48 一天到晚睡觉的鱼 阅读(61) 评论(0) 推荐(0)
摘要:Spring(三) 代理模式 静态代理 角色分析 抽象角色:一般会使用接口或者抽象类 真实角色:被代理的角色 代理角色:代理真实角色,代理真实角色后,一般会做一些附属操作 客户:访问代理对象的人 优点: 可以使真实角色的操作更加纯粹,不用去关注一些公共的业务 公共业务交给代理角色,实现业务的分工 公 阅读全文
posted @ 2021-02-04 17:21 一天到晚睡觉的鱼 阅读(72) 评论(0) 推荐(0)
摘要:22. 括号生成 题目链接 dfs+剪枝 class Solution { public List<String> generateParenthesis(int n) { List<String> ans = new ArrayList<>(); generateParenthesis(ans, 阅读全文
posted @ 2021-02-04 10:45 一天到晚睡觉的鱼 阅读(56) 评论(0) 推荐(0)
摘要:第四章 图(一) 4.1 无向图 定义:图是由一组顶点和一组能够将两个顶点相连的边组成的。 一般使用0至V-1来表示一张含有V个顶点的图的各个顶点,用v-w的记法来表示连接v和w的边 特殊的图: 自环,即一条连接一个顶点和其自身的边 连接同一对顶点的两条边称为平行边 数学家常常将含有平行边的图称为多 阅读全文
posted @ 2021-02-03 23:32 一天到晚睡觉的鱼 阅读(196) 评论(0) 推荐(0)
摘要:Spring(二) HelloSpring 实体类 @Data public class Hello { public String str; } 配置文件beans.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://ww 阅读全文
posted @ 2021-02-03 19:45 一天到晚睡觉的鱼 阅读(90) 评论(0) 推荐(0)
摘要:21. 合并两个有序链表 题目链接 迭代 class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode head = new ListNode(); ListNode p = head; whi 阅读全文
posted @ 2021-02-03 11:07 一天到晚睡觉的鱼 阅读(50) 评论(0) 推荐(0)
摘要:第三章 查找(四) 3.4 散列表 3.4.1 散列函数 散列函数的计算将键转化为数组的索引 如果我们有一个能够保存M个键值对的数组,那么我们就需要一个能够将任意键转化为该数组范围内的索引的散列函数 易于计算,并且能够均匀分布所有的键,即0到M-1之间的每个整数都能有相等的可能性与之对应 对于每种类 阅读全文
posted @ 2021-02-02 23:45 一天到晚睡觉的鱼 阅读(114) 评论(0) 推荐(0)
摘要:Spring(一) 简介 Spring是一个轻量级控制反转(IOC)和面向切面(AOP)的容器框架 目的:解决企业应用开发的复杂性 理念:使现有的技术更加容易使用,整合了现有的技术框架 使用:在Maven中导入Spring Web MVC包 这里使用5.2.12.RELEASE版本 优点 Sprin 阅读全文
posted @ 2021-02-02 21:07 一天到晚睡觉的鱼 阅读(66) 评论(0) 推荐(0)
摘要:MyBatis(四) 动态SQL 根据不同的条件生成不同的SQL语句 SQL片段 <sql id="sqlid"> ... </sql> <include refid="sqlid"></include> 最好基于表单来定义SQL片段 不要用where标签,尽量只用if标签 if <select i 阅读全文
posted @ 2021-02-02 15:54 一天到晚睡觉的鱼 阅读(59) 评论(0) 推荐(0)
摘要:20. 有效的括号 题目链接 栈 class Solution { public boolean isValid(String s) { Map<Character, Character> map = new HashMap<>(); map.put(')', '('); map.put(']', 阅读全文
posted @ 2021-02-02 10:07 一天到晚睡觉的鱼 阅读(76) 评论(0) 推荐(0)
摘要:第三章 查找(三) 3.3 平衡查找树 3.3.1 2-3查找树 定义。一棵2-3查找树或为一棵空树,或由以下结点组成: 2-结点,含有一个键(及其对应的值)和两条链接,左链接指向的2-3树中的键都小于该结点,右链接指向的2-3树中的键都大于该结点。 3-结点,含有两个键(及其对应的值)和三条链接, 阅读全文
posted @ 2021-02-02 00:19 一天到晚睡觉的鱼 阅读(78) 评论(0) 推荐(0)
摘要:MyBatis(三) 日志 日志工厂 配置文件 → settings → logImpl:指定MyBatis所用日志的具体实现 SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING L 阅读全文
posted @ 2021-02-01 20:51 一天到晚睡觉的鱼 阅读(71) 评论(0) 推荐(0)
摘要:19. 删除链表的倒数第N个结点 题目链接 存储索引 class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { List<ListNode> list = new ArrayList<>(); ListNode 阅读全文
posted @ 2021-02-01 10:59 一天到晚睡觉的鱼 阅读(54) 评论(0) 推荐(0)