移除无效的括号
力扣 1249. 移除无效的括号题目说明给你一个由 ‘(‘、’)’ 和小写字母组成的字符串 s。
你需要从字符串中删除最少数目的 ‘(‘ 或者 ‘)’ (可以删除任意位置的括号),使得剩下的「括号字符串」有效。
请返回任意一个合法字符串。
有效「括号字符串」应当符合以下 任意一条 要求:
空字符串或只包含小写字母的字符串
可以被写作 AB(A 连接 B)的字符串,其中 A 和 B 都是有效「括号字符串」
可以被写作 (A) 的字符串,其中 A 是一个有效的「括号字符串」
提示:
1 <= s.length <= 10^5
s[i] 可能是 '('、')' 或英文小写字母
示例示例 1:
123输入:s = "lee(t(c)o)de)"输出:"lee(t(c)o)de"解释:"lee(t(co)de)" , "lee(t(c)ode)" 也是一个可行答案。
示例 2:
12输入:s = "a)b(c)d"输出:"ab(c)d ...
两两交换链表中的节点
力扣 24. 两两交换链表中的节点题目说明给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
提示:
链表中节点的数目在范围 [0, 100] 内
0 <= Node.val <= 100
示例示例 1:
12输入:head = [1,2,3,4]输出:[2,1,4,3]
示例 2:
12输入:head = []输出:[]
示例 3:
12输入:head = [1]输出:[1]
笔者理解此题是一道链表算法问题,在力扣题库中被定义为中等题。
解法当笔者阅读完此题后,我们可以用一个头节点,然后将节点两两交换即可,让我们来看看具体如何实现的吧。
实现12345678910111213141516171819202122232425262728293031323334353637383940414243/** * Definition for singly-linked list. * public class ListNode { * int val; * List ...
二叉树中的最大路径和
力扣 124. 二叉树中的最大路径和题目说明路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。
路径和 是路径中各节点值的总和。
给你一个二叉树的根节点 root ,返回其 最大路径和 。
提示:
树中节点数目范围是 [1, 3 * 10^4]
-1000 <= Node.val <= 1000
示例示例 1:
123输入:root = [1,2,3]输出:6解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6
示例 2:
123输入:root = [-10,9,20,null,null,15,7]输出:42解释:最优路径是 15 -> 20 -> 7 ,路径和为 15 + 20 + 7 = 42
笔者理解此题是一道二叉树算法问题,在力扣题库中被定义为困难题。
解法当笔者阅读完此题后,发现我们可以递归尝试链接路径,并将分支总值较大的分支传回给上级,让我们来看看具体如何实现的吧。
实现1 ...
环形链表II
力扣 142. 环形链表 II题目说明给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。
为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。
说明:不允许修改给定的链表。
提示:
链表中节点的数目范围在范围 [0, 10^4] 内
-10^5 <= Node.val <= 10^5
pos 的值为 -1 或者链表中的一个有效索引
示例示例 1:
123输入:head = [3,2,0,-4], pos = 1输出:返回索引为 1 的链表节点解释:链表中有一个环,其尾部连接到第二个节点。
示例 2:
123输入:head = [1,2], pos = 0输出:返回索引为 0 的链表节点解释:链表中有一个环,其尾部连接到第一个节点。
示例 3:
123输入:head = [1], pos = -1输出:返回 null解释:链表中没有环。
笔者理解此题是一道链表算法问题,在力 ...
初识计算机网络
引入 随着时代的发展,计算机已经对我们社会和生活产生了深远的影响。计算机相关技术也被应用于各种各样的领域,有些人因此提出了“20世纪最伟大的发明就是计算机”。在笔者看来,到21世纪甚至以后的世界,计算机也会产生巨大的作用。
前段时间的华为的鸿蒙系统比较火,而鸿蒙系统就是打通手机、电脑、平板、电视、汽车和智能穿戴等多种设备的统一操作系统。
“万物互联时代,没有人会是一座孤岛。无论经历多大的困难,华为为全球消费者提供更好的用户体验、更好的产品的决心不会改变。我们希望与更多合作伙伴、开发者共同繁荣鸿蒙生态,为全球消费者提供更好的体验、更好的产品、更好的服务。”华为常务董事、消费者业务CEO余承东在发布会接近尾声时上台致辞说了这样一段话。
上图就是新一代物联网应用场景图,想必读者很直观的可以看到万物互联时代带来的便利和美好,而今天我们就来聊聊最开始的“互联”——计算机互联。
计算机网络 最开始的时候,计算机总是以单机模式被广泛使用。但是随着计算机技术的不断发展,人们就不满足于只能单机工作的计算机了,可能是一段迫切分享的信息,可能是一件需要协调的工 ...
字符串相乘
力扣 43. 字符串相乘题目说明给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。
提示:
num1 和 num2 的长度小于110。
num1 和 num2 只包含数字 0-9。
num1 和 num2 均不以零开头,除非是数字 0 本身。
不能使用任何标准库的大数类型(比如 BigInteger)或直接将输入转换为整数来处理。
示例示例 1:
12输入: num1 = "2", num2 = "3"输出: "6"
示例 2:
12输入: num1 = "123", num2 = "456"输出: "56088"
笔者理解此题是一道字符串算法问题,在力扣题库中被定义为中等题。
解法当笔者阅读完此题后,我们可以直接模拟数的运算过程,注意额外的进位即可,让我们来看看具体如何实现的吧。
实现1234567891011121314151617181920212223242526272 ...
递增的三元子序列
力扣 334. 递增的三元子序列题目说明给你一个整数数组 nums ,判断这个数组中是否存在长度为 3 的递增子序列。
如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true ;否则,返回 false 。
提示:
1 <= nums.length <= 10^5
-2^31 <= nums[i] <= 2^31 - 1
示例示例 1:
123输入:nums = [1,2,3,4,5]输出:true解释:任何 i < j < k 的三元组都满足题意
示例 2:
123输入:nums = [5,4,3,2,1]输出:false解释:不存在满足题意的三元组
示例 3:
123输入:nums = [2,1,5,0,4,6]输出:true解释:三元组 (3, 4, 5) 满足题意,因为 nums[3] == 0 < nums[4] == 4 < nums[5] == 6
笔者理解此题是一道字符串算法问题,在力 ...
划分字母区间
力扣 763. 划分字母区间题目说明字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。
提示:
S的长度在[1, 500]之间。
S只包含小写字母 'a' 到 'z' 。
示例示例 1:
123456输入:S = "ababcbacadefegdehijhklij"输出:[9,7,8]解释:划分结果为 "ababcbaca", "defegde", "hijhklij"。每个字母最多出现在一个片段中。像 "ababcbacadefegde", "hijhklij" 的划分是错误的,因为划分的片段数较少。
笔者理解此题是一道字符串算法问题,在力扣题库中被定义为中等题。
解法当笔者阅读完此题后,我们可以记录每个字母最后出现的位置,然后通过标记的方式来划分字符串,让我们来看看具体如何实现的吧。
实现12345678910111213141516 ...
最长回文串
力扣 409. 最长回文串题目说明给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。
在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。
注意: 假设字符串的长度不会超过 1010。
示例示例 1:
12345678输入:"abccccdd"输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。
笔者理解此题是一道字符串算法问题,在力扣题库中被定义为简单题。
解法当笔者阅读完此题后,因为我们可以自由组合,所以我们只需要偶数次出现的字符和至多一个单个字符即可,让我们来看看具体如何实现的吧。
实现1234567891011121314151617181920212223242526class Solution { /* * 字母数组 */ public int longestPalindrome(String s) { int result = 0; int[] letters = ne ...
除自身以外数组的乘积
力扣 238. 除自身以外数组的乘积题目说明给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。
提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。
说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。
进阶:你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数组不被视为额外空间。)
示例示例 1:
12输入: [1,2,3,4]输出: [24,12,8,6]
笔者理解此题是一道数组算法问题,在力扣题库中被定义为中等题。
解法当笔者阅读完此题后,*因为一个 数组内除当前元素其他元素的乘积等于 其左累乘 * 右累乘,我们可以采用左右前缀累乘的方式*,让我们来看看具体如何实现的吧。
实现123456789101112131415161718192021222324252627class Solution { /** * 数组 ...








