随笔分类 -  LeetCode—数据结构

摘要:LeetCode 941 有效的山脉数组 问题描述: 给定一个整数数组 A,如果它是有效的山脉数组就返回 true,否则返回 false。 让我们回顾一下,如果 A 满足下述条件,那么它是一个山脉数组: A.length >= 3 在 0 < i < A.length - 1 条件下,存在 i 使得 阅读全文
posted @ 2020-11-03 19:39 CodeSPA 阅读(73) 评论(0) 推荐(0)
摘要:LeetCode 1207 独一无二的出现次数 问题描述: 给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。 如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。 Map+Set 执行用时:2 ms, 在所有 Java 提交中击败了91.43%的用户 内存消耗: 阅读全文
posted @ 2020-10-28 08:50 CodeSPA 阅读(80) 评论(0) 推荐(0)
摘要:LeetCode 144 二叉树的前序遍历 问题描述 给定一个二叉树,返回它的 前序 遍历。 迭代法 执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户 内存消耗:36.4 MB, 在所有 Java 提交中击败了98.91%的用户 class Solution { public 阅读全文
posted @ 2020-10-27 08:38 CodeSPA 阅读(50) 评论(0) 推荐(0)
摘要:LeetCode 925 长键按入 问题描述 你的朋友正在使用键盘输入他的名字 name。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。 你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。 双指针 两 阅读全文
posted @ 2020-10-21 08:57 CodeSPA 阅读(86) 评论(0) 推荐(0)
摘要:LeetCode 844 比较含退格的字符串 问题描述 给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。 注意:如果对空文本输入退格字符,文本继续为空。 重构字符串 执行用时:2 ms, 在所有 Java 提交中击败了74.87% 阅读全文
posted @ 2020-10-19 08:59 CodeSPA 阅读(66) 评论(0) 推荐(0)
摘要:LeetCode 19 删除链表的倒数第N个节点 问题描述: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 双指针 两指针间刚好间隔N个节点 执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户 内存消耗:36.3 MB, 在所有 Java 提交中击败了98 阅读全文
posted @ 2020-10-18 10:33 CodeSPA 阅读(58) 评论(0) 推荐(0)
摘要:LeetCode 977 有序数组的平方 问题描述: 给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。 一次遍历 利用数组原本存在的有序性(复数绝对值递减、非负数递增) 执行用时:2 ms, 在所有 Java 提交中击败了66.81%的用户 内存消耗: 阅读全文
posted @ 2020-10-16 09:13 CodeSPA 阅读(88) 评论(0) 推荐(0)
摘要:LeetCode 24 两两交换链表中的节点 问题描述: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 三指针 双指针用于控制相邻节点的交换 单指针用于保存上一对交换后节点的尾节点 class Solution { pub 阅读全文
posted @ 2020-10-13 08:53 CodeSPA 阅读(64) 评论(0) 推荐(0)
摘要:LeetCode 142 环形链表II 问题描述: 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 快慢指针 快指针每次走 阅读全文
posted @ 2020-10-10 09:02 CodeSPA 阅读(84) 评论(0) 推荐(0)
摘要:LeetCode 106 从中序与后序遍历序列构造二叉树 问题描述: 根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 执行用时:3 ms, 在所有 Java 提交中击败了72.97%的用户 内存消耗:39.3 MB, 在所有 Java 提交中击败了42.05%的用 阅读全文
posted @ 2020-10-09 13:30 CodeSPA 阅读(92) 评论(0) 推荐(0)
摘要:LeetCode 637 二叉树的层平均值 问题描述: 给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。 层序遍历BFS 执行用时:3 ms, 在所有 Java 提交中击败了71.11%的用户 内存消耗:40.8 MB, 在所有 Java 提交中击败了20.03%的用户 class Sol 阅读全文
posted @ 2020-10-09 09:39 CodeSPA 阅读(77) 评论(0) 推荐(0)
摘要:LeetCode 117 填充每个节点的下一个右侧节点 问题描述: 给定一个二叉树 struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 阅读全文
posted @ 2020-10-09 09:07 CodeSPA 阅读(80) 评论(0) 推荐(0)
摘要:LeetCode 771 宝石与石头 问题描述: 给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。 J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石 阅读全文
posted @ 2020-10-03 15:25 CodeSPA 阅读(83) 评论(0) 推荐(0)
摘要:LeetCode 1 两数之和 问题描述: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 哈希表: O(N) 使用哈希表记录下数组中值与下标的对应 阅读全文
posted @ 2020-10-03 15:11 CodeSPA 阅读(73) 评论(0) 推荐(0)
摘要:LeetCode 701 二叉搜索树中的插入操作 问题描述: 给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据保证,新值和原始二叉搜索树中的任意节点值都不同。 注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你 阅读全文
posted @ 2020-09-30 08:54 CodeSPA 阅读(137) 评论(0) 推荐(0)
摘要:LeetCode 235 二叉搜索树的最近公共祖先 问题描述: 二叉搜索数性质 当前根节点值大于/等于p节点值 当前根节点值小于/等于q节点值 返回当前根节点 class Solution { public TreeNode lowestCommonAncestor(TreeNode root, T 阅读全文
posted @ 2020-09-27 22:37 CodeSPA 阅读(89) 评论(0) 推荐(0)
摘要:LeetCode 617 合并二叉树 问题描述: 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。 递归 阅读全文
posted @ 2020-09-21 13:30 CodeSPA 阅读(81) 评论(0) 推荐(0)
摘要:LeetCode 566 重塑矩阵 问题描述: 在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。 给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。 重构后的矩阵需要将原始矩阵的所有元素以 阅读全文
posted @ 2020-09-21 09:48 CodeSPA 阅读(92) 评论(0) 推荐(0)
摘要:LeetCode 283 移动零 问题描述: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 双指针 执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户 内存消耗:39 MB, 在所有 Java 提交中击败了79.88%的用户 c 阅读全文
posted @ 2020-09-21 09:35 CodeSPA 阅读(105) 评论(0) 推荐(0)
摘要:LeetCode 242 有效的字母异位词 问题描述 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 哈希表 执行用时:4 ms, 在所有 Java 提交中击败了64.92%的用户 内存消耗:38.9 MB, 在所有 Java 提交中击败了73.89%的用户 cla 阅读全文
posted @ 2020-09-20 15:14 CodeSPA 阅读(98) 评论(0) 推荐(0)