南大java复试
sakura_is_the_best
这个作者很懒,什么都没留下…
展开
-
trie实现输入提示
class TreeNode{ TreeNode child[] = new TreeNode [26];//26个子节点 Arraylist<String>arr = new Arraylist<String>();//当前前缀的所有字符串}public void insert(String word) { int len = wo...原创 2020-05-07 19:59:39 · 288 阅读 · 0 评论 -
leetcode 面试题 08.11. 硬币(完全背包求方案数以及转移方程通俗推导)
硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007)示例1:输入: n = 5输出:2解释: 有两种方式可以凑成总金额:5=55=1+1+1+1+1示例2:输入: n = 10输出:4解释: 有四种方式可以凑成总金额:10=1010=5+510=5+1+1+1+1+110=1+...原创 2020-04-23 14:10:34 · 348 阅读 · 0 评论 -
leetcode 652. 寻找重复的子树(HashMap的使用)
题意:给定一棵二叉树,返回所有重复的子树。对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可。两棵树重复是指它们具有相同的结构以及相同的结点值。首先明确一下对子树的定义,这题里面的子树就是选定一个父节点然后一直到叶节点算一个子树,中间的一部分不能算是一个子树。明白了这一点那么其实可以发现子树的数量是有限的,假设树节点有n个,那么子树最多就有n棵,注意如果左右字树为空就记为"null...原创 2020-04-22 17:13:48 · 278 阅读 · 0 评论 -
leetcode 199. 二叉树的右视图
给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]挺好的题目,注意到同一高度的节点,从右边看必定只能看到最右边的节点,这是这个题的关键。那么我们只要保证在bfs的时候,同一高度的点最右边的可以先出队,每次当出队的点高度没出现过时,就把这个节点加入答案数组即可。为保证...原创 2020-04-22 00:50:25 · 119 阅读 · 0 评论 -
leetcode 560. 和为K的子数组(前缀和)
给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。思路就是前缀和,只不过这里用HashMap存储了,因为这里前缀和有可能是负数,不能用数组。考虑遍历到第i位,当前到第i位的前缀和位m,要达到的整数和为k,那么令gap = m-k,只要看...原创 2020-04-21 17:22:11 · 183 阅读 · 0 评论 -
leetcode 1248. 统计「优美子数组」
给你一个整数数组 nums 和一个整数 k。如果某个 连续 子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」。请返回这个数组中「优美子数组」的数目。示例 1:输入:nums = [1,1,2,1,1], k = 3输出:2解释:包含 3 个奇数的子数组是 [1,1,2,1] 和 [1,2,1,1] 。示例 2:输入:nums = [2,4,6], k = 1输...原创 2020-04-21 17:08:52 · 161 阅读 · 0 评论 -
leetcode 713. 乘积小于K的子数组(滑动窗口或二分)
给定一个正整数数组 nums。找出该数组内乘积小于 k 的连续的子数组的个数。示例 1:输入: nums = [10,5,2,6], k = 100输出: 8解释: 8个乘积小于100的子数组分别为: [10], [5], [2], [6], [10,5], [5,2], [2,6], [5,2,6]。需要注意的是 [10,5,2] 并不是乘积小于100的子数组。需要注意到数组内每一...原创 2020-04-21 15:07:46 · 282 阅读 · 0 评论 -
leetcode 466. 统计重复个数(寻找循环节)
由 n 个连接的字符串 s 组成字符串 S,记作 S = [s,n]。例如,[“abc”,3]=“abcabcabc”。如果我们可以从 s2 中删除某些字符使其变为 s1,则称字符串 s1 可以从字符串 s2 获得。例如,根据定义,“abc” 可以从 “abdbec” 获得,但不能从 “acbbe” 获得。现在给你两个非空字符串 s1 和 s2(每个最多 100 个字符长)和两个整数 0 ≤ ...原创 2020-04-19 18:10:23 · 251 阅读 · 0 评论 -
leetcode 287. 寻找重复数(二分或者排序)
给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3最容易想到的办法就是排序,排序之后相等的值肯定会相邻,那么直接查找即可。在这里插入代码片还有一种办法就是二分,...原创 2020-04-18 13:07:10 · 149 阅读 · 0 评论 -
leetcode 524. 通过删除字母匹配到字典里最长单词(ArrayList排序)
给定一个字符串和一个字符串字典,找到字典里面最长的字符串,该字符串可以通过删除给定字符串的某些字符来得到。如果答案不止一个,返回长度最长且字典顺序最小的字符串。如果答案不存在,则返回空字符串。示例 1:输入:s = “abpcplea”, d = [“ale”,“apple”,“monkey”,“plea”]输出:“apple”示例 2:输入:s = “abpcplea”, d =...原创 2020-04-18 11:16:46 · 170 阅读 · 0 评论 -
leetcode 300. 最长上升子序列(NlogN)
给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。进阶: 你能将算法的时间复杂度降低到 O(n log n) 吗?经典题,N平方算法不再...原创 2020-04-18 10:53:48 · 199 阅读 · 0 评论 -
leetcode 45. 跳跃游戏 II(java线段树或者贪心)
给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。说明:假设你总是可以到达数组的最后一个位置。一.贪...原创 2020-04-17 19:48:08 · 271 阅读 · 1 评论 -
leetcode55. 跳跃游戏(java队列bfs)
给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达...原创 2020-04-17 12:04:43 · 244 阅读 · 0 评论 -
leetcode11. 盛最多水的容器
给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。思维题,如果直接暴力,那么就是N平方的复杂度,写起来也简单,双重循环跑一遍即可。但是平方的复杂度太高了...原创 2020-04-16 18:06:28 · 121 阅读 · 0 评论 -
leetcode 56. 合并区间(java自定义排序)
给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。思路较为简单...原创 2020-04-16 13:27:54 · 221 阅读 · 0 评论 -
leetcode542. 01 矩阵 (java队列使用以及获取二维数组长度)
给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。两个相邻元素间的距离为 1 。示例 1:输入:0 0 00 1 00 0 0输出:0 0 00 1 00 0 0思路就是简单的bfs,首先是值为0的入队,然后每次取出队列第一个元素,更新四个方向,如果当前距离+1小于原距离,就将原距离更新即可。注意Java中队列,offer()是添加元素,poll()取出...原创 2020-04-15 11:49:39 · 301 阅读 · 0 评论 -
leetcode 208. 实现 Trie (前缀树)(java)
实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。示例:Trie trie = new Trie();trie.insert(“apple”);trie.search(“apple”); // 返回 truetrie.search(“app”); // 返回 falsetrie.startsWith(“app”); ...原创 2020-04-09 22:45:49 · 204 阅读 · 0 评论 -
leetcode 1335. 工作计划的最低难度
你需要制定一份 d 天的工作计划表。工作之间存在依赖,要想执行第 i 项工作,你必须完成全部 j 项工作( 0 <= j < i)。你每天 至少 需要完成一项任务。工作计划的总难度是这 d 天每一天的难度之和,而一天的工作难度是当天应该完成工作的最大难度。给你一个整数数组 jobDifficulty 和一个整数 d,分别代表工作难度和需要计划的天数。第 i 项工作的难度是 jobD...原创 2020-02-25 13:51:42 · 252 阅读 · 0 评论 -
leetcode 717. 1比特与2比特字符
有两种特殊字符。第一种字符可以用一比特0来表示。第二种字符可以用两比特(10 或 11)来表示。现给一个由若干比特组成的字符串。问最后一个字符是否必定为一个一比特字符。给定的字符串总是由0结束。示例 1:输入:bits = [1, 0, 0]输出: True解释:唯一的编码方式是一个两比特字符和一个一比特字符。所以最后一个字符是一比特字符。示例 2:输入:bits = [1, ...原创 2020-02-25 00:43:26 · 99 阅读 · 0 评论 -
leetcode 337. 打家劫舍 III
在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。首先用Hashmap把每一个顶点映射...原创 2020-01-10 14:42:19 · 126 阅读 · 0 评论 -
leetcode 198. 打家劫舍
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号...原创 2020-01-07 22:07:36 · 138 阅读 · 0 评论 -
leetcode 238. 除自身以外数组的乘积
给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。思路一:用了除法,其实不满足题意,注意要考虑0的情况,否则会出现0/0的情况,特判一下0...原创 2020-01-07 21:42:59 · 110 阅读 · 0 评论 -
leetcode 152. 乘积最大子序列
给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。dp,max[i]代表以i为结尾的最大字串乘积和,min[i]代表以i为结尾的最小字串乘积和。...原创 2020-01-07 21:14:31 · 141 阅读 · 0 评论 -
leetcode 110. 平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7]3/ 9 20/ 15 7返回 true 。求树的高度进阶版,求得树高之后判断左右高度之差是否大于1,如果存在这样的树节点那就不是AVL。class Solu...原创 2020-01-07 16:58:18 · 97 阅读 · 0 评论 -
leetcode 5. 最长回文子串
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”dp[i][j]代表i至j是否是回文串,如果不是回文串则dp[i][j]=0,若是回文串则dp[i][j]=j-i+1;注意更新的时候要从小长度向大长度更新,太...原创 2020-01-07 16:43:34 · 94 阅读 · 0 评论 -
leetcode 3. 无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所...原创 2020-01-06 20:10:35 · 98 阅读 · 0 评论 -
leetcode 13. 罗马数字转整数
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12...原创 2020-01-06 17:20:02 · 84 阅读 · 0 评论 -
leetcode 779. 第K个语法符号
在第一行我们写上一个 0。接下来的每一行,将前一行中的0替换为01,1替换为10。给定行数 N 和序数 K,返回第 N 行中第 K个字符。(K从1开始)题目链接很明显的递归,只要弄清上一层和下一层之间的01关系即可。class Solution { public int kthGrammar(int N, int K) { if(N==1) r...原创 2020-01-04 20:53:19 · 249 阅读 · 0 评论 -
leetcode 698. 划分为k个相等的子集
给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。示例 1:输入: nums = [4, 3, 2, 3, 5, 2, 1], k = 4输出: True说明: 有可能将其分成 4 个子集(5),(1,4),(2,3),(2,3)等于总和。题目地址思路:用now[k]代表目前k组元素的和分别是多少,对于每个nums[i]枚举分到...原创 2020-01-04 20:30:09 · 150 阅读 · 0 评论 -
leetcode 687 最长同值路径
给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。注意:两个节点之间的路径长度由它们之间的边数表示。此题和leetcode124思路完全相同(题解连接https://blog.csdn.net/sakura_is_the_best/article/details/103809207),这个题也是这条路径不能有回路,也就是这条路径最多只有一个节...原创 2020-01-03 21:54:59 · 105 阅读 · 0 评论 -
leetcode 124 二叉树中的最大路径和
给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。这个题题意有点模糊,这个路径是不能有回路的,但是题目中也没有明确说明,算个坑点吧。思路就是递归,说是递归更有点像树形dp,cal(root)函数代表root节点一定被选而能得到的最大的路径长度且该路径最多只经过一个root的一个子树。想知道这个信...原创 2020-01-02 18:59:02 · 123 阅读 · 0 评论 -
EOJ 1816 连通
如果无向图 G 每对顶点 v 和 w 都有从 v 到 w 的路径,那么称无向图 G 是连通的。现在给定一张无向图,判断它是否是连通的。输入格式第一行有 2 个整数 n,m (0<n,m<106)。接下来 m 行每行有 2 个整数 u,v (1≤u,v≤n) 表示 u 和 v 有边连接。输出格式如果无向图是连通的输出 yes,否则输出 no。样例input4 61 2...原创 2020-01-01 19:07:38 · 178 阅读 · 0 评论 -
EOJ 1070 大数乘法
单点时限: 2.0 sec内存限制: 256 MB旺财的数学老师开始发威了,留了一道很大很大的整数之间乘法的问题。输入格式第 1 行有一个正整数 N(0 < N < 11),表示有几组测试数据,接下来的 2……N+1 行里,每行有两个无正负号非负整数 (都在 500 位以内),整数之间用一个空格分开 .输出格式输出每行非负整数的积,每个结果占一行。注意BigIntege...原创 2020-01-01 17:26:20 · 164 阅读 · 0 评论 -
hdu 2034 人见人爱A-B(java)
Problem Description参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差,就是做集合的减法运算。(当然,大家都知道集合的定义,就是同一个集合中不会有两个相同的元素,这里还是提醒大家一下)呵呵,很简单吧?Input每组输入数据占1行,每行数据的开始是2个整数n(0<=n<=...原创 2019-12-31 18:01:08 · 135 阅读 · 0 评论 -
hdu 2028 Lowest Common Multiple Plus(java)
Problem Description求n个数的最小公倍数。Input输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。Output为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。注意gcd的写法,太久不写快忘了,另外lcmgcd=ab,最后注意先除再乘避免超过int范围,这点比较坑。。。。。import ...原创 2019-12-30 20:09:18 · 181 阅读 · 0 评论 -
hdu 2026 首字母变大写(java)
Problem Description输入一个英文句子,将每个单词的第一个字母改成大写字母。Input输入数据包含多个测试实例,每个测试实例是一个长度不超过100的英文句子,占一行。Output请输出按照要求改写后的英文句子。注意StringBuffer中替换一个字符的setCharAt函数。import java.text.DecimalFormat;import java.ut...原创 2019-12-30 19:33:20 · 176 阅读 · 0 评论 -
hdu 2025 查找最大元素(java)
Problem Description对于输入的每个字符串,查找其中的最大字母,在该字母后面插入字符串“(max)”。Input输入数据包括多个测试实例,每个实例由一行长度不超过100的字符串组成,字符串仅由大小写字母构成。Output对于每个测试实例输出一行字符串,输出的结果是插入字符串“(max)”后的结果,如果存在多个最大的字母,就在每一个最大字母后面都插入"(max)"。注意此...原创 2019-12-30 19:20:23 · 276 阅读 · 0 评论 -
hdu 2020 绝对值排序(java自定义排序)
Problem Description输入n(n<=100)个整数,按照绝对值从大到小排序后输出。题目保证对于每一个测试实例,所有的数的绝对值都不相等。Input输入数据有多组,每组占一行,每行的第一个数字为n,接着是n个整数,n=0表示输入数据的结束,不做处理。Output对于每个测试实例,输出排序后的结果,两个数之间用一个空格隔开。每个测试实例占一行。注意java中结构体数组...原创 2019-12-30 18:21:06 · 240 阅读 · 0 评论 -
hdu 2019 数列有序!(java)
Problem Description有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序。Input输入数据包含多个测试实例,每组数据由两行组成,第一行是n和m,第二行是已经有序的n个数的数列。n和m同时为0标示输入数据的结束,本行不做处理。Output对于每个测试实例,输出插入新的元素后的数列。直接将m扔进数...原创 2019-12-30 15:36:47 · 475 阅读 · 0 评论 -
hdu 2010 水仙花数(java)
Problem Description春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=13+53+3^3。现在要求输出所有在m和n范围内的水仙花数。Input输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。Output对于每个测...原创 2019-12-29 22:41:20 · 149 阅读 · 0 评论