随笔分类 - 刷题笔记
保持每天刷题,记录笔记。
摘要:46.排列 给定一个不含重复数字的数组 nums ,返回其所有可能的全排列 。你可以按任意顺序返回答案。 private List<List<Integer>> resList; public List<List<Integer>> permute(int[] nums) { if (nums ==
阅读全文
摘要:package JZOffer; /** * 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符, * 而'*'表示它前面的字符可以出现任意次(包含0次)。 * 在本题中,匹配是指字符串的所有字符匹配整个模式。 * 例如,字符串"aaa"与模式"a.a"和"ab
阅读全文
摘要:容器盛水问题 给定一个整形数组arr,已知其中所有的值都是非负的,将这个数组看作一个容器,请返回容器能装多少水。 解析 对于每一个位置i,它上方所能容纳的水的容量等于: Max{Min{i位置左侧的最大值,i位置右侧的最大值}-arr[i],0} 而整个容器所能容纳的水的容量就为每一个位
阅读全文
摘要:给定一个二叉树,请计算节点值之和最大的路径的节点值之和是多少。这个路径的开始节点和结束节点可以是二叉树中的任意节点。例如:给出以下的二叉树, 返回的结果为6。 private int res = Integer.MIN_VALUE; public int maxPathSum (TreeNode r
阅读全文
摘要:108.有序数组转换为二叉搜索树 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 解析 使用二分法递归创建高度平衡的BST树 public TreeNode
阅读全文
摘要:给定两个非空二叉树s和t,检验s中是否包含和t具有相同结构和节点值的子树。s的一个子树包括s的一个节点和这个节点的所有子孙。s也可以看做它自身的一棵子树。 public boolean isSubtree(TreeNode s, TreeNode t){ if (s == null && t ==
阅读全文
摘要:199.二叉树的右视图 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1 < / \ 2 3 < \ \ 5 4 < 利用层次遍历寻找二叉树中的右视图(层次遍历,
阅读全文
摘要:给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替) 例如: 给定的二叉树是{3,9,20,#,#,15,7}, 该二叉树之字形层序遍历的结果是 [ [3], [20,9], [15,7] ] 代码实现 通过使用两个栈来实现之字形遍历,第一个栈存储从左到
阅读全文
摘要:309.最佳买卖股票时机含冷冻期 给定一个整数数组,其中第i个元素代表了第i天的股票价格 。 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入
阅读全文
摘要:416.分割等和子集 给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 注意: 每个数组中的元素不会超过 100 数组的大小不会超过 200 示例 1: 输入: [1, 5, 11, 5] 输出: true 解释: 数组可以分割成 [1, 5,
阅读全文
摘要:494.目标和 给定一个非负整数数组,a1, a2, ..., an和一个目标数,S。现在你有两个符号 + 和 -。对于数组中的任意一个整数,你都可以从 + 或 -中选择一个符号添加在前面。 返回可以使最终数组和为目标数S的所有添加符号的方法数。 解析 S等于这个非负整数数组中的n个元素
阅读全文
摘要:最长公共子串 给定两个字符串str1和str2,返回两个字符串的最长公共子串。 此处计算的是两个字符串的最长公共子串,子串不同于子序列,子串要求必须是一串连续的字符。 方法一 使用经典的动态规划方法,首先定义一个动态规划数组dp,dp[i][j]表示的含义是以在str1中第i个字符和str2
阅读全文
摘要:1143.最长公共子序列 给定两个字符串text1和text2,返回这两个字符串的最长公共子序列的长度。 一个字符串的子序列是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。 例如,"ace" 是 "abcde" 的
阅读全文
摘要:197.上升的温度 表 Weather + + + | Column Name | Type | + + + | id | int | | recordDate | date | | temperature | int | + + + id是这个表的主键 该表包含特定日期的温度信息 编写一个SQL查
阅读全文
摘要:318. 最大单词长度乘积 给定一个字符串数组 words,找到 length(word[i]) * length(word[j]) 的最大值,并且这两个单词不含有公共字母。你可以认为每个单词只包含小写字母。如果不存在这样的两个单词,返回 0。 示例 1: 输入: ["abcw","baz","
阅读全文
摘要:371.两个整数之和 不使用运算符 + 和 - ,计算两整数 a 、b 之和。 示例 1: 输入: a = 1, b = 2 输出: 3 示例 2: 输入: a = -2, b = 3 输出: 1 分析: 使用位运算,可以将两个数的加法运算拆分为两步位运算,那就是先计算两个数在没有进位情况下的相
阅读全文
摘要:338.比特位计数 给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。 示例 1: 输入: 2 输出: [0,1,1] 示例 2: 输入: 5 输出: [0,1,1,2,1,2] 分析: 第一种方法 暴力法:遍历0
阅读全文
摘要:769. 最多能完成排序的块 数组arr是[0, 1, ..., arr.length - 1]的一种排列,我们将这个数组分割成几个“块”,并将这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同。我们最多能将数组分成多少块? 示例 1: 输入: arr = [4,3,2
阅读全文
摘要:184.部门工资最高的员工 Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id。 + + + + + | Id | Name | Salary | DepartmentId | + + + + + | 1 | Joe | 70000 | 1
阅读全文
摘要:667.优美的排列 给定两个整数 n 和 k,你需要实现一个数组,这个数组包含从 1 到 n 的 n 个不同整数,同时满足以下条件: ① 如果这个数组是 [a1, a2, a3, ... , an] ,那么数组 [|a1 - a2|, |a2 - a3|, |a3 - a4|, ... , |an-
阅读全文

浙公网安备 33010602011771号