LeetCode刷题
~inspire
没错,我是来骗赞的
展开
-
LeetCode 234. 回文链表
回文链表题目:请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?解题思路:之前有做过回文整数和回文素数的题,思路就是将原数字反转,与原数字对比,相同即回文。但对于这个题目反转比较思路不可行,反转后...原创 2020-01-25 16:31:11 · 143 阅读 · 1 评论 -
LeetCode 2. 两数相加
两数相加题目:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -&...原创 2020-01-22 15:55:28 · 131 阅读 · 0 评论 -
LeetCode 21. 合并两个有序链表
合并两个有序链表题目:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解题思路:既然最后返回是合并后的链表,创建一个虚拟头结点引导合并后的链表,借助两个指针比较元素大小给新链表排好序。这样就可以完成题...原创 2020-01-20 19:00:36 · 116 阅读 · 0 评论 -
Leetcode 19. 删除链表的倒数第N个节点
题目: 删除链表的倒数第N个节点给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?问题分析:题目挺好理解,既然是找倒数第n个删,又是...原创 2020-01-14 15:52:16 · 116 阅读 · 0 评论 -
LeetCode 206. 反转链表
反转链表题目:反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?问题分析:这里若是一个数组,倒序输出就ok了,但是单链表不能倒序输出,只能前一个结点指向后一个结点。进阶中要求两种方法反转链...原创 2020-01-14 14:22:58 · 124 阅读 · 0 评论 -
LeetCode 142. 环形链表 II
环形链表 II题目:给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to ...原创 2019-12-26 15:11:21 · 247 阅读 · 0 评论 -
LeetCode 141. 环形链表
环形链表题目:给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。解题思路:题目要求简单,只需要判断有无环路,不需要找...原创 2019-12-26 12:57:43 · 120 阅读 · 0 评论 -
LeetCode160. 相交链表
相交链表题目:编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。注意:如果两个链表没有交点,返回 null.在返回结果后,两个链表仍须保持原有的结构。可假定整个链表结构中没有循环。程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。问题分析:题目很容易理解,注意一下问题,不能在原结构上修改,且链表中无环路,若有环路交点就不唯...原创 2019-12-25 23:00:18 · 106 阅读 · 0 评论 -
LeetCode 328. 奇偶链表
题目:奇偶链表给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3-&...原创 2019-12-23 23:51:09 · 185 阅读 · 0 评论 -
LeetCode26. 删除排序数组中的重复项
题目:删除排序数组中的重复项给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。分析:首先明确一下题目,题中给的是排好序的数组,这个很关键,还有虽然最后要求返回删掉重复项的数组长度,但是还是要把最终数组显示出来,不然还是会报错,然后想一下,这个题可以用双...原创 2019-12-12 16:00:53 · 106 阅读 · 1 评论 -
LeetCode_1089. 复写零
题目:复写零给你一个长度固定的整数数组 arr,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。注意:请不要在超过该数组长度的位置写入元素。要求:请对输入的数组 就地 进行上述修改,不要从函数返回任何东西。解题思路:既然题目要求每个0后面复写0,那么就遍历数组,若元素为0,则我们只需要将后面的元素向后一位赋值,相当于右移,因为数组时整型的,空出开的位置为数组的默认初始值0...原创 2019-11-29 23:07:46 · 282 阅读 · 2 评论 -
LeetCode_605. 种花问题
题目:种花问题假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花?能则返回True,不能则返回False。解题思路:既然题目要求俩朵花不能相邻,即两个1不能挨着,找再能种几朵花,先...原创 2019-11-29 12:14:33 · 238 阅读 · 1 评论 -
LeetCode_283. 移动零
题目:移动零给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。解题思路:乍一看这个题,创建一个数组,把非0的放在前面,为0的放在后面,输出这个数组,但是题目要求只能在原数组操作,所有优化一下,把数组变为一个变量,在循环中让这个变量递增实现数组相同的作用。代码实现如下:class Solution { public void moveZ...原创 2019-11-26 22:29:04 · 86 阅读 · 0 评论 -
LeetCode_27. 移除元素
题目:移除元素给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。解题思路:一看题和以前做过的数组消除重复元素有些相像,定义一个size记录数组有效长度,初始为数组的长度,遍历数组...原创 2019-11-26 20:30:27 · 71 阅读 · 0 评论 -
LeetCode_268. 缺失数字
题目:缺失数字给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 … n 中没有出现在序列中的那个数。解题思路:对这个题我们也可以用异或运算符解,了解一下异或的性质:交换律:a ^ b ^ c <=> a ^ c ^ b任何数于0异或为任何数 0 ^ n => n相同的数异或为0: n ^ n => 0代码实现:clas...原创 2019-11-26 17:10:24 · 99 阅读 · 0 评论 -
LeetCode_747.至少是其他数字两倍的最大数
题目:至少是其他数字两倍的最大数在一个给定的数组nums中,总是存在一个最大元素 。查找数组中的最大元素是否至少是数组中每个其他数字的两倍。如果是,则返回最大元素的索引,否则返回-1。思题思路:初看这个题,想到的是先扫描一遍数组,取出最大值和相应角标,再次扫描数组,用最大值和其他值进行比较。class Solution { public int dominantIndex(i...原创 2019-11-25 23:19:18 · 121 阅读 · 0 评论