电话号码的字母组合
力扣 17. 电话号码的字母组合题目说明给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
提示:
0 <= digits.length <= 4
digits[i] 是范围 ['2', '9'] 的一个数字。
示例示例 1:
12输入:digits = "23"输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]
示例 2:
12输入:digits = ""输出:[]
示例 3:
12输入:digits = "2"输出:["a","b","c"]
笔者理解此题是一道字 ...
合并两个有序链表
力扣 21. 合并两个有序链表题目说明将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
提示:
两个链表的节点数目范围是 [0, 50]
-100 <= Node.val <= 100
l1 和 l2 均按 非递减顺序 排列
示例示例 1:
12输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]
示例 2:
12输入:l1 = [], l2 = []输出:[]
示例 3:
12输入:l1 = [], l2 = [0]输出:[0]
笔者理解此题是一道链表算法问题,在力扣题库中被定义为简单题。
解法当笔者阅读完此题后,直接合并两链表即可,让我们来看看具体如何实现的吧。
实现123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051/** * Definition for singly-linked list. * public class L ...
环形链表
力扣 141. 环形链表题目说明给定一个链表,判断链表中是否有环。
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。
如果链表中存在环,则返回 true 。 否则,返回 false 。
提示:
链表中节点的数目范围是 [0, 10^4]
-10^5 <= Node.val <= 10^5
pos 为 -1 或者链表中的一个 有效索引 。
示例示例 1:
123输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。
示例 2:
123输入:head = [1,2], pos = 0输出:true解释:链表中有一个环,其尾部连接到第一个节点。
示例 3:
123输入:head = [1], pos = -1输出:false解释:链表中没有环。
笔者理解此 ...
三数之和
力扣 15. 三数之和题目说明给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。
注意:答案中不可以包含重复的三元组。
提示:
0 <= nums.length <= 3000
-10^5 <= nums[i] <= 10^5
示例示例 1:
12输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]
示例 2:
12输入:nums = []输出:[]
示例 3:
12输入:nums = [0]输出:[]
笔者理解此题是一道数组算法问题,在力扣题库中被定义为中等题。
解法当笔者阅读完此题后,首先将数组排序,然后有一层for循环,i从下表0的地方开始,同时定一个下表left 定义在i+1的位置上,定义下表right 在数组结尾的位置上。依然还是在数组中找到 abc 使得a + b +c =0,我们这里相当于 a = nums[i] b = nums[left] c = nums[rig ...
盛最多水的容器
力扣 11. 盛最多水的容器题目说明给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
提示:
n == height.length
2 <= n <= 10^5
0 <= height[i] <= 10^4
示例示例 1:
123输入:[1,8,6,2,5,4,8,3,7]输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。
示例 2:
12输入:height = [1,1]输出:1
示例 3:
12输入:height = [4,3,2,1,4]输出:16
示例 4:
12输入:height = [1,2,1]输出:2
笔者理解此题是一道数组算法问题,在力扣题库中被定义为中等题。
解法当笔者阅读完此题后,一开始两个指针一个指向开头一个指向结尾,此时容器 ...
赎金信
力扣 242. 有效的字母异位词题目说明给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。如果可以构成,返回 true ;否则返回 false。
(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。杂志字符串中的每个字符只能在赎金信字符串中使用一次。)
提示:
你可以假设两个字符串均只含有小写字母。
示例示例 1:
12输入:ransomNote = "a", magazine = "b"输出:false
示例 2:
12输入:ransomNote = "aa", magazine = "ab"输出:false
示例 3:
12输入:ransomNote = "aa", magazine = "aab"输出:true
笔者理解此题是一道字符串算法问题,在力扣题库中被定义为简单题。
解法当笔者阅读完此题 ...
有效的字母异位词
力扣 242. 有效的字母异位词题目说明给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
提示:
1 <= s.length, t.length <= 5 * 10^4
s 和 t 仅包含小写字母
示例示例 1:
12输入: s = "anagram", t = "nagaram"输出: true
示例 2:
12输入: s = "rat", t = "car"输出: false
笔者理解此题是一道字符串算法问题,在力扣题库中被定义为简单题。
解法当笔者阅读完此题后,直接将字符串转化为字符数组然后排序比较,让我们来看看具体如何实现的吧。
实现123456789101112131415class Solution { /* * 数组 */ public boolean isAnagram(String s, String t) ...
有效的数独
力扣 36. 有效的数独题目说明请你判断一个 9x9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。
数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)数独部分空格内已填入了数字,空白格用 ‘.’ 表示。
提示:
一个有效的数独(部分已被填充)不一定是可解的。
只需要根据以上规则,验证已经填入的数字是否有效即可。
示例示例 1:
1234567891011输入:board = [["5","3",".",".","7",".",".",".","."],["6",".",".","1","9","5",".","." ...
两个数组的交集II
力扣 350. 两个数组的交集 II题目说明给定两个数组,编写一个函数来计算它们的交集。
提示:
输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。
我们可以不考虑输出结果的顺序。
示例示例 1:
12输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]
示例 2:
12输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[4,9]
笔者理解此题是一道数组算法问题,在力扣题库中被定义为简单题。
解法当笔者阅读完此题后,直接用哈希表进行统计,简单粗暴,让我们来看看具体如何实现的吧。
实现12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849class Solution { /* * 哈希表 * 数组 */ public int[] intersect(int[] nums1, int[] nums2) { ...
最长回文子串
力扣 5. 最长回文子串题目说明给你一个字符串 s,找到 s 中最长的回文子串。
提示:
1 <= s.length <= 1000
s 仅由数字和英文字母(大写和/或小写)组成
示例示例 1:
123输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。
示例 2:
12输入:s = "cbbd"输出:"bb"
示例 3:
12输入:s = "a"输出:"a"
示例 4:
12输入:s = "ac"输出:"a"
笔者理解此题是一道字符串算法问题,在力扣题库中被定义为中等题。
解法当笔者阅读完此题后,把回文看成中间的部分(类似ccc这样的子串)全是同一字符,左右部分相对称(abcccba)的字符串,让我们来看看具体如何实现的吧。
实现123456789101112131415161718192021222324252627282930313233 ...









