随笔分类 - 算法入门
摘要:题目: 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 示例 1: 方法二:
阅读全文
摘要:题目: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票前卖出股票。 示例 1:
阅读全文
摘要:题目: 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例:给定二叉树 [3,9,20,null,null,15,7], 返回它的最大深度 3 。 方法一:递归实现 思路:递归其实一种很好的思想,对复杂问题的简单化
阅读全文
摘要:题目: 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 思路:需要一个新的节点遍历整个列表,在元素相同时删除,最后返回的还是头节点。
阅读全文
摘要:题目: 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 1: 方法二:动态规划算法 我们需要看到一个规律是上第i个楼梯方法=上i-1楼梯+上i-2楼梯
阅读全文
摘要:题目: 给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。 示例: 思路:将Hashmap数据结构用的特别巧妙,key的值是字符串,而value的值是一个列表; 其中在判断每个单词是否相同时,它将其每个单词排序,作为key值,如果是这个key值则将其添加到key的
阅读全文
摘要:题目: 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 示例 1:
阅读全文
摘要:题目: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 思路:其中i指针设计的比较巧妙,它即进行了数组比较,又做了计数。
阅读全文
摘要:题目: 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出 n = 3,生成结果为:
阅读全文
摘要:题目: 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 注意空字符串可被认为是有效字符串。 示例 1:
阅读全文
摘要:题目: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 整体的思路:1)首先应该获取这个链表的长度,用一个指针指向头结点,然后遍历直到结点为空; 2)设置一个结点指向哑结点,因为倒数第n个节点,可以通过长度减去n就获得链表的第n个节点; 3)将获取到的指针下个节点指向下下
阅读全文
摘要:题目: 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 示例 2:
阅读全文
摘要:题目: 给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器,且 n 的值至少为
阅读全文
摘要:题目: 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 示例 2: 算法思路:判断一个整数是不是回文,我们可以先将这个整数进行反转,对比反转后的整数和之前的整数是否相同; 其实还有一种方式,就是将这个整数的前一半和后一半进行比较,也可以得出最后的
阅读全文
摘要:题目: 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1:
阅读全文
摘要:题目: 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。 示例 1: 上式的方法虽然实现了算法要求,但是时间复杂度却没有达到;
阅读全文
摘要:题目: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 首先遍历所有的可能出现的字符串,使用二层循环; 然后再使用一个循环确定这个字符串是否重复(核心思想使用了集合,确定不重复元素)。 时间复杂度为O(n3)。 方法二:滑动窗口 使用滑动窗口,一些重复的的字符串比如ab
阅读全文
摘要:题目: 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 1)最开始是自定义单
阅读全文

浙公网安备 33010602011771号