随笔分类 - 算法
摘要:144. 二叉树的前序遍历 LeetCode题目要求 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例 输入:root = [1,null,2,3] 输出:[1,2,3] 解题思路 最重要的要明白什么是二叉树的前序遍历:即从中间节点开始到左节点再到右节点的遍历过程,可简称为【中左右
阅读全文
摘要:239. 滑动窗口最大值 LeetCode题目要求 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 输入:nums = [1,3,-1,-3,5,3,6
阅读全文
摘要:150. 逆波兰表达式求值 LeetCode题目要求 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意: 有效的算符为 '+'、'-'、'*' 和 '/' 。 每个操作数(运算对象)都可以是一个整数或者另一个表达
阅读全文
摘要:1047. 删除字符串中的所有相邻重复项 LeetCode题目要求 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 示例 输入:"abbaca"
阅读全文
摘要:20. 有效的括号 LeetCode题目要求 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。 示例 输入:s = "
阅读全文
摘要:225. 用队列实现栈 LeetCode题目要求 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现 MyStack 类: void push(int x) 将元素 x 压入栈顶。 int pop() 移除并返回栈顶元素
阅读全文
摘要:232. 用栈实现队列 LeetCode题目要求 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类: void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回元素
阅读全文
摘要:151. 反转字符串中的单词 LeetCode题目要求 给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意:输入字符串 s中可能会存在前导空
阅读全文
摘要:剑指 Offer 05. 替换空格 LeetCode题目要求 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 输入:s = "We are happy." 输出:"We%20are%20happy." 解题思路 借助一个额外 StringBuilder 空间,遍历字符数组,比较简
阅读全文
摘要:541. 反转字符串 II LeetCode题目要求 给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。 如果剩余字符少于 k 个,则将剩余字符全部反转。 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符
阅读全文
摘要:344. 反转字符串 LeetCode题目要求 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 示例 输入:s = ["h","e","l","l","o"] 输出
阅读全文
摘要:18. 四数之和 LeetCode题目要求 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复): 0
阅读全文
摘要:383. 赎金信 LeetCode题目要求 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用
阅读全文
摘要:454.四数相加II LeetCode题目要求 给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 <= i, j, k, l < n nums1[i] + nums2[j] + nums3[k]
阅读全文
摘要:1. 两数之和 LeetCode题目要求 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。
阅读全文
摘要:第202题. 快乐数 LeetCode题目要求 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 如果这个过程 结果为 1,那么这个数就是快乐
阅读全文
摘要:349. 两个数组的交集 LeetCode题目要求 给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2] 解题思路 本题借
阅读全文
摘要:242.有效的字母异位词 LeetCode题目要求 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 示例 1: 输入: s = "anagram", t = "nagaram" 输
阅读全文
摘要:142.环形链表II LeetCode题目要求 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接
阅读全文
摘要:面试题 02.07. 链表相交 LeetCode题目要求 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后,链表
阅读全文