算法
0x4c0x43
这个作者很懒,什么都没留下…
展开
-
letcode 279 完全平方数(动态规划)
题目描述给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例 1:输入: n = 12输出: 3解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.class Solution { public int numSquares(int n) { int[] dp = new int[n + 1]; // 默认初始化值都为0原创 2020-09-24 22:12:58 · 103 阅读 · 0 评论 -
letcode 508 出现最多的子树元素和(递归)
题目描述给你一个二叉树的根结点,请你找出出现次数最多的子树元素和。一个结点的「子树元素和」定义为以该结点为根的二叉树上所有结点的元素之和(包括结点本身)。你需要返回出现次数最多的子树元素和。如果有多个元素出现的次数相同,返回所有出现次数最多的子树元素和(不限顺序)。示例 1:输入:返回 [2, -3, 4],所有的值均只出现一次,以任意顺序返回所有值。示例 2:输入:返回 [2],只有 2 出现两次,-5 只出现 1 次。解题思路:首先此题需要遍历二叉树,因此先考虑递归,然后在遍历过原创 2020-08-13 22:07:34 · 136 阅读 · 0 评论 -
letcode 257.二叉树的所有路径(递归)
题目描述:给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例:输入:输出: [“1->2->5”, “1->3”]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3解题思路:首先此题需要遍历整个二叉树,所以我们考虑递归,递归的结束条件就是当前节点为空。其余情况下,我们都需要将当前节点的值加入到当前串中去,所以我们先判断是否为空节点,在不为空的条件下先加入到当前串中去,然后再判断当前节点是否为叶子节点原创 2020-08-12 12:44:33 · 198 阅读 · 0 评论 -
leetcode 283.移动零,双指针解法
题目描述:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。public void moveZeroes(int[] nums) { for(int i=0,j=0 ; i < nums.length ; i++){ //i在前j在后,i不为0往前换,把非0换到前面就等于把0换到后面原创 2020-08-12 09:22:29 · 186 阅读 · 0 评论 -
letcode 164求最大间距(鸽巢原理)
问题描述给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。如果数组元素个数小于 2,则返回 0。示例 1:输入: [3,6,9,1]输出: 3解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。示例 2:输入: [10]输出: 0解释: 数组元素个数小于 2,因此返回 0。解题思路我们知道如果是有序数...原创 2019-12-15 16:51:57 · 139 阅读 · 0 评论 -
验证栈序列(LeetCode 946)
一.问题描述给定 pushed 和 popped 两个序列,每个序列中的 值都不重复,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false 。示例1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:true解释:我们可以按以下顺序执行:push(1), push(2)...原创 2019-12-03 20:46:50 · 163 阅读 · 0 评论