自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(137)
  • 收藏
  • 关注

原创 leetcode面试题 16.26. 计算器(栈)

给定一个包含正整数、加(+)、减(-)、乘(*)、除(/)的算数表达式(括号除外),计算其结果。表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。示例 1:输入: “3+2*2”输出: 7代码class Solution { public int calculate(String s) { int i=0,n=s.length(); LinkedList<Character> stack=new Li

2020-08-31 11:40:14 230

原创 leetcode1476. 子矩形查询

请你实现一个类 SubrectangleQueries ,它的构造函数的参数是一个 rows x cols 的矩形(这里用整数矩阵表示),并支持以下两种操作:updateSubrectangle(int row1, int col1, int row2, int col2, int newValue)用 newValue 更新以 (row1,col1) 为左上角且以 (row2,col2) 为右下角的子矩形。2. getValue(int row, int col)返回矩形中坐标 (row,co

2020-08-31 10:41:44 108

原创 leetcode841. 钥匙和房间(bfs)

有 N 个房间,开始时你位于 0 号房间。每个房间有不同的号码:0,1,2,…,N-1,并且房间里可能有一些钥匙能使你进入下一个房间。在形式上,对于每个房间 i 都有一个钥匙列表 rooms[i],每个钥匙 rooms[i][j] 由 [0,1,…,N-1] 中的一个整数表示,其中 N = rooms.length。 钥匙 rooms[i][j] = v 可以打开编号为 v 的房间。最初,除 0 号房间外的其余所有房间都被锁住。你可以自由地在房间之间来回走动。如果能进入每个房间返回 true,否则返

2020-08-31 10:33:09 93

原创 leetcode557. 反转字符串中的单词 III

给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例:输入:“Let’s take LeetCode contest”输出:“s’teL ekat edoCteeL tsetnoc”代码class Solution { public String reverseWords(String s) { StringBuilder stringBuilder=new StringBuilder(); String[] t=ne

2020-08-30 09:35:20 79

原创 leetcode945. 使数组唯一的最小增量(排序)

给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1。返回使 A 中的每个值都是唯一的最少操作次数。示例 1:输入:[1,2,2]输出:1解释:经过一次 move 操作,数组将变为 [1, 2, 3]。代码class Solution { public int minIncrementForUnique(int[] A) { int res=0; Arrays.sort(A);//排序 for(in

2020-08-29 15:49:36 130

原创 leetcode214. 最短回文串(kmp)

给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。示例 1:输入: “aacecaaa”输出: “aaacecaaa”代码class Solution { public int getShortestPalindrome(String s) {//求next数组的最后一个元素 char[] temp=s.toCharArray(); int n=s.length(); int[]

2020-08-29 14:59:28 160

原创 leetcode5. 最长回文子串(动态规划)

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。代码class Solution { public String longestPalindrome(String s) { int n=s.length(),max=-1,l=-1,r=-1; if(n==0) return ""; boolean[][] dp

2020-08-29 10:58:59 55

原创 leetcode1442. 形成两个异或相等数组的三元组数目

给你一个整数数组 arr 。现需要从数组中取三个下标 i、j 和 k ,其中 (0 <= i < j <= k < arr.length) 。a 和 b 定义如下:a = arr[i] ^ arr[i + 1] ^ … ^ arr[j - 1]b = arr[j] ^ arr[j + 1] ^ … ^ arr[k]注意:^ 表示 按位异或 操作。请返回能够令 a == b 成立的三元组 (i, j , k) 的数目。示例 1:输入:arr = [2,3,1,6,7]

2020-08-28 14:01:40 163

原创 leetcode657. 机器人能否返回原点

在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R(右),L(左),U(上)和 D(下)。如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false。注意:机器人“面朝”的方向无关紧要。 “R” 将始终使机器人向右移动一次,“L” 将始终向左移动等。此外,假设每次移动机器人的移动幅度相同。示例 1:输入: “UD”输

2020-08-28 10:44:46 92

原创 leetcode1249. 移除无效的括号(栈)

给你一个由 ‘(’、’)’ 和小写字母组成的字符串 s。你需要从字符串中删除最少数目的 ‘(’ 或者 ‘)’ (可以删除任意位置的括号),使得剩下的「括号字符串」有效。请返回任意一个合法字符串。有效「括号字符串」应当符合以下 任意一条 要求:空字符串或只包含小写字母的字符串可以被写作 AB(A 连接 B)的字符串,其中 A 和 B 都是有效「括号字符串」可以被写作 (A) 的字符串,其中 A 是一个有效的「括号字符串」示例 1:输入:s = “lee(t©o)de)”输出:“lee(t©o

2020-08-28 10:38:04 130

原创 leetcode228. 汇总区间

给定一个无重复元素的有序整数数组,返回数组区间范围的汇总。示例 1:输入: [0,1,2,4,5,7]输出: [“0->2”,“4->5”,“7”]解释: 0,1,2 可组成一个连续的区间; 4,5 可组成一个连续的区间。代码class Solution { public List<String> summaryRanges(int[] nums) { List<String> res=new ArrayList<>();

2020-08-27 14:21:02 69

原创 leetcode1267. 统计参与通信的服务器(dfs)

这里有一幅服务器分布图,服务器的位置标识在 m * n 的整数矩阵网格 grid 中,1 表示单元格上有服务器,0 表示没有。如果两台服务器位于同一行或者同一列,我们就认为它们之间可以进行通信。请你统计并返回能够与至少一台其他服务器进行通信的服务器的数量。示例 1:输入:grid = [[1,0],[0,1]]输出:0解释:没有一台服务器能与其他服务器进行通信。代码class Solution { public int countServers(int[][] grid) {

2020-08-27 13:13:35 304

原创 leetcode332. 重新安排行程(dfs)

给定一个机票的字符串二维数组 [from, to],子数组中的两个成员分别表示飞机出发和降落的机场地点,对该行程进行重新规划排序。所有这些机票都属于一个从 JFK(肯尼迪国际机场)出发的先生,所以该行程必须从 JFK 开始。说明:如果存在多种有效的行程,你可以按字符自然排序返回最小的行程组合。例如,行程 [“JFK”, “LGA”] 与 [“JFK”, “LGB”] 相比就更小,排序更靠前所有的机场都用三个大写字母表示(机场代码)。假定所有机票至少存在一种合理的行程。示例 1:输入: [[“MU

2020-08-27 11:19:48 142

原创 leetcode1438. 绝对差不超过限制的最长连续子数组

给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit 。如果不存在满足条件的子数组,则返回 0 。示例 1:输入:nums = [8,2,4,7], limit = 4输出:2解释:所有子数组如下:[8] 最大绝对差 |8-8| = 0 <= 4.[8,2] 最大绝对差 |8-2| = 6 > 4.[8,2,4] 最大绝对差 |8-2| = 6 > 4.[8,2,4,

2020-08-26 14:15:34 253

原创 leetcode1328. 破坏回文串

给你一个回文字符串 palindrome ,请你将其中 一个 字符用任意小写英文字母替换,使得结果字符串的字典序最小,且 不是 回文串。请你返回结果字符串。如果无法做到,则返回一个空串。示例 1:输入:palindrome = “abccba”输出:“aaccba”代码class Solution { public String breakPalindrome(String palindrome) { int n=palindrome.length();

2020-08-26 11:29:15 193

原创 leetcode816. 模糊坐标

我们有一些二维坐标,如 “(1, 3)” 或 “(2, 0.5)”,然后我们移除所有逗号,小数点和空格,得到一个字符串S。返回所有可能的原始字符串到一个列表中。原始的坐标表示法不会存在多余的零,所以不会出现类似于"00", “0.0”, “0.00”, “1.0”, “001”, "00.01"或一些其他更小的数来表示坐标。此外,一个小数点前至少存在一个数,所以也不会出现“.1”形式的数字。最后返回的列表可以是任意顺序的。而且注意返回的两个数字中间(逗号之后)都有一个空格。示例 1:输入: “(12

2020-08-26 11:13:58 283

原创 leetcode91. 解码方法

一条包含字母 A-Z 的消息通过以下方式进行了编码:‘A’ -> 1‘B’ -> 2…‘Z’ -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: “12”输出: 2解释: 它可以解码为 “AB”(1 2)或者 “L”(12)。代码class Solution { int[] dp; public int numDecodings(String s) { int l=s.length();

2020-08-25 13:36:08 79

原创 leetcode1451. 重新排列句子中的单词(排序)

「句子」是一个用空格分隔单词的字符串。给你一个满足下述格式的句子 text :句子的首字母大写text 中的每个单词都用单个空格分隔。请你重新排列 text 中的单词,使所有单词按其长度的升序排列。如果两个单词的长度相同,则保留其在原句子中的相对顺序。请同样按上述格式返回新的句子。示例 1:输入:text = “Leetcode is cool”输出:“Is cool leetcode”解释:句子中共有 3 个单词,长度为 8 的 “Leetcode” ,长度为 2 的 “is” 以及长度为

2020-08-25 12:51:40 1162

原创 leetcode1471. 数组中的 k 个最强值(排序)

给你一个整数数组 arr 和一个整数 k 。设 m 为数组的中位数,只要满足下述两个前提之一,就可以判定 arr[i] 的值比 arr[j] 的值更强:|arr[i] - m| > |arr[j] - m||arr[i] - m| == |arr[j] - m|,且 arr[i] > arr[j]请返回由数组中最强的 k 个值组成的列表。答案可以以 任意顺序 返回。中位数 是一个有序整数列表中处于中间位置的值。形式上,如果列表的长度为 n ,那么中位数就是该有序列表(下标从 0 开始)

2020-08-25 11:29:03 163

原创 leetcode491. 递增子序列(回溯算法)

给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。示例:输入: [4, 6, 7, 7]输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]]代码class Solution { List<List<Integer>> res=new ArrayList<>(); Set<List<Integer&gt

2020-08-25 10:26:49 128

原创 leetcode1300. 转变数组后最接近目标值的数组和

给你一个整数数组 arr 和一个目标值 target ,请你返回一个整数 value ,使得将数组中所有大于 value 的值变成 value 后,数组的和最接近 target (最接近表示两者之差的绝对值最小)。如果有多种使得和最接近 target 的方案,请你返回这些整数中的最小值。请注意,答案不一定是 arr 中的数字。示例 1:输入:arr = [4,9,3], target = 10输出:3解释:当选择 value 为 3 时,数组会变成 [3, 3, 3],和为 9 ,这是最接近

2020-08-24 14:09:18 67

原创 leetcode537. 复数乘法

给定两个表示复数的字符串。返回表示它们乘积的字符串。注意,根据定义 i2 = -1 。示例 1:输入: “1+1i”, “1+1i”输出: “0+2i”解释: (1 + i) * (1 + i) = 1 + i2 + 2 * i = 2i ,你需要将它转换为 0+2i 的形式。代码class Solution { public String complexNumberMultiply(String a, String b) { String[] s1=a.split

2020-08-24 12:40:28 155

原创 leetcode950. 按递增顺序显示卡牌

牌组中的每张卡牌都对应有一个唯一的整数。你可以按你想要的顺序对这套卡片进行排序。最初,这些卡牌在牌组里是正面朝下的(即,未显示状态)。现在,重复执行以下步骤,直到显示所有卡牌为止:从牌组顶部抽一张牌,显示它,然后将其从牌组中移出。如果牌组中仍有牌,则将下一张处于牌组顶部的牌放在牌组的底部。如果仍有未显示的牌,那么返回步骤 1。否则,停止行动。返回能以递增顺序显示卡牌的牌组顺序。答案中的第一张牌被认为处于牌堆顶部。示例:输入:[17,13,11,2,3,5,7]输出:[2,13,3,11,

2020-08-24 11:27:13 115

原创 leetcode459. 重复的子字符串

给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。示例 1:输入: “abab”输出: True解释: 可由子字符串 “ab” 重复两次构成。代码class Solution { public boolean repeatedSubstringPattern(String s) { int n=s.length(); for(int i=n/2;i>0;i--)//穷举可能的

2020-08-24 10:48:27 110

原创 leetcode201. 数字范围按位与

给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。示例 1:输入: [5,7]输出: 4代码class Solution { public int rangeBitwiseAnd(int m, int n) { int res=m; for(int i=n;i>m;i--) { if(res==0) break;

2020-08-23 10:19:49 87

原创 leetcode713. 乘积小于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的子数组。代码class Solution { public int numSubarrayProductLessThanK(int

2020-08-22 11:36:39 139

原创 leetcode79. 24 点游戏

你有 4 张写有 1 到 9 数字的牌。你需要判断是否能通过 *,/,+,-,(,) 的运算得到 24。示例 1:输入: [4, 1, 8, 7]输出: True解释: (8-4) * (7-1) = 24代码class Solution { public boolean judgePoint24(int[] nums) { List<Double> list=new ArrayList<>(); for (int c:nums

2020-08-22 10:57:06 138

原创 leetcode1233. 删除子文件夹

你是一位系统管理员,手里有一份文件夹列表 folder,你的任务是要删除该列表中的所有 子文件夹,并以 任意顺序 返回剩下的文件夹。我们这样定义「子文件夹」:如果文件夹 folder[i] 位于另一个文件夹 folder[j] 下,那么 folder[i] 就是 folder[j] 的子文件夹。文件夹的「路径」是由一个或多个按以下格式串联形成的字符串:/ 后跟一个或者多个小写英文字母。例如,/leetcode 和 /leetcode/problems 都是有效的路径,而空字符串和 / 不是。示例

2020-08-21 13:52:42 108 1

原创 leetcode面试题 16.21. 交换和(二分查找)

给定两个整数数组,请交换一对数值(每个数组中取一个数值),使得两个数组所有元素的和相等。返回一个数组,第一个元素是第一个数组中要交换的元素,第二个元素是第二个数组中要交换的元素。若有多个答案,返回任意一个均可。若无满足条件的数值,返回空数组。示例:输入: array1 = [4, 1, 2, 1, 1, 2], array2 = [3, 6, 3, 3]输出: [1, 3]代码class Solution { public int[] findSwapValues(int[] array

2020-08-21 11:06:03 242

原创 leetcode152. 乘积最大子数组

给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。代码class Solution { public int maxProduct(int[] nums) { int n=nums.length,res=Integer.MIN_VALUE; int[] dp=new int[n];

2020-08-21 10:30:50 75

原创 leetcode111. 二叉树的最小深度(队列)

给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2.代码/** * Definition for a binary tree node. * public class TreeNode { * int val; *

2020-08-21 10:11:45 115

原创 leetcode12. 整数转罗马数字

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况

2020-08-20 14:28:44 110

原创 leetcode1423. 可获得的最大点数

几张卡牌 排成一行,每张卡牌都有一个对应的点数。点数由整数数组 cardPoints 给出。每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿 k 张卡牌。你的点数就是你拿到手中的所有卡牌的点数之和。给你一个整数数组 cardPoints 和整数 k,请你返回可以获得的最大点数。示例 1:输入:cardPoints = [1,2,3,4,5,6,1], k = 3输出:12解释:第一次行动,不管拿哪张牌,你的点数总是 1 。但是,先拿最右边的卡牌将会最大化你的可获得点数。最优策略是

2020-08-20 14:01:26 130

原创 leetcode915. 分割数组

给定一个数组 A,将其划分为两个不相交(没有公共元素)的连续子数组 left 和 right, 使得:left 中的每个元素都小于或等于 right 中的每个元素。left 和 right 都是非空的。left 要尽可能小。在完成这样的分组后返回 left 的长度。可以保证存在这样的划分方法。示例 1:输入:[5,0,3,8,6]输出:3解释:left = [5,0,3],right = [8,6]代码class Solution { public int partitionDi

2020-08-20 13:42:44 167

原创 leetcode1169. 查询无效交易

如果出现下述两种情况,交易 可能无效:交易金额超过 ¥1000或者,它和另一个城市中同名的另一笔交易相隔不超过 60 分钟(包含 60 分钟整)每个交易字符串 transactions[i] 由一些用逗号分隔的值组成,这些值分别表示交易的名称,时间(以分钟计),金额以及城市。给你一份交易清单 transactions,返回可能无效的交易列表。你可以按任何顺序返回答案。示例 1:输入:transactions = [“alice,20,800,mtv”,“alice,50,100,beijing”

2020-08-20 12:59:45 193

原创 leetcode1277. 统计全为 1 的正方形子矩阵(dp)

给你一个 m * n 的矩阵,矩阵中的元素不是 0 就是 1,请你统计并返回其中完全由 1 组成的 正方形 子矩阵的个数。 示例 1:输入:matrix =[ [0,1,1,1], [1,1,1,1], [0,1,1,1]]输出:15解释: 边长为 1 的正方形有 10 个。边长为 2 的正方形有 4 个。边长为 3 的正方形有 1 个。正方形的总数 = 10 + 4 + 1 = 15.代码class Solution { public int cou

2020-08-19 14:30:44 148

原创 leetcode1487. 保证文件名唯一

给你一个长度为 n 的字符串数组 names 。你将会在文件系统中创建 n 个文件夹:在第 i 分钟,新建名为 names[i] 的文件夹。由于两个文件 不能 共享相同的文件名,因此如果新建文件夹使用的文件名已经被占用,系统会以 (k) 的形式为新文件夹的文件名添加后缀,其中 k 是能保证文件名唯一的 最小正整数 。返回长度为 n 的字符串数组,其中 ans[i] 是创建第 i 个文件夹时系统分配给该文件夹的实际名称。示例 1:输入:names = [“pes”,“fifa”,“gta”,“pes(

2020-08-19 13:20:38 187

原创 leetcode468. 验证IP地址

编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址。IPv4 地址由十进制数和点来表示,每个地址包含4个十进制数,其范围为 0 - 255, 用(".")分割。比如,172.16.254.1;同时,IPv4 地址内的数不会以 0 开头。比如,地址 172.16.254.01 是不合法的。IPv6 地址由8组16进制的数字来表示,每组表示 16 比特。这些组数字通过 (":")分割。比如, 2001:0db8:85a3:0000:0000:8a2e:0370:7334 是一个有效

2020-08-19 11:21:18 92

原创 leetcode151. 翻转字符串里的单词

给定一个字符串,逐个翻转字符串中的每个单词。示例 1:输入: “the sky is blue”输出: “blue is sky the”代码class Solution { public String reverseWords(String s) { int n=s.length(),i=0; ArrayList<String> arrayList=new ArrayList<>(); while (i<n)

2020-08-19 10:26:05 60

原创 leetcode1177. 构建回文串检测(前缀和)

给你一个字符串 s,请你对 s 的子串进行检测。每次检测,待检子串都可以表示为 queries[i] = [left, right, k]。我们可以 重新排列 子串 s[left], …, s[right],并从中选择 最多 k 项替换成任何小写英文字母。如果在上述检测过程中,子串可以变成回文形式的字符串,那么检测结果为 true,否则结果为 false。返回答案数组 answer[],其中 answer[i] 是第 i 个待检子串 queries[i] 的检测结果。注意:在替换时,子串中的每个字母

2020-08-18 15:16:48 157

空空如也

空空如也

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

TA关注的人

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