刷题笔记
未读
78. 子集
给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的
子集
(幂集)。
解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。
示例 1:
12>输入:nums = [1,2,3]>输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
示例 2:
12>输入:nums = [0]>输出:[[],[0]]
提示:
1 <= nums.length <= 10
-10 <= nums[i] <= 10
nums 中的所有元素 互不相同
123456789101112131415class Solution(object): def subsets(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ res = [] n ...
使用Typora+PicGo搭建图床
Github配置创建仓库首先需要创建一个专门用于收集图片的仓库,并且设置为public权限
例如这里我们创建一个名为BlogImage的仓库,并且创建一个文件夹名称为img
为了方便管理图片所以创建这个文件夹,当然你也可以选择不创建,将图片全部放在仓库的根目录里面
创建token随后,选择“Creat repository”即可。接下来,在页面右上角,点开我们的头像,并选择“Settings”,随后,选择其中左下角的“Developer settings”选项。
创建token的同时需要为仓库设置访问读写的权限,这样后续picGo继续使用的时候才能够将图片上传到仓库中
配置PicGoPicGo官方文档:PicGo 基本的操作按照开发手册就能完成
下载PicGo去PicG的仓库中下载PicGo的最新安装包:https://github.com/Molunerfinn/PicGo/releases
配置PicGo 随后,安装PicGo并打开,如下图所示。其中,我们需要在“图床设置”中找到“GitHub”,并配置各项信息。其中,仓库名就是我 ...
Spring启动过程
VO,DTO,BO是干什么用的在Java开发中,VO(Value Object)和DTO(Data Transfer Object)是常见的设计模式,通常用于数据的封装和传输。它们的核心作用是帮助开发者更好地组织和管理数据结构。除了VO和DTO,还有其他类似的对象类型,如PO(Persistent Object)、BO(Business Object)等。下面分别解释这些概念,并举一些类似的对象类型。
1. VO (Value Object) - 值对象VO(值对象)是用于表示某种业务中的数据或状态的对象,通常是不可变的。VO一般用于在业务逻辑层传递数据,不依赖于具体的持久层。
特点:
不可变性:VO对象通常不修改其内部状态,一旦创建就不会改变。
表示业务属性:它用于表示一些业务中的概念,比如“金额”、“地址”等。
示例:1234567891011121314151617181920212223public class AddressVO { private final String street; private final String city; p ...
Bean是线程安全的吗Spring容器本身没有提供Bean的线程安全策略,因此,也可以说Spring容器中的bean不是线程安全的。spring 中的 bean 默认是单例模式,spring 框架并没有对单例 bean 进行多线程的封装处理。
最简单的就是改变 bean 的作用域,把“singleton”变更为“prototype”,这样请求 bean 相当于 new Bean()了,所以就可以保证线程安全了。
但是实际上大部分时候 spring bean 无状态的(比如 dao 类),所以某种程度上来说 bean 也是安全的,但如果 bean 有状态的话(比如 view model 对象),那就要开发者自己去保证线程安全了。因为一般在spring的bean的中都是注入无状态的对象,没有线程安全问题,如果在bean中定义了可修改的成员变量,是要考虑线程安全问题的,可以使用多例或者加锁来解决
有状态就是有数据存储功能(比如成员变量读写),无状态就是不会保存数据。
给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。
题目描述:你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。
在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程 bi 。
例如,先修课程对 [0, 1] 表示:想要学习课程 0 ,你需要先完成课程 1 。
请你判断是否可能完成所有课程的学习?如果可以,返回 true ;否则,返回 false 。
示例 1:
123输入:numCourses = 2, prerequisites = [[1,0]]输出:true解释:总共有 2 门课程。学习课程 1 之前,你需要完成课程 0 。这是可能的。
示例 2:
123输入:numCourses = 2, prerequisites = [[1,0],[0,1]]输出:false解释:总共有 2 门课程。学习课程 1 之前,你需要 ...
**Trie**(发音类似 “try”)或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补全和拼写检查。
请你实现 Trie 类:
Trie() 初始化前缀树对象。
void insert(String word) 向前缀树中插入字符串 word 。
boolean search(String word) 如果字符串 word 在前缀树中,返回 true(即,在检索之前已经插入);否则,返回 false 。
boolean startsWith(String prefix) 如果之前已经插入的字符串 word 的前缀之一为 prefix ,返回 true ;否则,返回 false 。
示例:
1234567891011121314输入["Trie", "insert", "search", "search", "startsWith", "insert", "search"][ ...
在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一:
值 0 代表空单元格;
值 1 代表新鲜橘子;
值 2 代表腐烂的橘子。
每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。
返回 直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1 。
示例 1:
12输入:grid = [[2,1,1],[1,1,0],[0,1,1]]输出:4
示例 2:
123输入:grid = [[2,1,1],[0,1,1],[1,0,1]]输出:-1解释:左下角的橘子(第 2 行, 第 0 列)永远不会腐烂,因为腐烂只会发生在 4 个方向上。
示例 3:
123输入:grid = [[0,2]]输出:0解释:因为 0 分钟时已经没有新鲜橘子了,所以答案就是 0 。
解法:使用BFS
BFS 可以看成是层序遍历。从某个结点出发,BFS 首先遍历到距离为 1 的结点,然后是距离为 2、3、4…… 的结点。因此,BFS 可以用来求最短路径问题。BFS 先搜索到的结点,一定是距离最近的结点。
再看看这道题的题目要求:返回直到单元格中没有新 ...
给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。
岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。
此外,你可以假设该网格的四条边均被水包围。
示例 1:
1234567输入:grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0","0"]]输出:1
示例 2:
1234567输入:grid = [ ["1"," ...