05 2021 档案
摘要:45. 跳跃游戏 II 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后一个位置。 假设你总是可以到达数组的最后一个位置。 输入: [2,3,1,1,4] 输出: 2 解释: 跳到最后一个位置的最小跳跃
阅读全文
摘要:55. 跳跃游戏 给定一个非负整数数组nums,你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。 输入:nums = [2,3,1,1,4] 输出:true 解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳
阅读全文
摘要:122. 买卖股票的最佳时机 II 给定一个数prices,其中prices[i]是一支给定股票第i天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 输入: prices =
阅读全文
摘要:单例模式 意图 确保一个类只有一个实例,并提供该实例的全局访问点。 类图 使用一个私有构造函数、一个私有静态变量以及一个公有静态函数来实现。 私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。 实现 (一)懒汉式-线程不安全 public class Si
阅读全文
摘要:53. 最大子序和 给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组 [4,-1,2,1] 的和最大,为 6 输入:nums = [1] 输出:1 思路
阅读全文
摘要:376. 摆动序列 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。 例如,[1, 7, 4, 9, 2, 5]是一个 摆动序列 ,因为差值(6, -3, 5, -7, 3)是正负交
阅读全文
摘要:什么是贪心 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 什么时候用贪心 使用贪心没有什么固定策略或者套路,需要靠自己手动模拟,如果模拟可行,就可以试一试贪心策略,如果不可行,可能需要动态规划。 验证可不可以用贪心算法最好的策略就是举反例,如果想不到反例,那么就可以试一试贪心。 贪心没有套
阅读全文
摘要:37. 解数独 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次 数字 1-9 在每一列只能出现一次 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次 数独部分空格内已填入了数字,空白格用 '.' 表示 示例: 输入:boar
阅读全文
摘要:47. 全排列 II 给定一个可包含重复数字的序列nums,按任意顺序返回所有不重复的全排列。 输入:nums = [1,1,2] 输出: [[1,1,2], [1,2,1], [2,1,1]] 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1
阅读全文
摘要:46. 全排列 给定一个不含重复数字的数组nums,返回其所有可能的全排列 。你可以按任意顺序返回答案。 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 输入:nums = [0,1] 输出:[[0,1],
阅读全文
摘要:491. 递增子序列 给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是 2 。 输入:[4, 6, 7, 7] 输出:[[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]
阅读全文
摘要:78. 子集 给你一个整数数组nums,数组中的元素互不相同。返回该数组所有可能的子集(幂集)。 解集不能包含重复的子集。你可以按任意顺序返回解集。 输入:nums = [1,2,3] 输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]] 输入:nums = [
阅读全文
摘要:进程和线程 进程 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。 在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程中的一个线程,也称主线程。 线程
阅读全文
摘要:93. 复原 IP 地址 给定一个只包含数字的字符串,用以表示一个 IP 地址,返回所有可能从s获得的有效 IP 地址 。你可以按任何顺序返回答案。 有效 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。 例如:"0.1.2.201"
阅读全文
摘要:131. 分割回文串 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文串 。返回 s 所有可能的分割方案。 回文串是正着读和反着读都一样的字符串。 输入:s = "aab" 输出:[["a","a","b"],["aa","b"]] 输入:s = "a" 输出:[["a"]] 思路
阅读全文
摘要:40. 组合总和 II 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用一次。 说明: 所有数字(包括目标数)都是正整数 解集不能包含重复的组合 输入:
阅读全文
摘要:77. 组合 给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 思路 本题这是回溯法的经典题目。 每次从集合中选取元素,可选择的范围随着
阅读全文
摘要:什么是回溯法 回溯法也可以叫做回溯搜索法,它是一种搜索的方式。 回溯是递归的副产品,只要有递归就会有回溯。 所以回溯函数也就是递归函数,指的都是一个函数。 回溯法的效率 虽然回溯法很难,很不好理解,但是回溯法并不是什么高效的算法。因为回溯的本质是穷举,穷举所有可能,然后选出我们想要的答案。 回溯法并
阅读全文
摘要:669. 修剪二叉搜索树 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树不应该改变保留在树中的元素的相对结构(即,如果没有被移除,原有的父代子代关系都应当保留)。可以证明,存在唯一的答案。 所以
阅读全文
摘要:236. 二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 输入:root = [3,5,
阅读全文
摘要:783. 二叉搜索树节点最小距离 给你一个二叉搜索树的根节点 root ,返回树中任意两不同节点值之间的最小差值。 注意:本题与 530 相同 输入:root = [4,2,6,1,3] 输出:1 思路 二叉搜索树采用中序遍历,其实就是一个有序数组。 在递归遍历的过程中记录前后两个指针,就可以直接计
阅读全文
摘要:webpack Webpack 是一个前端资源的打包工具,它可以将js、image、css等资源当成一个模块进行打包。 好处: 将许多碎小文件打包成一个整体,减少单页面内的衍生请求次数,提高网站效率 将ES6的高级语法进行转换编译,以兼容老版本的浏览器 将代码打包的同时进行混淆,提高代码的安全性 核
阅读全文
摘要:112. 路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和 targetSum 。 叶子节点是指没有子节点的节点。 输入:root = [5,4,8,11,null,13,4,7,2,n
阅读全文
摘要:404. 左叶子之和 计算给定二叉树的所有左叶子之和。 3 / \ 9 20 / \ 15 7 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24 思路 左叶子定义:如果左节点不为空,且左节点没有左右孩子,那么这个节点就是左叶子。 判断当前节点是不是左叶子是无法判断的,必须要通过节点
阅读全文

浙公网安备 33010602011771号