自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode——697. 数组的度

题目描述:给定一个非空且只包含非负数的整数数组 nums,数组的度的定义是指数组里任一元素出现频数的最大值。你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度。提示:nums.length 在1到 50,000 区间范围内。nums[i] 是一个在 0 到 49,999 范围内的整数。示例 1:输入:[1, 2, 2, 3, 1]输出:2解释:输入数组的度是2,因为元素1和2的出现频数最大,均为2.连续子数组里面拥有相同度的有如下所示:[1,

2021-03-05 13:57:15 16

原创 字符串中的单词数

题目描述:统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。请注意,你可以假定字符串里不包括任何不可打印的字符。示例:输入: “Hello, my name is John”输出: 5解释: 这里的单词是指连续的不是空格的字符,所以 “Hello,” 算作 1 个单词。代码如下:逗号算做字母class Solution { public static int countSegments(String str) { String s = str.tri

2021-03-02 13:39:25 15

原创 Java中map.getOrDefault()方法的使用

Map.getOrDefault(Object key, V defaultValue);如果在Map中存在key,则返回key所对应的的value。如果在Map中不存在key,则返回默认值。例如:map.put(num, map.getOrDefault(num, 0) + 1);表示:value默认从1开始,每次操作后num对应的value值加1可以用来统计数字出现的次数!面试题 17.10. 主要元素数组中占比超过一半的元素称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,

2021-01-15 16:43:32 82

原创 HashSet和HashMap的遍历形式

代码如下:public class Solution { public static void main(String[] args) { HashMap<Integer, Integer> map = new HashMap<>(); map.put(1, 10); map.put(2, 20); map.put(3, 30); map.put(4, 40); //第一种key

2021-01-14 17:18:15 50

原创 LeetCode——354. 俄罗斯套娃信封问题

题目描述:给定一些标记了宽度和高度的信封,宽度和高度以整数对形式 (w, h) 出现。当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。请计算最多能有多少个信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。说明:不允许旋转信封。示例:输入: envelopes = [[5,4],[6,4],[6,7],[2,3]]输出: 3解释: 最多信封的个数为 3, 组合为: [2,3] => [5,4] => [6,7]

2020-12-25 11:29:30 38

原创 异或总结,位运算

异或性质:相同为0,不同为11.由于0^0=0 0^1=1 所以,0^任何数 = 任何数。2.由于1^0=1 1^1 =0所以,1^任何数 = 任何数取反。3.任何数^任何数 = 0。4.用于将特定的位反转,如对10100001的第2位和第3位翻转,可以将数与00000110进行按位异或运算。5.通过按位异或运算,可以实现两个值的交换,而不必使用临时变量。6.异或运算的特点:a两次异或同一个数b(a=abb)仍然为原值a。7.异或是可交换的:a^b = b^a。例1:不使用临时变量交换a和b

2020-12-10 11:35:53 64

原创 二和N叉树的层序遍历(使用队列)

给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7]返回其层次遍历结果:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(

2020-11-24 11:01:18 101

原创 链表入门代码

看B站郝斌老师视频,自己动手码的。#include<stdio.h>#include<malloc.h>#include<stdlib.h>#include<string.h>typedef struct student {int data;struct student* pNext;}NODE, * PNODE;PNODE create_list();void reverse_list(PNODE);int is_empty(PNODE

2020-10-31 16:08:56 934

原创 LeetCode——1455. 检查单词是否为句中其他单词的前缀

题目描述:给你一个字符串 sentence 作为句子并指定检索词为 searchWord ,其中句子由若干用 单个空格 分隔的单词组成。请你检查检索词 searchWord 是否为句子 sentence 中任意单词的前缀。如果 searchWord 是某一个单词的前缀,则返回句子 sentence 中该单词所对应的下标(下标从 1 开始)。如果 searchWord 是多个单词的前缀,则返回匹配的第一个单词的下标(最小下标)。如果 searchWord 不是任何单词的前缀,则返回 -1 。字

2021-03-07 20:03:47 4

原创 LeetCode——面试题 01.06. 字符串压缩

题目描述:字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。提示:字符串长度在[0, 50000]范围内。示例1:输入:“aabcccccaaa”输出:“a2b1c5a3”示例2:输入:“abbccd”输出:“abbccd”解释:“abbccd"压缩后为"a1b2c2d1”,比原字符串长度更长。

2021-03-07 19:09:22 6

原创 LeetCode——1317. 将整数转换为两个无零整数的和

题目描述:「无零整数」是十进制表示中 不含任何 0 的正整数。给你一个整数 n,请你返回一个 由两个整数组成的列表 [A, B],满足:A 和 B 都是无零整数A + B = n题目数据保证至少有一个有效的解决方案。如果存在多个有效解决方案,你可以返回其中任意一个。提示:2 <= n <= 10^4示例 1:输入:n = 2输出:[1,1]解释:A = 1, B = 1. A + B = n 并且 A 和 B 的十进制表示形式都不包含任何 0 。示例 2:输入

2021-03-07 18:19:18 12

原创 计算连续字符的个数

题目描述:给你一个字符串 s ,字符串的「能量」定义为:只包含一种字符的最长非空子字符串的长度。请你返回字符串的能量。提示:1 <= s.length <= 500s 只包含小写英文字母。示例 1:输入:s = “leetcode”输出:2解释:子字符串 “ee” 长度为 2 ,只包含字符 ‘e’ 。示例 2:输入:s = “abbcccddddeeeeedcba”输出:5解释:子字符串 “eeeee” 长度为 5 ,只包含字符 ‘e’ 。示例 3:输入:s =

2021-03-07 17:03:59 6

原创 LeetCode——696. 计数二进制子串

题目描述:给定一个字符串 s,计算具有相同数量 0 和 1 的非空(连续)子字符串的数量,并且这些子字符串中的所有 0 和所有 1 都是连续的。重复出现的子串要计算它们出现的次数。提示:s.length 在1到50,000之间。s 只包含“0”或“1”字符。示例 1 :输入: “00110011”输出: 6解释: 有6个子串具有相同数量的连续1和0:“0011”,“01”,“1100”,“10”,“0011” 和 “01”。请注意,一些重复出现的子串要计算它们出现的次数。另外,“0

2021-03-07 15:41:42 4

原创 LeetCode——131. 分割回文串

题目描述:给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案示例:输入: “aab”输出:[ ["aa","b"], ["a","a","b"]]代码如下:class Solution { public List<List<String>> partition(String s) { int len = s.length(); List<List<String&

2021-03-07 13:06:12 4

原创 LeetCode——组合

题目描述:给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]代码如下:class Solution { public static List<List<Integer>> combine(int n, int k) { List<List<Integer

2021-03-07 10:43:53 5

原创 LeetCode——子集

题目描述:给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。提示:1 <= nums.length <= 10-10 <= nums[i] <= 10-10 <= nums[i] <= 10nums 中的所有元素 互不相同示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]

2021-03-07 10:12:14 6

原创 LeetCode——942. 增减字符串匹配

题目描述:给定只含 “I”(增大)或 “D”(减小)的字符串 S ,令 N = S.length。返回 [0, 1, …, N] 的任意排列 A 使得对于所有 i = 0, …, N-1,都有:如果 S[i] == “I”,那么 A[i] < A[i+1]如果 S[i] == “D”,那么 A[i] > A[i+1]提示:1 <= S.length <= 10000S 只包含字符 “I” 或 “D”。示例 1:输入:“IDID”输出:[0,4,1,3,2]

2021-03-06 15:57:28 6

原创 LeetCode——1309. 解码字母到整数映射

题目描述:给你一个字符串 s,它由数字(‘0’ - ‘9’)和 ‘#’ 组成。我们希望按下述规则将 s 映射为一些小写英文字符:字符(‘a’ - ‘i’)分别用(‘1’ - ‘9’)表示。字符(‘j’ - ‘z’)分别用(‘10#’ - ‘26#’)表示。返回映射之后形成的新字符串。题目数据保证映射始终唯一。提示:1 <= s.length <= 1000s[i] 只包含数字(‘0’-‘9’)和 ‘#’ 字符。s 是映射始终存在的有效字符串。示例 1:输入:s =

2021-03-06 15:33:08 9

原创 LeetCode——944. 删列造序

题目描述:给你由 n 个小写字母字符串组成的数组 strs,其中每个字符串长度相等。这些字符串可以每个一行,排成一个网格。例如,strs = [“abc”, “bce”, “cae”] 可以排列为:abcbcecae你需要找出并删除 不是按字典序升序排列的列。在上面的例子(下标从 0 开始)中,列 0(‘a’, ‘b’, ‘c’)和列 2(‘c’, ‘e’, ‘e’)都是按升序排列的,而列 1(‘b’, ‘c’, ‘a’)不是,所以要删除列 1 。返回你需要删除的列数。提示:n == strs

2021-03-06 15:14:20 9

原创 LeetCode——739. 每日温度

题目描述:请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100] 范围内的整数。代码如下:(单调栈)class S

2021-03-06 11:13:06 9

原创 LeetCode——860. 柠檬水找零

题目描述:在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。提示:0 <= bills.length <= 10000bills[i] 不是 5 就是 10 或是 20示例 1:

2021-03-04 10:30:37 6

原创 LeetCode——1200. 最小绝对差

题目描述:给你个整数数组 arr,其中每个元素都 不相同。请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回。提示:2 <= arr.length <= 10^5-10^6 <= arr[i] <= 10^6示例 1:输入:arr = [4,2,1,3]输出:[[1,2],[2,3],[3,4]]示例 2:输入:arr = [1,3,6,10,15]输出:[[1,3]]示例 3:输入:arr = [3,8,-10,23,19,-4,-14,27]

2021-03-03 15:17:36 8

原创 LeetCode——1758. 生成交替二进制字符串的最少操作数

题目描述:给你一个仅由字符 ‘0’ 和 ‘1’ 组成的字符串 s 。一步操作中,你可以将任一 ‘0’ 变成 ‘1’ ,或者将 ‘1’ 变成 ‘0’ 。交替字符串 定义为:如果字符串中不存在相邻两个字符相等的情况,那么该字符串就是交替字符串。例如,字符串 “010” 是交替字符串,而字符串 “0100” 不是。返回使 s 变成 交替字符串 所需的 最少 操作数。提示:1 <= s.length <= 104s[i] 是 ‘0’ 或 ‘1’示例 1:输入:s = “0100”输

2021-03-03 14:26:38 20 5

原创 LeetCode——1710. 卡车上的最大单元数

题目描述:请你将一些箱子装在 一辆卡车 上。给你一个二维数组 boxTypes ,其中 boxTypes[i] = [numberOfBoxesi, numberOfUnitsPerBoxi] :numberOfBoxesi 是类型 i 的箱子的数numberOfUnitsPerBoxi 是类型 i 每个箱子可以装载的单元数量。整数 truckSize 表示卡车上可以装载 箱子 的 最大数量 。只要箱子数量不超过 truckSize ,你就可以选择任意箱子装到卡车上。返回卡车可以装载 单元 的

2021-03-03 14:05:04 8

原创 LeetCode——1217. 玩筹码

题目描述:数轴上放置了一些筹码,每个筹码的位置存在数组 chips 当中。你可以对 任何筹码 执行下面两种操作之一(不限操作次数,0 次也可以):将第 i 个筹码向左或者右移动 2 个单位,代价为 0。将第 i 个筹码向左或者右移动 1 个单位,代价为 1。最开始的时候,同一位置上也可能放着两个或者更多的筹码。返回将所有筹码移动到同一位置(任意位置)上所需要的最小代价。提示:1 <= chips.length <= 1001 <= chips[i] <= 10^9

2021-03-03 10:58:26 11

原创 LeetCode——599. 两个列表的最小索引总和

题目描述:假设Andy和Doris想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。 如果答案不止一个,则输出所有答案并且不考虑顺序。 你可以假设总是存在一个答案。提示:两个列表的长度范围都在 [1, 1000]内。两个列表中的字符串的长度将在[1,30]的范围内。下标从0开始,到列表的长度减1。两个列表都没有重复的元素。示例 1:输入:[“Shogun”, “Tapioca Express

2021-03-03 09:42:47 3

原创 LeetCode——453. 最小操作次数使数组元素相等

题目描述:给定一个长度为 n 的 非空 整数数组,每次操作将会使 n - 1 个元素增加 1。找出让数组所有元素相等的最小操作次数。示例:输入:[1,2,3]输出:3解释:只需要3次操作(注意每次操作会增加两个元素的值):[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]代码如下:方法一:暴力(超时)class Solution { public int minMoves(int[] nums) { int

2021-03-03 09:38:53 2

原创 LeetCode——1033. 移动石子直到连续

题目描述:三枚石子放置在数轴上,位置分别为 a,b,c。每一回合,你可以从两端之一拿起一枚石子(位置最大或最小),并将其放入两端之间的任一空闲位置。形式上,假设这三枚石子当前分别位于位置 x, y, z 且 x < y < z。那么就可以从位置 x 或者是位置 z 拿起一枚石子,并将该石子移动到某一整数位置 k 处,其中 x < k < z 且 k != y。当你无法进行任何移动时,即,这些石子的位置连续时,游戏结束。要使游戏结束,你可以执行的最小和最大移动次数分别是多少?

2021-03-02 18:20:12 4

原创 LeetCode——503. 下一个更大元素 II

题目描述:给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。注意: 输入数组的长度不会超过 10000。示例 1:输入: [1,2,1]输出: [2,-1,2]解释:第一个 1 的下一个更大的数是 2;数字 2 找不到下一个更大的数;第二个 1 的下一个最大的数需要循环搜索,结果也是 2。

2021-03-02 15:54:35 9

原创 LeetCode——496. 下一个更大元素 I

题目描述:给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。请你找出 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 。提示:1 <= nums1.length <= nums2.length <= 10000 <= nums1[i], nums2[i] <= 1

2021-03-02 15:35:03 8

原创 LeetCode——806. 写字符串需要的行数

题目描述:我们要把给定的字符串 S 从左到右写到每一行上,每一行的最大宽度为100个单位,如果我们在写某个字母的时候会使这行超过了100 个单位,那么我们应该把这个字母写到下一行。我们给定了一个数组 widths ,这个数组 widths[0] 代表 ‘a’ 需要的单位, widths[1] 代表 ‘b’ 需要的单位,…, widths[25] 代表 ‘z’ 需要的单位。现在回答两个问题:至少多少行能放下S,以及最后一行使用的宽度是多少个单位?将你的答案作为长度为2的整数列表返回。提示:字符串 S

2021-03-02 14:13:21 4

原创 LeetCode——1700. 无法吃午餐的学生数量

题目描述:学校的自助午餐提供圆形和方形的三明治,分别用数字 0 和 1 表示。所有学生站在一个队列里,每个学生要么喜欢圆形的要么喜欢方形的。餐厅里三明治的数量与学生的数量相同。所有三明治都放在一个 栈 里,每一轮:如果队列最前面的学生 喜欢 栈顶的三明治,那么会 拿走它 并离开队列。否则,这名学生会 放弃这个三明治 并回到队列的尾部。这个过程会一直持续到队列里所有学生都不喜欢栈顶的三明治为止。给你两个整数数组 students 和 sandwiches ,其中 sandwiches[i] 是栈

2021-03-02 10:42:25 5

原创 LeetCode——面试题 01.04. 回文排列

题目描述:给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。回文串不一定是字典当中的单词。示例1:输入:“tactcoa”输出:true(排列有"tacocat"、“atcocta”,等等)代码如下:class Solution { public boolean canPermutePalindrome(String s) { int len = s.length(); c

2021-03-02 10:04:07 4

原创 LeetCode——2,3,4的幂

题目描述:给定一个整数,编写一个函数来判断它是否是 2 ,3,4的幂次方.示例 1:输入: 1输出: true解释: 2^0 = 1计算2的幂:解题思路若 n = 2^x且 x为自然数(即 n为 2 的幂),则一定满足以下条件:恒有 n & (n - 1) == 0,这是因为:n 二进制最高位为 1,其余所有位为 0;n - 1 二进制最高位为 0,其余所有位为 1;一定满足 n > 0。因此,通过 n > 0 且 n & (n - 1)

2021-03-02 08:59:49 3

原创 LeetCode——938. 二叉搜索树的范围和

题目描述:给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。提示:树中节点数目在范围 [1, 2 * 104] 内1 <= Node.val <= 1051 <= low <= high <= 105所有 Node.val 互不相同示例 1:输入:root = [10,5,15,3,7,null,18], low = 7, high = 15输出:32示例 2:输入:root = [10,5,15,3

2021-03-02 08:37:34 29 3

原创 LeetCode——383. 赎金信

题目描述:给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。如果可以构成,返回 true ;否则返回 false。(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。杂志字符串中的每个字符只能在赎金信字符串中使用一次。)注意:你可以假设两个字符串均只含有小写字母。canConstruct(“a”, “b”) -> falsecanConst

2021-03-02 08:37:17 8

原创 LeetCode——836. 矩形重叠

题目描述:矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。矩形的上下边平行于 x 轴,左右边平行于 y 轴。如果相交的面积为 正 ,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。给出两个矩形 rec1 和 rec2 。如果它们重叠,返回 true;否则,返回 false 。提示:rect1.length == 4rect2.length == 4-10^9 <= rec1[i], r

2021-03-01 20:17:26 22

原创 LeetCode——1122. 数组的相对排序

题目描述:给你两个数组,arr1 和 arr2,arr2 中的元素各不相同,arr2 中的每个元素都出现在 arr1 中,对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。提示:1 <= arr1.length, arr2.length <= 10000 <= arr1[i], arr2[i] <= 1000arr2 中的元素 arr2[i] 各不相同arr2 中

2021-03-01 19:54:19 27

原创 LeetCode——1047. 删除字符串中的所有相邻重复项

题目描述:给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。提示:1 <= S.length <= 20000S 仅由小写英文字母组成。示例:输入:“abbaca”输出:“ca”解释:例如,在 “abbaca” 中,我们可以删除 “bb” 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 “aaca

2021-03-01 17:34:41 5

原创 LeetCode——26. 删除排序数组中的重复项

题目描述:给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5, 并且原

2021-03-01 17:08:41 7

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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