随笔分类 - leetcode题解
leetcode的解题思路和笔记
摘要:题目 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的
阅读全文
摘要:题目 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1 2 4, 1 3 4 输出:1 1 2 3 4 4 思路 记 : python的链表实现: 递归判断,依次按顺序返回值 代码 python Definition for singly
阅读全文
摘要:题目 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。 示例 1:输入: "()" 输出: true 示例 2:输入: "()[]{}" 输
阅读全文
摘要:题目 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。 示例 1:输入: ["flower","flow","flight"] 输出: "fl" 示例 2:输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。 说明:
阅读全文
摘要:题目 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如
阅读全文
摘要:题目 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 解题思路 通过字符串来解决这个问题 代码(python3) python class Solution: def isPalindrome(self, x: int) bool: if x
阅读全文
摘要:题目 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。 解题思路 将数字转换成单个字符的列表,进行字符的处理 代码 py
阅读全文
摘要:题目 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。 解题思路 将数字转换成单个字符的列表,进行字符的处理 代码 py
阅读全文
摘要:题目 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 思路 建立一种映射关系,键是数值,对应的值是数组索引 代码
阅读全文
摘要:题目 班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈,是指所有朋友的集合。给定一个 N N 的矩阵 M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知
阅读全文
摘要:题目 一共39层台阶。如果我每一步迈上1个台阶或者两个台阶,先迈左脚,再迈右脚,然后左右交换,最后一步迈右脚,也就是一共要走偶数步,那么,上完39级台阶,有多少种不同的方法? 思路 采用递归的思想,边界条件就是台阶上数小于0,返回0;台阶上等于0,而且步数恰好是偶数步,那么说明走完了所有台阶,方法加
阅读全文
摘要:题目 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。 示例 1:输入: 示例 2:输入: 思路 DFS,深度遍历搜索 visited记录遍历过的陆地 代码
阅读全文
摘要:题目 给定一个未排序的整数数组,找出最长连续序列的长度、 要求算法的时间复杂度为O(n). 示例 : 思路 思路一 1. 先由小到大进行排序 2. 考虑三种情况: 1. 前后相差1,则是连续序列 2. 前后相等,循环continue 3. 最后一个元素,break 代码
阅读全文
摘要:题目 给定一个从1 到 n 排序的整数列表。 首先,从左到右,从第一个数字开始,每隔一个数字进行删除,直到列表的末尾。 第二步,在剩下的数字中,从右到左,从倒数第一个数字开始,每隔一个数字进行删除,直到列表开头。 我们不断重复这两步,从左到右和从右到左交替进行,直到只剩下一个数字。 返回长度为 n
阅读全文
摘要:题目 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。 示例 1: 注意: 合并必须从两个树的根节点开始
阅读全文
摘要:给定一个非空整数数组,找到使所有数组元素相等所需的最小移动数,其中每次移动可将选定的一个元素加1或减1。 您可以假设数组的长度最多为10000。 例如: 思路 寻找中位数 代码 int minMoves2(int nums, int numsSize) { //排序 for(int i = 0; i
阅读全文
摘要:给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。 示例 1: 示例 2: 示例 3: 思路 先排序,再判断输出 int thirdMax(int nums, int numsSize) { int x; //排序,由大到小 for(int
阅读全文
摘要:题目 假设 LeetCode 即将开始其 IPO。为了以更高的价格将股票卖给风险投资公司,LeetCode希望在 IPO 之前开展一些项目以增加其资本。 由于资源有限,它只能在 IPO 之前完成最多 k 个不同的项目。帮助 LeetCode 设计完成最多 k 个不同项目后得到最大总资本的方式。 给定
阅读全文
摘要:题目 实现一个 MyCalendar 类来存放你的日程安排,你可以一直添加新的日程安排。 MyCalendar 有一个 book(int start, int end) 方法。它意味着在start到end时间内增加一个日程安排,注意,这里的时间是半开区间,即 [start, end), 实数 x 的
阅读全文
摘要:2020. 绝对值排序 题目 思路与总结 2025. 查找最大元素 题目 代码 include include int main() { char max,str[101]; int len,i; while(~scanf("%s",str)) { len=strlen(str); max='a';
阅读全文

浙公网安备 33010602011771号