77.组合(简单)
77.组合(简单)给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。
示例:输入: n = 4, k = 2输出:
12345678[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/combinations
思路:回溯
代码:12345678910111213141516171819class Solution { public List<List<Integer>> combine(int n, int k) { List<List<Integer>> ans = new ArrayList<>(); dfs(new ArrayList<>(),ans,1,n,k); return ans; } void dfs(List<Integ ...
27.移除元素(简单)
27.移除元素(简单)给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
示例 1:给定 nums = [3,2,2,3], val = 3,
函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。
你不需要考虑数组中超出新长度后面的元素。
示例 2:给定 nums = [0,1,2,2,3,0,4,2], val = 2,
函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。
注意这五个元素可为任意顺序。
你不需要考虑数组中超出新长度后面的元素。
说明:
为什么返回数值是整数,但输出的答案是数组呢?
请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。
你可以想象内部操作如下:
12345678// nums 是以“引用”方式传递的。也就是说,不对实参作任何拷贝int len = remov ...
39. 组合总和(简单)
39. 组合总和(简单)给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。
candidates 中的数字可以无限制重复被选取。
说明:
所有数字(包括 target)都是正整数。解集不能包含重复的组合。
示例 1:输入:candidates = [2,3,6,7], target = 7所求解集为:
1234[ [7], [2,2,3]]
示例 2:输入:candidates = [2,3,5], target = 8所求解集为:
12345[ [2,2,2,2], [2,3,3], [3,5]]
提示:
1 <= candidates.length <= 30
1 <= candidates[i] <= 200
candidate 中的每个元素都是独一无二的。
1 <= target <= 500
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/combination-sum
...
867. 转置矩阵(特别简单)
867. 转置矩阵(特别简单)给定一个矩阵 A, 返回 A 的转置矩阵。
矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。
示例 1:输入:[[1,2,3],[4,5,6],[7,8,9]]输出:[[1,4,7],[2,5,8],[3,6,9]]
示例 2:输入:[[1,2,3],[4,5,6]]输出:[[1,4],[2,5],[3,6]]
提示:1 <= A.length <= 10001 <= A[0].length <= 1000
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/transpose-matrix
思路:暴力求解
代码:12345678910111213class Solution { public int[][] transpose(int[][] A) { int r = A.length; int c = A[0].length; int[][] res = new int[c][r]; ...
Spring--事务
Spring–事务事务传播特性
传播性
值
描述
PROPAGATION_REQUIRED
0
当前有事务就用当前的,没有就用新的
PROPAGATION_SUPPORTS
1
事务可有可无,不是必须的
PROPAGATION_MANDATORY
2
当前一定要有事务,不然就抛异常
PROPAGATION_REQUIRES_NEW
3
无论是否有事务,都起个新的事务
PROPAGATION_NOT_SUPPORTED
4
不支持事务,按非事务方式运行
PROPAGATION_NEVER
5
不支持事务,如果有事务则抛出异常
PROPAGATION_NESTED
6
当前有事务就在当前事务里再起一个事务
事务隔离特性
隔离性
值
脏读
不可重复读
幻读
ISOLATION_READ_UNCOMMITTED
1
√
√
√
ISOLATION_READ_COMMITTED
2
×
√
√
ISOLATION_REPEATABLE_READ
3
×
×
√
ISOLATION_SERIALIZABLE
4
×
×
×
Spring--基础解析
Spring–基础解析了解spring
spring是为了简化企业级开发而提出的一个开源框架,它特有的轻量级以及非侵入式特点使得其可以自由组合各个功能模块
spring的ioc是实现非侵入式的主要部分(主要跳过配置进行依赖注入)
IOC(控制反转、依赖注入)
在传统的java开发模式中,我们需要使用new来创建一个对象然后才能获取其属性或使用其方法,而spring通过工厂模式为我们创建了所需要的对象,可以直接进行取用,这就是控制反转的思想
但是为什么不直接用工厂模式而引入IOC这个概念呢?spring的非侵入性,这是通过反射机制来实现的,以动态的方式来提供各种功能是实现其非侵入式的主要原因。如果我们单纯使用工厂类那么在功能扩展或者需求改动时需要改动其核心代码。而spring通过反射配合beanFactory来实现对象的创建以及属性注入,这样就避免了重复编码的问题。
AOP(面向切面编程)
OOP中我们将所有事物看成一个对象,在AOP中我们关注的不再是对象了,而是切面和切点
如果说所有的业务逻辑代码看作是一个面,以日志记录为例(权限控制和事务管理同上),我们就需要在n多个方法这种写 ...
Redis--数据持久化
Redis–数据持久化 Redis 的数据格式由“键”和“值”两部分组成。而“值”又支持很多数据类型,比如字符串、列表、字典、集合、有序集合。像字典、集合等类型,底层用到了散列表,散列表中有指针的概念,而指针指向的是内存中的存储地址。 那 Redis 是如何将这样一个跟具体内存地址有关的数据结构存储到磁盘中的呢?
两种思路:
清除原有的存储结构,只将数据存储到磁盘中,当我们需要从磁盘还原数据到内存的时候,在重新将数据结构组织成原来的 数据结构,(Redis就是采取这种)
不过,这种方式会有一定的弊端,那就是数据从硬盘还原到内存的过程,会消耗比较多的时间。比如,我们现在要将散列表存储到磁盘中。当偶们从磁盘中取出数据重新构建散列表时,需要重新即使算每个数据的哈希值。如果磁盘中存储的是几GB的数据,那么重构数据结构的耗时就不可忽视了
保留原来的格式,将数据按照原有的格式存储在磁盘中。我们拿散列表这样的数据结构来举例。我们考研将散列表的大小、每个数据被散列到的槽的编号等信息,都保存在磁盘中。有了这些信息,我们从磁盘中将数据还原到内存中,就可以避免重新计算哈希值
B1092 最好吃的月饼 (20 分)(简单)
月饼是久负盛名的中国传统糕点之一,自唐朝以来,已经发展出几百品种。若想评比出一种“最好吃”的月饼,那势必在吃货界引发一场腥风血雨…… 在这里我们用数字说话,给出全国各地各种月饼的销量,要求你从中找出销量冠军,认定为最好吃的月饼。
输入格式:输入首先给出两个正整数 N(≤1000)和 M(≤100),分别为月饼的种类数(于是默认月饼种类从 1 到 N 编号)和参与统计的城市数量。
接下来 M 行,每行给出 N 个非负整数(均不超过 1 百万),其中第 i 个整数为第 i 种月饼的销量(块)。数字间以空格分隔。
输出格式:在第一行中输出最大销量,第二行输出销量最大的月饼的种类编号。如果冠军不唯一,则按编号递增顺序输出并列冠军。数字间以 1 个空格分隔,行首尾不得有多余空格。
输入样例:5 31001 992 0 233 68 0 2018 0 200836 18 0 1024 4
输出样例:20183 5
代码:123456789101112131415161718192021222324#include <iostream>#include <vector>u ...
B1091 N-自守数 (15 分)
如果某个数 K 的平方乘以 N 以后,结果的末尾几位数等于 K,那么就称这个数为“N-自守数”。例如 3×922=25392,而 25392 的末尾两位正好是 92,所以 92 是一个 3-自守数。
本题就请你编写程序判断一个给定的数字是否关于某个 N 是 N-自守数。
输入格式:输入在第一行中给出正整数 M(≤20),随后一行给出 M 个待检测的、不超过 1000 的正整数。
输出格式:对每个需要检测的数字,如果它是 N-自守数就在一行中输出最小的 N 和 NK2 的值,以一个空格隔开;否则输出 No。注意题目保证 N<10。
输入样例:392 5 233
输出样例:3 253921 25No
代码:1234567891011121314151617181920212223242526272829303132#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <algorithm> using name ...
B1088 三人行 (20 分)(一般)
B1088 三人行 (20 分)(一般)
子曰:“三人行,必有我师焉。择其善者而从之,其不善者而改之。”
本题给定甲、乙、丙三个人的能力值关系为:甲的能力值确定是 2 位正整数;把甲的能力值的 2 个数字调换位置就是乙的能力值;甲乙两人能力差是丙的能力值的 X 倍;乙的能力值是丙的 Y 倍。请你指出谁比你强应“从之”,谁比你弱应“改之”。
输入格式:输入在一行中给出三个数,依次为:M(你自己的能力值)、X 和 Y。三个数字均为不超过 1000 的正整数。
输出格式:在一行中首先输出甲的能力值,随后依次输出甲、乙、丙三人与你的关系:如果其比你强,输出 Cong;平等则输出 Ping;比你弱则输出 Gai。其间以 1 个空格分隔,行首尾不得有多余空格。
注意:如果解不唯一,则以甲的最大解为准进行判断;如果解不存在,则输出 No Solution。
输入样例 1:48 3 7
输出样例 1:48 Ping Cong Gai
输入样例 2:48 11 6
输出样例 2:No Solution
注意点:注意有个测试点,我写printm(x,y)时,形参写了int,总是过不了,这里要注意一下 ...