自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

信仰.的博客

学无止境

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

原创 JAVA程序设计:H指数 II(LeetCode:275)

给定一位研究者论文被引用次数的数组(被引用次数是非负整数),数组已经按照升序排列。编写一个方法,计算出研究者的 h 指数。h 指数的定义: “h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (N 篇论文中)至多有 h 篇论文分别被引用了至少 h 次。(其余的N - h篇论文每篇被引用次数不多于 h 次。)"示例:输入: cita...

2019-09-30 10:21:33 384 1

原创 JAVA程序设计:整数转换英文表示(LeetCode:273)

将非负整数转换为其对应的英文表示。可以保证给定输入小于231 - 1 。示例 1:输入: 123输出: "One Hundred Twenty Three"示例 2:输入: 12345输出: "Twelve Thousand Three Hundred Forty Five"示例 3:输入: 1234567输出: "One Million Two Hundred Thi...

2019-09-29 21:08:42 916

原创 LeetCode第156场周赛:5208. 穿过迷宫的最少移动次数(BFS)

5208.穿过迷宫的最少移动次数显示英文描述我的提交返回竞赛用户通过次数45 用户尝试次数84 通过次数48 提交次数145 题目难度Hard你还记得那条风靡全球的贪吃蛇吗?我们在一个n*n的网格上构建了新的迷宫地图,蛇的长度为 2,也就是说它会占去两个单元格。蛇会从左上角((0, 0)和(0, 1))开始移动。我们用0表示空单元格,用 1 表示障碍物。...

2019-09-29 17:07:51 474

原创 LeetCode第156场周赛:5206. 删除字符串中的所有相邻重复项 II(模拟)

5206.删除字符串中的所有相邻重复项 II显示英文描述我的提交返回竞赛用户通过次数320 用户尝试次数393 通过次数323 提交次数642 题目难度Medium给你一个字符串s,「k倍重复项删除操作」将会从s中选择k个相邻且相等的字母,并删除它们,使被删去的字符串的左侧和右侧连在一起。你需要对s重复进行无限次这样的删除操作,直到无法继续为止。...

2019-09-29 15:05:23 702

原创 JAVA程序设计:丑数 II(LeetCode:264)

编写一个程序,找出第 n 个丑数。丑数就是只包含质因数2, 3, 5 的正整数。示例:输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。说明:1是丑数。n不超过1690。思路:res[0] = 1然后用res[0]乘以{2,3,5},放进最小堆中,从堆中取出堆顶,即为res[1]。...

2019-09-28 19:54:23 293

原创 JAVA程序设计:只出现一次的数字 III(LeetCode:260)

给定一个整数数组nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。示例 :输入: [1,2,1,3,2,5]输出: [3,5]注意:结果输出的顺序并不重要,对于上面的例子,[5, 3]也是正确答案。你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?思路:我们知道倘若只有一个出现一次的数字并且其他数字出现的次数都...

2019-09-28 19:29:31 397

原创 JAVA程序设计:为运算表达式设计优先级(LeetCode:241)

给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +,-以及*。示例1:输入: "2-1-1"输出: [0, 2]解释:((2-1)-1) = 0(2-(1-1)) = 2示例2:输入: "2*3-4*5"输出: [-34, -14, -10, -10, 10]解释:...

2019-09-28 14:31:07 467

原创 JAVA程序设计:滑动窗口最大值(LeetCode:239)

给定一个数组 nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]解释: 滑动窗口的位置 最大值-----...

2019-09-27 22:03:28 453

原创 JAVA程序设计:除自身以外数组的乘积(LeetCode:238)

给定长度为n的整数数组nums,其中n > 1,返回输出数组output,其中 output[i]等于nums中除nums[i]之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]说明: 请不要使用除法,且在O(n) 时间复杂度内完成此题。进阶:你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输...

2019-09-27 16:41:01 382

原创 JAVA程序设计:二叉树的最近公共祖先(LeetCode:236)

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树:root =[3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3...

2019-09-26 20:18:50 300

原创 JAVA程序设计:二叉搜索树的最近公共祖先(LeetCode:235)

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树:root =[6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root ...

2019-09-26 19:43:09 191

原创 2019 力扣杯全国秋季编程大赛:5. 发 LeetCoin(线段树+懒惰标记)

5.发 LeetCoin显示英文描述我的提交用户通过次数83 用户尝试次数285 通过次数86 提交次数862 题目难度Hard力扣决定给一个刷题团队发LeetCoin作为奖励。同时,为了监控给大家发了多少LeetCoin,力扣有时候也会进行查询。该刷题团队的管理模式可以用一棵树表示:团队只有一个负责人,编号为1。除了该负责人外,每个人有且仅有一个领导(负...

2019-09-26 17:27:33 592

原创 2019 力扣杯全国秋季编程大赛:4. 覆盖(状压DP)

4.覆盖显示英文描述我的提交用户通过次数66 用户尝试次数269 通过次数67 提交次数788 题目难度Hard你有一块棋盘,棋盘上有一些格子已经坏掉了。你还有无穷块大小为1 * 2的多米诺骨牌,你想把这些骨牌不重叠地覆盖在完好的格子上,请找出你最多能在棋盘上放多少块骨牌?这些骨牌可以横着或者竖着放。输入:n, m代表棋盘的大小;broken是一个b * 2的...

2019-09-25 16:39:35 718

原创 2019 力扣杯全国秋季编程大赛:3. 机器人大冒险(模拟)

3.机器人大冒险显示英文描述我的提交用户通过次数429 用户尝试次数1180 通过次数439 提交次数5393 题目难度Medium力扣团队买了一个可编程机器人,机器人初始位置在原点(0, 0)。小伙伴事先给机器人输入一串指令command,机器人就会无限循环这条指令的步骤进行移动。指令有两种:U: 向y轴正方向移动一格 R: 向x轴正方向移动一格。不幸的是,在...

2019-09-25 10:04:47 385

原创 Java 泛型

假定我们有这样一个需求:写一个排序方法,能够对整型数组、字符串数组甚至其他任何类型的数组进行排序,该如何实现?答案是可以使用Java 泛型。使用 Java 泛型的概念,我们可以写一个泛型方法来对一个对象数组排序。然后,调用该泛型方法来对整型数组、浮点数数组、字符串数组等进行排序。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。泛型方法你可以写一个泛型方法,该...

2019-09-24 20:32:56 253

原创 JAVA程序设计:回文链表(LeetCode:234)

请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用O(n) 时间复杂度和 O(1) 空间复杂度解决此题?思路:我直接按照进阶的要求解的这道题,具体思路是翻转后一半列表,然后定义定义两个头指针同时遍历两部分,遇到不相同的直接false,若遍历完则返回true...

2019-09-24 17:37:54 286

原创 JAVA程序设计:数字 1 的个数(LeetCode:233)

给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数。示例:输入: 13输出: 6解释: 数字 1 出现在以下数字中: 1, 10, 11, 12, 13 。思路:找规律吧,通用解法应该是裸的数位DP,这里采用数学法吧。。。。class Solution { int ans=0; public int countDigitOne(int n) ...

2019-09-24 11:51:56 751

原创 JAVA程序设计:求众数 II(LeetCode:229)

给定一个大小为n的数组,找出其中所有出现超过⌊ n/3 ⌋次的元素。说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1)。示例1:输入: [3,2,3]输出: [3]示例 2:输入: [1,1,1,3,3,2,2,2]输出: [1,2]思路:超过n/3的数最多只能有两个。先选出两个候选人A,B。 遍历数组,分三种情况:1.如果投A(当前元素等...

2019-09-23 20:28:46 248

原创 LeetCode第155场周赛:5200. 项目管理(拓扑排序)

5200.项目管理显示英文描述我的提交返回竞赛用户通过次数12 用户尝试次数27 通过次数12 提交次数45 题目难度Hard公司共有n个项目和 m个小组,每个项目要不没有归属,要不就由其中的一个小组负责。我们用group[i]代表第i个项目所属的小组,如果这个项目目前无人接手,那么group[i]就等于-1。(项目和小组都是从零开始编号的)...

2019-09-23 19:08:25 506

原创 LeetCode第155场周赛:5199. 交换字符串中的元素(并查集)

给你一个字符串s,以及该字符串中的一些「索引对」数组pairs,其中pairs[i] =[a, b]表示字符串中的两个索引(编号从 0 开始)。你可以任意多次交换在pairs中任意一对索引处的字符。返回在经过若干次交换后,s可以变成的按字典序最小的字符串。示例 1:输入:s = "dcab", pairs = [[0,3],[1,2]]输出:"bacd...

2019-09-23 10:24:14 644

原创 LeetCode第155场周赛:51978 -丑数 III(二分答案+容斥原理)

思路:因为数很大,我们不可能一一枚举,这类题有个固定的套路就是二分答案,想到这里这道题你已经完成了一半了,剩下的就是思考如何更快的判断当前答案是否合法,我们要想那些数是可以被a或者b或者c除尽的呢?没错,不就是他们的倍数吗哈哈哈,但是我们无脑加倍数肯定会算重复呀,因此容斥原理搞一搞啦。不会容斥的还是别搞acm了(话说狠了,小可爱们可以去百度一下的哈)。。。。class Solution ...

2019-09-22 21:47:38 403

原创 JAVA程序设计:汇总区间(LeetCode:228)

给定一个无重复元素的有序整数数组,返回数组区间范围的汇总。示例 1:输入: [0,1,2,4,5,7]输出: ["0->2","4->5","7"]解释: 0,1,2 可组成一个连续的区间;4,5 可组成一个连续的区间。示例 2:输入: [0,2,3,4,6,8,9]输出: ["0","2->4","6","8->9"]解释: 2,3,4 可组成一个...

2019-09-21 18:24:55 299

原创 JAVA程序设计:基本计算器 II(LeetCode:227)

实现一个基本的计算器来计算一个简单的字符串表达式的值。字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格。 整数除法仅保留整数部分。示例1:输入: "3+2*2"输出: 7示例 2:输入: " 3/2 "输出: 1示例 3:输入: " 3+5 / 2 "输出: 5思路:仍然用栈模拟即可。class Solution { publi...

2019-09-21 11:39:32 314

原创 JAVA程序设计:基本计算器(LeetCode:224)

实现一个基本的计算器来计算一个简单的字符串表达式的值。字符串表达式可以包含左括号(,右括号),加号+,减号-,非负整数和空格。示例 1:输入: "1 + 1"输出: 2示例 2:输入: " 2-1 + 2 "输出: 3示例 3:输入: "(1+(4+5+2)-3)+(6+8)"输出: 23说明:你可以假设所给定的表达式都是有效的。请不要使用内置...

2019-09-20 20:00:42 859

原创 JAVA程序设计:矩形面积(LeetCode:223)

在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积。每个矩形由其左下顶点和右上顶点坐标表示,如图所示。示例:输入: -3, 0, 3, 4, 0, -1, 9, 2输出: 45说明: 假设矩形面积不会超出int的范围。思路:本来以为是多矩形覆盖的面积问题,想着回顾一下扫描线,没想到是只有两个矩形的辣鸡题,随便判一下就好了。class Solution { ...

2019-09-20 19:08:49 681

原创 JAVA程序设计:完全二叉树的节点个数(LeetCode:222)

给出一个完全二叉树,求出该树的节点个数。说明:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~2h个节点。示例:输入: 1 / \ 2 3/ \ /4 5 6输出: 6思路:其实是一个史诗级简单的回朔题,...

2019-09-20 18:43:38 607

原创 JAVA程序设计:最大正方形(LeetCode:221)

在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4思路:该方法复杂度较高,能勉强通过这道题,相信有更优的解法。我是通过求每一行的前缀和使得减少一层for循环来实现的。class Solution { public int ma...

2019-09-19 17:25:20 489

原创 JAVA程序设计:存在重复元素 III(LeetCode:220)

给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得nums [i] 和nums [j]的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ķ。示例1:输入: nums = [1,2,3,1], k = 3, t = 0输出: true示例 2:输入: nums = [1,0,1,1], k = 1, t = 2输出: true示例 3:...

2019-09-16 10:23:06 339

原创 C++语言程序设计:天际线问题(LeetCode:218)

城市的天际线是从远处观看该城市中所有建筑物形成的轮廓的外部轮廓。现在,假设您获得了城市风光照片(图A)上显示的所有建筑物的位置和高度,请编写一个程序以输出由这些建筑物形成的天际线(图B)。每个建筑物的几何信息用三元组[Li,Ri,Hi] 表示,其中 Li 和 Ri 分别是第 i 座建筑物左右边缘的 x 坐标,Hi 是其高度。可以保证0 ≤ Li, Ri ≤ INT_MAX,0 &...

2019-09-15 16:35:04 1234 1

原创 JAVA程序设计:最短回文串(LeetCode:214)

给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。示例1:输入: "aacecaaa"输出: "aaacecaaa"示例 2:输入: "abcd"输出: "dcbabcd"思路:这题O(N^2)的暴力方法没法过,因此我们可以考虑kmp算法,这样我们不用每次从头开始遍历,不懂的自行百度。class Soluti...

2019-09-14 21:05:51 1007

原创 JAVA程序设计:打家劫舍 II(LeetCode:213)

你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例1:输入: [2,3,2]输出: 3解释: ...

2019-09-14 19:57:48 537

原创 JAVA程序设计:单词搜索 II(LeetCode:212)

给定一个二维网格board和一个字典中的单词列表 words,找出所有同时在二维网格和字典中出现的单词。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。示例:输入:words = ["oath","pea","eat","rain"] and board =[ ['o...

2019-09-14 19:40:56 447

原创 JAVA程序设计:添加与搜索单词 - 数据结构设计(LeetCode:211)

设计一个支持以下两种操作的数据结构:void addWord(word)bool search(word)search(word)可以搜索文字或正则表达式字符串,字符串只包含字母.或a-z。. 可以表示任何一个字母。示例:addWord("bad")addWord("dad")addWord("mad")search("pad") -> falsesear...

2019-09-14 14:56:28 343

原创 JAVA程序设计:长度最小的子数组(LeetCode:209)

给定一个含有n个正整数的数组和一个正整数s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。示例:输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组[4,3]是该条件下的长度最小的连续子数组。进阶:如果你已经完成了O(n) 时间复杂度的解法, 请尝试O(n log n) 时间复杂度...

2019-09-12 18:56:58 261

原创 JAVA程序设计:实现 Trie (前缀树)(LeetCode:208)

实现一个 Trie (前缀树),包含insert,search, 和startsWith这三个操作。示例:Trie trie = new Trie();trie.insert("apple");trie.search("apple"); // 返回 truetrie.search("app"); // 返回 falsetrie.startsWith("app"...

2019-09-12 18:43:34 345

原创 JAVA程序设计:课程表(LeetCode:207)

现在你总共有 n 门课需要选,记为0到n-1。在选修某些课程之前需要一些先修课程。例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,判断是否可能完成所有课程的学习?示例 1:输入: 2, [[1,0]]输出: true解释:总共有 2 门课程。学习课程 1 之前,你需要完成课程 0。所以这是可能的...

2019-09-12 10:09:31 1451

原创 JAVA程序设计:数字范围按位与(LeetCode:201)

给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。示例 1:输入: [5,7]输出: 4示例 2:输入: [0,1]思路:规律题,可以在纸上随便写几个连续的数的二进制表示,这样就能发现其实每一位的连续1的数量都是有规律的,比如最低位连续1的个数是1个,然后倒数第二位是2个...

2019-09-10 19:39:04 471

原创 JAVA程序设计:二叉树的右视图(LeetCode:199)

给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入:[1,2,3,null,5,null,4]输出:[1, 3, 4]解释: 1 <---/ \2 3 <---\ \ 5 4 <---思路:通过栈模拟即可,新开一...

2019-09-10 19:10:14 785

原创 JAVA程序设计:最大数(LeetCode:179)

给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。示例 1:输入: [10,2]输出: 210示例2:输入: [3,30,34,5,9]输出: 9534330说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。思路:一开始以为是个水题,觉得将所有整数变成字符串,然后对字符串按字典序排序之后一个一个连起来就是答案,后来发现不是这样,一个比较屌的样例直接...

2019-09-07 16:32:28 822

原创 JAVA程序设计:地下城游戏(LeetCode:174)

一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负整数,则表示骑士将损失健康点数);其他...

2019-09-07 15:55:50 515

空空如也

空空如也

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

TA关注的人

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