07 2021 档案
摘要:题目: 思路: 1 Arrays.sort() 排序两个数组 2 定义双指针,和一个list 集合 访问数组相等的加入list (一)代码 class Solution { public int[] intersect(int[] nums1, int[] nums2) { //排序 Arrays.
阅读全文
摘要:题目: 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 思路: 1 双指针 swap 进
阅读全文
摘要:题目: 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2
阅读全文
摘要:题目: 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。 思路: 1 双重for 循环 比较 2 hashmap key 存字符,value 存出现次数 再次遍历找出第一个次数为1的 (一)代码 HashMap work
阅读全文
摘要:(一) new 一个对象发生了什么? 1 确认类原信息是否存在 (1) JVM收到new 指令时 在metaspace 中检查需要创建的类元信息是否存在 (2) 若不存在,那么在双亲委派模式下,使用当前类加载器以 ClassLoader + 包名+类名为 Key 进行查找对应的 class 文件 (
阅读全文
摘要:题目: 思路: 1 Brian Kernighan算法 x &= (x - 1) 每次可以从最右边擦除一个二进数 1 2 动态规划 (一)代码 Brian Kernighan算法 class Solution { public int[] countBits(int n) { //位运算 算法 x
阅读全文
摘要:前言: 背包问题: 给定一组物品,每种物品都有自己的重量和价格, 在限定的总重量内,我们如何选择,才能使得物品的总价格最高 题目: 思路: 转移方程不太好理解 1 初始化dp数组为10001 dp[0] = 0 2 转移方程 dp[j] = min(dp[j],dp[j - coin] + 1) 3
阅读全文
摘要:题目: 思路: 1 暴力 : 从每一个单元格出发 每次在下方 右方 新作一行一列进行判断是否满足条件 2 动态规划 : dp[i][j]由其上方、左方和左上方的三个相邻位置的dp值决定 当前位置的元素值等于三个相邻位置的元素中的最小值加 1 根据题目分析状态转移方程: dp(i, j)=min(dp
阅读全文
摘要:(一)事务传播机制 7种 Required (默认): 如果当前没有事务,就新建一个事务,如果已存在一个事务中 加入到这个事务中,这是最常见的选择。 Supports : 支持当前事务,如果没有当前事务,就以非事务方法执行。 Mandatory : 中文翻译为强制,支持使用当前事务,如果当前事务不存
阅读全文
摘要:题目: 思路: 递归 从每一个位置出发,向上下左右走 与目标数据进行对比 边界条件 是否越界 是否相等 注意: 走过的路不能走, 走过的路用 * 或其他非字母标记, 递归回来的时候记得 还原为原来的数据,否则回来时,一直会走false (一)代码 class Solution { public bo
阅读全文
摘要:题目: 思路: 动态规划 拿到题目重要是分析这个 求 dp 数组的方程 也就是状态转移方程 还有就是注意边界 由题意分析 由于不可以在相邻的房屋闯入,所以在当前位置 n 房屋可盗窃的最大值, 要么就是 n-1房屋可盗窃的最大值, 要么就是 n-2 房屋可盗窃的最大值加上当前房屋的值,二者之间取最大值
阅读全文
摘要:题目: 思路: 由题意分析可将问题转化为 数字排序 1 快速排序 2 双指针 (一) 代码 快速排序 (二) 代码 双指针 嘀嘀嘀
阅读全文
摘要:题目: 思路: 递归+回溯 回溯模板 1 定义全局变量 2 for 循环 i 从传入的变量开始 3 add (添加) 4 递归方法 5 remove (add.size() - 1) (移除) (一) 代码 递归 + 回溯 千万不要在黎明到来的前一刻放弃
阅读全文
摘要:题目: 思路: 1 由题意可分析 对于第一行 dp[0][j],或者第一列 dp[i][0],由于都是在边界,所以只能为 1 2 分析动态转移方程为 dp[m][n] = dp[m-1][n] + dp[m][n-1]; 3 两个for循环进行求值 返回 dp[m-1][n-1] 即可 (一) 代码
阅读全文
摘要:题目: 求斐波那契数 思路: 1 递归 2 递归 + 动态规划 剪枝 (一)代码 递归 (二)代码 递归 + 动态规划 放平心态 一直进步
阅读全文
摘要:题目: 思路: 1 将数字和字母的对应 放入hash表 key 存数字,value 存数字对应的字母 2 使用队列 先将一个数字对应的字符入队, 出队跟下一个字符逐个匹配链接,再入队 (一)代码 class Solution { public List<String> letterCombinati
阅读全文
摘要:题目: 思路: 1 当结果集为空 或者 当前arr的左边界 > 结果集中最后一个数组的右边界,就加入 2 否则 就比较 两数组的右边界进行替换 结果集中最后一个数组的右边界 (一)代码 搞半天
阅读全文
摘要:题目: 思路: 动态规划 -> 新建grid大小 dp 数组 dp数组中每一个位置存的都是最小路径和 先算[*][0] 和 [0][*] 位置的最小路径和 最终返回dp右下角位置的数据即可 dp[m-1][n-1] (一) 代码 努力不一定有收获 不努力一定不会有
阅读全文
摘要:计数排序 思路: 负数暂不考虑,后续维护 1- 找出数组中的最大值,新建一个 最大值+1 长度大小的数组 2- 数组中的数据 作为计数数组的下标,值存出现的次数 3- 循环计数数组,value > 0 将下标放入结果数组 时间复杂度: O(n + k) 空间复杂度:O(k) (一)代码 public
阅读全文

浙公网安备 33010602011771号