41. 缺失的第一个正数
给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。
请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。
示例 1:
123>输入:nums = [1,2,0]>输出:3>解释:范围 [1,2] 中的数字都在数组中。
示例 2:
123>输入:nums = [3,4,-1,1]>输出:2>解释:1 在数组中,但 2 没有。
示例 3:
123>输入:nums = [7,8,9,11,12]>输出:1>解释:最小的正数 1 没有出现。
提示:
1 <= nums.length <= 105
-231 <= nums[i] <= 231 - 1
这个问题可以通过将数组中的每个数字放到它应该在的位置来解决,即 nums[i] 应该放在 nums[i-1] 的位置,相当于把原来的数组当作一个哈希表来使用,具体步骤如下:
初始化:设置 max_len 为数组长度加1,这是我们需要处理的最大正整数。
标记无效数字:将所有非正数或大于 ...
刷题笔记
未读
46. 全排列
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
示例 1:
12>>输入:nums = [1,2,3]>>输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
示例 2:
12>>输入:nums = [0,1]>>输出:[[0,1],[1,0]]
示例 3:
12>>输入:nums = [1]>>输出:[[1]]
提示:
1 <= nums.length <= 6
-10 <= nums[i] <= 10
nums 中的所有整数 互不相同
终止条件: 当 x = len(nums) - 1 时,代表所有位已固定(最后一位只有 1 种情况),则将当前组合 nums 转化为数组并加入 res ,并返回。
1234567891011121314151617>class Solution(object): def permute(self, ...
53. 最大子数组和
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
子数组
是数组中的一个连续部分。
示例 1:
123>输入:nums = [-2,1,-3,4,-1,2,1,-5,4]>输出:6>解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。
示例 2:
12>输入:nums = [1]>输出:1
示例 3:
12>输入:nums = [5,4,-1,7,8]>输出:23
提示:
1 <= nums.length <= 105
-104 <= nums[i] <= 104
进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的 分治法 求解。
1234567891011121314151617# 动态规划class Solution(object): def maxSubArray(self, nums): """ :type nums: List[ ...
56. 合并区间
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。
示例 1:
123>输入:intervals = [[1,3],[2,6],[8,10],[15,18]]>输出:[[1,6],[8,10],[15,18]]>解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
示例 2:
123>输入:intervals = [[1,4],[4,5]]>输出:[[1,5]]>解释:区间 [1,4] 和 [4,5] 可被视为重叠区间。
提示:
1 <= intervals.length <= 104
intervals[i].length == 2
0 <= starti <= endi <= 104
使用左区间进行排序以示例 1 为例,我们有 [1,3],[2,6],[8,10],[15,18] 这四个区间。
为 ...
刷题笔记
未读
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启动过程
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中定义了可修改的成员变量,是要考虑线程安全问题的,可以使用多例或者加锁来解决
有状态就是有数据存储功能(比如成员变量读写),无状态就是不会保存数据。
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 ...