随手刷
刷题
北暖之森
我与我周旋久,宁做我
展开
-
500. 键盘行
package com.atguigu.demo;import java.util.ArrayList;import java.util.Arrays;import java.util.List;/** * @author: lb * @Date: 2021/06/26/22:10 * <p> * 给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。 * <p> * 美式键盘 中: * <p>原创 2021-06-26 22:51:51 · 193 阅读 · 0 评论 -
633. 平方数之和
/** * 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c 。 * <p> * * <p> * 示例 1: * <p> * 输入:c = 5 * 输出:true * 解释:1 * 1 + 2 * 2 = 5 * 示例 2: * <p> * 输入:c = 3 * 输出:false * 示例 3: * <p> * 输入:c = 4 * 输出:true * 示例 4:原创 2021-04-28 18:12:24 · 57 阅读 · 0 评论 -
1047. 删除字符串中的所有相邻重复项
/** * 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 * <p> * 在 S 上反复执行重复项删除操作,直到无法继续删除。 * <p> * 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 * <p> * 示例: * <p> * 输入:"abbaca" * 输出:"ca" * 解释: * 例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以原创 2021-04-23 17:21:09 · 69 阅读 · 0 评论 -
977. 有序数组的平方
/** * 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 * <p> * * <p> * 示例 1: * <p> * 输入:nums = [-4,-1,0,3,10] * 输出:[0,1,9,16,100] * 解释:平方后,数组变为 [16,1,0,9,100] * 排序后,数组变为 [0,1,9,16,100] * 示例 2: * <p> * 输入:nums原创 2021-04-23 16:01:59 · 125 阅读 · 0 评论 -
1207. 独一无二的出现次数
/** * 给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。 * <p> * 如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。 * <p> * * <p> * 示例 1: * <p> * 输入:arr = [1,2,2,1,1,3] * 输出:true * 解释:在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1 次。没有两个数的出现次数相同。 * 示例 2: * <原创 2021-04-23 15:21:28 · 59 阅读 · 0 评论 -
1304. 和为零的N个唯一整数
/** * 给你一个整数 n,请你返回 任意 一个由 n 个 各不相同 的整数组成的数组,并且这 n 个数相加和为 0 。 * <p> * * <p> * 示例 1: * <p> * 输入:n = 5 * 输出:[-7,-1,1,3,4] * 解释:这些数组也是正确的 [-5,-1,1,2,3],[-3,-1,2,-2,4]。 * 示例 2: * <p> * 输入:n = 3 * 输出:[-1,0,1] * 示例 3: * &原创 2021-04-23 11:58:22 · 64 阅读 · 0 评论 -
1374. 生成每种字符都是奇数个的字符串
/** * 给你一个整数 n,请你返回一个含 n 个字符的字符串,其中每种字符在该字符串中都恰好出现 奇数次 。 * <p> * 返回的字符串必须只含小写英文字母。如果存在多个满足题目要求的字符串,则返回其中任意一个即可。 * 示例 1: * <p> * 输入:n = 4 * 输出:"pppz" * 解释:"pppz" 是一个满足题目要求的字符串,因为 'p' 出现 3 次,且 'z' 出现 1 次。当然,还有很多其他字符串也满足题目要求,比如:"ohhh" 和 "l原创 2021-04-23 11:25:35 · 66 阅读 · 0 评论 -
557. 反转字符串中的单词 III
/** * 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。 * <p> * 示例: * <p> * 输入:"Let's take LeetCode contest" * 输出:"s'teL ekat edoCteeL tsetnoc" * **/class Solution { public String reverseWords(String s) { StringBuilder sb = new原创 2021-04-23 09:29:39 · 54 阅读 · 0 评论 -
1460. 通过翻转子数组使两个数组相等
/** * 给你两个长度相同的整数数组 target 和 arr 。 * <p> * 每一步中,你可以选择 arr 的任意 非空子数组 并将它翻转。你可以执行此过程任意次。 * <p> * 如果你能让 arr 变得与 target 相同,返回 True;否则,返回 False 。 * <p> * 示例 1: * <p> * 输入:target = [1,2,3,4], arr = [2,4,1,3] * 输出:true * 解释:你可以按原创 2021-04-22 15:56:24 · 59 阅读 · 0 评论 -
344. 反转字符串
/** * 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 * <p> * 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 * <p> * 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 * <p> * * <p> * 示例 1: * <p> * 输入:["h","e","l","l","o"] * 输出:原创 2021-04-22 15:28:51 · 77 阅读 · 0 评论 -
1748. 唯一元素的和
/** * 给你一个整数数组 nums 。数组中唯一元素是那些只出现 恰好一次 的元素。 * <p> * 请你返回 nums 中唯一元素的 和 。 * <p> * * <p> * 示例 1: * <p> * 输入:nums = [1,2,3,2] * 输出:4 * 解释:唯一元素为 [1,3] ,和为 4 。 * 示例 2: * <p> * 输入:nums = [1,1,1,1,1] * 输出:0 * 解释:没有原创 2021-04-22 15:17:02 · 55 阅读 · 0 评论 -
1323. 6 和 9 组成的最大数字
/** * 给你一个仅由数字 6 和 9 组成的正整数 num。 * <p> * 你最多只能翻转一位数字,将 6 变成 9,或者把 9 变成 6 。 * <p> * 请返回你可以得到的最大数字。 * <p> * * <p> * 示例 1: * <p> * 输入:num = 9669 * 输出:9969 * 解释: * 改变第一位数字可以得到 6669 。 * 改变第二位数字可以得到 9969 。 * 改变第三位数原创 2021-04-22 11:41:43 · 52 阅读 · 0 评论 -
1351. 统计有序矩阵中的负数
/** * 给你一个 m * n 的矩阵 grid,矩阵中的元素无论是按行还是按列,都以非递增顺序排列。 * <p> * 请你统计并返回 grid 中 负数 的数目。 * <p> * <p> * 示例 1: * <p> * 输入:grid = [[4,3,2,-1],[3,2,1,-1],[1,1,-1,-2],[-1,-1,-2,-3]] * 输出:8 * 解释:矩阵中共有 8 个负数。 * 示例 2: * <p> *原创 2021-04-22 11:16:49 · 70 阅读 · 0 评论 -
1816. 截断句子
/** * 句子 是一个单词列表,列表中的单词之间用单个空格隔开,且不存在前导或尾随空格。每个单词仅由大小写英文字母组成(不含标点符号)。 * <p> * 例如,"Hello World"、"HELLO" 和 "hello world hello world" 都是句子。 * 给你一个句子 s 和一个整数 k ,请你将 s 截断 ,使截断后的句子仅含 前 k 个单词。返回 截断 s 后得到的句子。 * <p> *原创 2021-04-22 10:39:17 · 132 阅读 · 0 评论 -
1464. 数组中两元素的最大乘积
/** * 给你一个整数数组 nums,请你选择数组的两个不同下标 i 和 j,使 (nums[i]-1)*(nums[j]-1) 取得最大值。 * <p> * 请你计算并返回该式的最大值。 * <p> * * <p> * 示例 1: * <p> * 输入:nums = [3,4,5,2] * 输出:12 * 解释:如果选择下标 i=1 和 j=2(下标从 0 开始),则可以获得最大值,(nums[1]-1)*(nums[2]-1)原创 2021-04-22 10:34:16 · 57 阅读 · 0 评论 -
561. 数组拆分 I
import java.util.Arrays;/** * 给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。 * <p> * 返回该 最大总和 。 * <p> * * <p> * 示例 1: * <p> * 输入:nums = [1,4,3,2] * 输出:4 * 解释:原创 2021-04-22 10:27:57 · 48 阅读 · 0 评论 -
1299. 将每个元素替换为右侧最大元素
/** * 给你一个数组 arr ,请你将每个元素用它右边最大的元素替换,如果是最后一个元素,用 -1 替换。 * <p> * 完成所有替换操作后,请你返回这个数组。 * <p> * * <p> * 示例 1: * <p> * 输入:arr = [17,18,5,4,6,1] * 输出:[18,6,6,6,1,-1] * 解释: * - 下标 0 的元素 --> 右侧最大元素是下标 1 的元素 (18) * - 下标 1 的原创 2021-04-22 09:40:52 · 46 阅读 · 0 评论 -
1704. 判断字符串的两半是否相似
import java.util.ArrayList;import java.util.Arrays;/** * 给你一个偶数长度的字符串 s 。将其拆分成长度相同的两半,前一半为 a ,后一半为 b 。 * <p> * 两个字符串 相似 的前提是它们都含有相同数目的元音('a','e','i','o','u','A','E','I','O','U')。注意,s 可能同时含有大写和小写字母。 * <p> * 如果 a 和 b 相似,返回 true ;否则,返回 fal原创 2021-04-21 10:14:31 · 73 阅读 · 0 评论 -
1221. 分割平衡字符串
/** * 在一个 平衡字符串 中,'L' 和 'R' 字符的数量是相同的。 * <p> * 给你一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串。 * <p> * 注意:分割得到的每个字符串都必须是平衡字符串。 * <p> * 返回可以通过分割得到的平衡字符串的 最大数量 。 * <p> * * <p> * 示例 1: * 输入:s = "RLRRLLRLRL" * 输出:4 * 解释:s 可以分割为 "RL原创 2021-04-21 09:56:01 · 53 阅读 · 0 评论 -
1732. 找到最高海拔
/** * 有一个自行车手打算进行一场公路骑行,这条路线总共由 n + 1 个不同海拔的点组成。自行车手从海拔为 0 的点 0 开始骑行。 * <p> * 给你一个长度为 n 的整数数组 gain ,其中 gain[i] 是点 i 和点 i + 1 的 净海拔高度差(0 <= i < n)。请你返回 最高点的海拔 。 * <p> * * <p> * 示例 1: * 输入:gain = [-5,1,5,0,-7] * 输出:1 * 解释:原创 2021-04-21 09:38:54 · 67 阅读 · 0 评论 -
1688. 比赛中的配对次数
/** * 给你一个整数 n ,表示比赛中的队伍数。比赛遵循一种独特的赛制: * <p> * 如果当前队伍数是 偶数 ,那么每支队伍都会与另一支队伍配对。总共进行 n / 2 场比赛,且产生 n / 2 支队伍进入下一轮。 * 如果当前队伍数为 奇数 ,那么将会随机轮空并晋级一支队伍,其余的队伍配对。总共进行 (n - 1) / 2 场比赛,且产生 (n - 1) / 2 + 1 支队伍进入下一轮。 * 返回在比赛中进行的配对次数,直到决出获胜队伍为止。 * <p> *原创 2021-04-21 09:28:56 · 35 阅读 · 0 评论 -
1812. 判断国际象棋棋盘中一个格子的颜色
/** * 给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。 * <p> * <p> * 如果所给格子的颜色是白色,请你返回 true,如果是黑色,请返回 false 。 * <p> * 给定坐标一定代表国际象棋棋盘上一个存在的格子。坐标第一个字符是字母,第二个字符是数字。 * <p> * * <p> * 示例 1: * <p> * 输入:c原创 2021-04-20 14:04:05 · 206 阅读 · 0 评论 -
1572. 矩阵对角线元素的和
/** * 给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。 * <p> * 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 * <p> * 示例 1: * <p> * 输入:mat = * [[1,2,3], * [4,5,6], * [7,8,9]] * 输出:25 * 解释:对角线的和为:1 + 5 + 9 + 3 + 7 = 25 * 请注意,元素 mat[1][1] = 5 只会被计算一次。 * <原创 2021-04-20 13:55:30 · 228 阅读 · 0 评论 -
1290. 二进制链表转整数
/** * 给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。 * <p> * 请你返回该链表所表示数字的 十进制值 * <p> * <p> * 输入:head = [1,0,1] * 输出:5 * 解释:二进制数 (101) 转化为十进制数 (5) * 示例 2: * <p> * 输入:head = [0] * 输出:0 * 示例 3: * <p> *原创 2021-04-20 11:57:25 · 73 阅读 · 0 评论 -
1827. 最少操作使数组递增
/** * 给你一个整数数组 nums (下标从 0 开始)。每一次操作中,你可以选择数组中一个元素,并将它增加 1 。 * <p> * 比方说,如果 nums = [1,2,3] ,你可以选择增加 nums[1] 得到 nums = [1,3,3] 。 * 请你返回使 nums 严格递增 的 最少 操作次数。 * <p> * 我们称数组 nums 是 严格递增的 ,当它满足对于所有的 0 <= i < nums.length - 1 都有 nums[i] &原创 2021-04-20 11:41:51 · 429 阅读 · 0 评论 -
1662. 检查两个字符串数组是否相等
/** * 给你两个字符串数组 word1 和 word2 。如果两个数组表示的字符串相同,返回 true ;否则,返回 false 。 * <p> * 数组表示的字符串 是由数组中的所有元素 按顺序 连接形成的字符串。 * <p> * * <p> * 示例 1: * <p> * 输入:word1 = ["ab", "c"], word2 = ["a", "bc"] * 输出:true * 解释: * word1 表示的字符串为 "原创 2021-04-20 11:26:25 · 111 阅读 · 0 评论 -
1342. 将数字变成 0 的操作次数
/** * 给你一个非负整数 num ,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。 * <p> * * <p> * 示例 1: * <p> * 输入:num = 14 * 输出:6 * 解释: * 步骤 1) 14 是偶数,除以 2 得到 7 。 * 步骤 2) 7 是奇数,减 1 得到 6 。 * 步骤 3) 6 是偶数,除以 2 得到 3 。 * 步骤 4) 3 是奇数,减 1 得到原创 2021-04-20 10:59:27 · 51 阅读 · 0 评论 -
1684. 统计一致字符串的数目
/** * 给你一个由不同字符组成的字符串 allowed 和一个字符串数组 words 。 * <p> * 如果一个字符串的每一个字符都在 allowed 中,就称这个字符串是 一致字符串 。 * <p> * 请你返回 words 数组中 一致字符串 的数目。 * <p> * 输入:allowed = "ab", words = ["ad","bd","aaab","baa","badab"] * 输出:2 * 解释:字符串 "aaab" 和 "baa原创 2021-04-20 10:48:40 · 58 阅读 · 0 评论 -
1313. 解压缩编码列表
import java.util.ArrayList;/** * 给你一个以行程长度编码压缩的整数列表 nums 。 * <p> * 考虑每对相邻的两个元素 [freq, val] = [nums[2*i], nums[2*i+1]] (其中 i >= 0 ), * 每一对都表示解压后子列表中有 freq 个值为 val 的元素,你需要从左到右连接所有子列表以生成解压后的列表。 * <p> * 请你返回解压后的列表。 * <p> * * &原创 2021-04-20 10:05:51 · 106 阅读 · 0 评论 -
1365. 有多少小于当前数字的数字
/** * 给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。 * <p> * 换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] < nums[i] 。 * <p> * 以数组形式返回答案。 * <p> * <p> * <p> * 示例 1: * <p> * 输入:nums = [8,1,2,2,原创 2021-04-20 09:48:55 · 52 阅读 · 0 评论 -
1281. 整数的各位积和之差
/** * 给你一个整数 n,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。 * <p> * * <p> * 示例 1: * <p> * 输入:n = 234 * 输出:15 * 解释: * 各位数之积 = 2 * 3 * 4 = 24 * 各位数之和 = 2 + 3 + 4 = 9 * 结果 = 24 - 9 = 15 * 示例 2: * <p> * 输入:n = 4421 * 输出:21 * 解释:原创 2021-04-20 09:36:51 · 101 阅读 · 0 评论 -
LCP 06. 拿硬币
/** * 桌上有 n 堆力扣币,每堆的数量保存在数组 coins 中。我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有力扣币的最少次数。 * <p> * 示例 1: * <p> * 输入:[4,2,1] * <p> * 输出:4 * <p> * 解释:第一堆力扣币最少需要拿 2 次,第二堆最少需要拿 1 次,第三堆最少需要拿 1 次,总共 4 次即可拿完。 * <p> * 示例 2: * <p>原创 2021-04-19 13:54:42 · 48 阅读 · 0 评论 -
1108. IP 地址无效化
/** * 给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本。 * <p> * 所谓无效化 IP 地址,其实就是用 "[.]" 代替了每个 "."。 * <p> * * <p> * 示例 1: * <p> * 输入:address = "1.1.1.1" * 输出:"1[.]1[.]1[.]1" * 示例 2: * <p> * 输入:address = "255.100.50.0" *原创 2021-04-19 13:48:08 · 34 阅读 · 0 评论 -
1486. 数组异或操作
/** * 给你两个整数,n 和 start 。 * <p> * 数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == nums.length 。 * <p> * 请返回 nums 中所有元素按位异或(XOR)后得到的结果。 * <p> * 示例 1: * <p> * 输入:n = 5, start = 0 * 输出:8 * 解释:数组 nums 为 [0, 2, 4, 6, 8],其中 (.原创 2021-04-19 13:37:42 · 52 阅读 · 0 评论 -
LCP 01. 猜数字
/** * 小A 和 小B 在玩猜数字。小B 每次从 1, 2, 3 中随机选择一个,小A 每次也从 1, 2, 3 中选择一个猜。他们一共进行三次这个游戏,请返回 小A 猜对了几次? * <p> * 输入的guess数组为 小A 每次的猜测,answer数组为 小B 每次的选择。guess和answer的长度都等于3。 */class Solution { public int game(int[] guess, int[] answer) { int ans原创 2021-04-19 11:47:45 · 68 阅读 · 0 评论 -
1431. 拥有最多糖果的孩子
import java.util.ArrayList;import java.util.List;/** * 给你一个数组 candies 和一个整数 extraCandies ,其中 candies[i] 代表第 i 个孩子拥有的糖果数目。 * <p> * 对每一个孩子,检查是否存在一种方案,将额外的 extraCandies 个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖果数目。 * <p> * * <p>原创 2021-04-19 11:41:50 · 55 阅读 · 0 评论 -
1512. 好数对的数目
/** * 给你一个整数数组 nums 。 * <p> * 如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。 * <p> * 返回好数对的数目。 * <p> * 示例 1: * <p> * 输入:nums = [1,2,3,1,1,3] * 输出:4 * 解释:有 4 组好数对,分别是 (0,3), (0,4), (3,4), (2,5) ,下标从 0 开始 *原创 2021-04-19 11:26:29 · 67 阅读 · 0 评论 -
1672. 最富有客户的资产总量
/** * @author * @data2021/4/199:45 * * 给你一个 m x n 的整数网格 accounts ,其中 accounts[i][j] 是第 i * 位客户在第 j 家银行托管的资产数量。返回最富有客户所拥有的 资产总量 。 * <p> * 客户的 资产总量 就是他们在各家银行托管的资产数量之和。最富有客户就是 资产总量 最大的客户。 * <p> * 示例 1: * <p> * 输入:accou原创 2021-04-19 11:06:19 · 68 阅读 · 0 评论 -
771. 宝石与石头
/** * @author * @data2021/4/199:45 * 给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。 * <p> * J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。 * <p> * 示例 1: * 输入: J = "aA", S = "aAAbbbb" * 输出: 3 * <p&原创 2021-04-19 10:54:17 · 61 阅读 · 0 评论 -
1480. 一维数组的动态和
/** * @author * @data2021/4/199:45 给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。 * <p> * 请返回 nums 的动态和。 * <p> * 示例 1: * <p> * 输入:nums = [1,2,3,4] * 输出:[1,3,6,10] * 解释:动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4] 。 * 示例原创 2021-04-19 10:36:12 · 90 阅读 · 0 评论