自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

sakura_is_the_best的博客

我为什么不可以?

  • 博客(82)
  • 收藏
  • 关注

原创 南京大学2020软工专硕初试第一经验分享

写在前面:以下的所有经验都是我自己备考中亲身经历得出的,不存在想象或者编造的情况,但由于我自己的性格,我对于不喜欢的人或事的印象极难改变,所以你会看到我对一些老师相当负面的评价。另外由于每个人的实际情况不同,当然每个人最适合的复习策略也不同,我会尽可能的介绍我自己的个人情况,大家可以多参考几个经验贴,偏听则暗,兼听则明,找到最适合自己的方法。个人介绍:政治69,英语80,数学132,842专业课130,总分411初试排名第一,复试194排名倒数,至于为啥这么低我也不知道。 总分第二,也算是一个比较不错的

2020-06-10 18:08:47 5237 12

原创 PAT 1020. Delete At Most Two Characters (35)&&2018天梯赛L3-020. 至多删三个字符(dp)

两道题题意相似,只是一个能删两个字符一个能删三个字符,做法也相似,先从简单的开始… PAT 1020. Delete At Most Two Characters (35)Given a string which contains only lower case English letters, how many different strin...

2018-05-01 17:31:32 824 2

原创 整数划分问题(HRBUST - 2004 ,OpenJ_Bailian-4149)

今天碰到了一道整数划分的题,想起以前也做过好几道这种题,于是就把这类问题总结下。类型一:求将整数N分解成K个正整数的方案数(K个正整数不需要不同)。dp[i][j]表示将i分解成j个正整数的方案数,考虑j个正整数中是否有1,如果有1,那么dp[i][j] = dp[i-1][j-1],相当于拿出一个1,剩余就是将i-1分成j-1个正整数的方案数。如果没有1,那么dp[i][j]=dp[i-j][j],相当于将i-j这个数分成j个正整数,然后将这个j个正整数都加上1就是将i这个数分成了j份。综上,dp[

2020-11-22 16:51:51 282

原创 leetcode 952. 按公因数计算最大组件大小(质数筛+并查集)

给定一个由不同正整数的组成的非空数组 A,考虑下面的图:有 A.length 个节点,按从 A[0] 到 A[A.length - 1] 标记;只有当 A[i] 和 A[j] 共用一个大于 1 的公因数时,A[i] 和 A[j] 之间才有一条边。返回图中最大连通组件的大小。输入:[4,6,15,35]输出:4总结一下题目的意思,若a和b有一个大于1的公因数,则a和b属于1组,假如a和b一组,b和c一组,那么a和c也是一组。很显然是一个并查集的题目,这题的关键是确定任意两个数是否属于一组,确定之

2020-11-10 21:28:21 276

原创 leetcode 47. 全排列 II(去重的两种思路)

给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]题目链接如果不考虑去重,那么这道题就是一道非常基础的递归题目,比较基础。这里主要说一下去重的过程,去重的思想倒是不难想到,每一位每一种数字只能出现一次。比如数组[1,1,2],递归时让第一位是1,然后第二位是1,第三位是2,一次递归完成没有问题,得到排列[1,1,2],于是保存答案进行回溯,回溯到第二位,让第二位为2,注意第二位是第一次出现了2,所以

2020-10-17 19:21:43 326

原创 JAVA学习笔记

1.break/continue配合标签使用bye: for(int i=0;i<=10;i++) { for(int j=0;j<=10;j++) { System.out.println(i+" "+j); if(j==10) break bye; } }在这个代码片中当j=10时,break将会直接跳出最外层的循环,也就是整个bye标签之外。2.数组的初始化int型数组初始化为0boolean型数组初始化

2020-10-08 21:07:42 123

原创 java文件输入输出遇到的一些坑

这几天学习java核心技术时碰见了这个文件I/O,看着比较简单就用eclipse试了一下,试一下才发现坑很多,而且有的坑也不知道是什么,简单记录一下。先放一下最后成功的代码。public static void main(String[] args)throws IOException { // TODO Auto-generated method stub Scanner cin=new Scanner(Path.of("f:\\test.txt"),StandardCharsets.UTF

2020-10-08 20:46:17 300 1

原创 牛客网 牛牛的mex(思维题)

题目链接题意大体是有n个数,n个数都在0和n-1之中且不会重复,现在有n个查询,每个查询会提供一个区间,要求输出这个区间内没出现过的数中最小的那个。由于n个数是在0到n-1之前且不会重复,那么在区间内没出现过的数字一定就会在区间外部出现,所以转换一下思路,不关注区间内没有什么数字,转而去关注区间外有什么数字,很容易发现,区间外出现过的最小的数字就是答案。求区间外出现过的最小的数字用一个前缀最小值和一个后缀最小值就能解决,这题的关键是关注点从区间内转向区间外。#include <bits/std

2020-09-04 17:27:41 240

原创 leetcode 面试题46. 把数字翻译成字符串(简单递归)

给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", “bwfi”, “bczi”, “mcfi"和"mzi”提示:0 <= num < 231思路比较简单,组成字母最大的数字是25,也就是说最多只可以选两位拼成

2020-06-09 23:37:35 305

原创 LeetCode 990.等式方程的可满足性(并查集+路径压缩)

给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程 equations[i] 的长度为 4,并采用两种不同的形式之一:“a==b” 或 “a!=b”。在这里,a 和 b 是小写字母(不一定不同),表示单字母变量名。只有当可以将整数分配给变量名,以便满足所有给定的方程时才返回 true,否则返回 false。思路很清晰,就是并查集的简单应用,先利用所有相等的式子将所有相等的字母组合为一个集合,再用不等式去判断返回true或者false。对于不等式两边的字母必须满足不在同一个集合,否则该组表

2020-06-08 00:53:55 254

原创 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 266

原创 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 327

原创 leetcode 652. 寻找重复的子树(HashMap的使用)

题意:给定一棵二叉树,返回所有重复的子树。对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可。两棵树重复是指它们具有相同的结构以及相同的结点值。首先明确一下对子树的定义,这题里面的子树就是选定一个父节点然后一直到叶节点算一个子树,中间的一部分不能算是一个子树。明白了这一点那么其实可以发现子树的数量是有限的,假设树节点有n个,那么子树最多就有n棵,注意如果左右字树为空就记为"null...

2020-04-22 17:13:48 255

原创 leetcode 199. 二叉树的右视图

给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]挺好的题目,注意到同一高度的节点,从右边看必定只能看到最右边的节点,这是这个题的关键。那么我们只要保证在bfs的时候,同一高度的点最右边的可以先出队,每次当出队的点高度没出现过时,就把这个节点加入答案数组即可。为保证...

2020-04-22 00:50:25 95

原创 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 161

原创 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 120

原创 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 235

原创 leetcode 178.分数排名(sql查询)

编写一个 SQL 查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。±—±------+| Id | Score |±—±------+| 1 | 3.50 || 2 | 3.65 || 3 | 4.00 || 4 | 3.85 || 5 | 4.00 ...

2020-04-20 12:24:49 266

原创 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 214

原创 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 115

原创 leetcode 524. 通过删除字母匹配到字典里最长单词(ArrayList排序)

给定一个字符串和一个字符串字典,找到字典里面最长的字符串,该字符串可以通过删除给定字符串的某些字符来得到。如果答案不止一个,返回长度最长且字典顺序最小的字符串。如果答案不存在,则返回空字符串。示例 1:输入:s = “abpcplea”, d = [“ale”,“apple”,“monkey”,“plea”]输出:“apple”示例 2:输入:s = “abpcplea”, d =...

2020-04-18 11:16:46 151

原创 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 161

原创 leetcode 45. 跳跃游戏 II(java线段树或者贪心)

给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。说明:假设你总是可以到达数组的最后一个位置。一.贪...

2020-04-17 19:48:08 222 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 155

原创 leetcode11. 盛最多水的容器

给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。思维题,如果直接暴力,那么就是N平方的复杂度,写起来也简单,双重循环跑一遍即可。但是平方的复杂度太高了...

2020-04-16 18:06:28 99

原创 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 171

原创 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 253

原创 vbs学习笔记

dim定义变量,vbs不区分变量类型msgbox直接输出inputbox()是一个输入框,()内部可以添加字符串rem或者"(单引号)可以注释mod取模运算x^y乘方运算int()取整运算if语句实例dim a,ba = 10b = 7if a>b thenmsgbox"a>b"end if...

2020-04-11 00:13:42 123

原创 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 159

原创 leetcode 1335. 工作计划的最低难度

你需要制定一份 d 天的工作计划表。工作之间存在依赖,要想执行第 i 项工作,你必须完成全部 j 项工作( 0 <= j < i)。你每天 至少 需要完成一项任务。工作计划的总难度是这 d 天每一天的难度之和,而一天的工作难度是当天应该完成工作的最大难度。给你一个整数数组 jobDifficulty 和一个整数 d,分别代表工作难度和需要计划的天数。第 i 项工作的难度是 jobD...

2020-02-25 13:51:42 209

原创 leetcode 717. 1比特与2比特字符

有两种特殊字符。第一种字符可以用一比特0来表示。第二种字符可以用两比特(10 或 11)来表示。现给一个由若干比特组成的字符串。问最后一个字符是否必定为一个一比特字符。给定的字符串总是由0结束。示例 1:输入:bits = [1, 0, 0]输出: True解释:唯一的编码方式是一个两比特字符和一个一比特字符。所以最后一个字符是一比特字符。示例 2:输入:bits = [1, ...

2020-02-25 00:43:26 81

原创 leetcode 337. 打家劫舍 III

在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。首先用Hashmap把每一个顶点映射...

2020-01-10 14:42:19 89

原创 leetcode 198. 打家劫舍

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号...

2020-01-07 22:07:36 116

原创 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 86

原创 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 102

原创 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 75

原创 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 73

原创 leetcode 3. 无重复字符的最长子串

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所...

2020-01-06 20:10:35 77

原创 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 63

原创 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 211

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除