随笔分类 - LeetCode笔记
摘要:题目 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 输入: s = "anagram", t = "nagaram" 输出: true 输入: s = "rat", t = "car" 输出: false 分析 首先要理解题目,什么是异位词?根据示例,**我们知道
阅读全文
摘要:题目 给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。 输入: [1,2,1] 输出: [2,-1,2]
阅读全文
摘要:##题目 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 给定 1->2->3->4, 你应该返回 2->1->4->3. 给定 1->2->3->4->5, 你应该返回 2->1->4->3->5. 题目来源 ##分析 我
阅读全文
摘要:题目 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明:给定的 n 保证是有效的。 题目来源 分析 这道题的关键点就在链表的长度不知道,所以链表的
阅读全文
摘要:题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 题目来源 思路 第一个思路就是以迭代的方式,逐一比较链表元素大小关系,改变指针的指向,最后整合成一条有序的链表,这个
阅读全文
摘要:题目 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4,5]) 返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。 注意,我们返回了一个
阅读全文
摘要:题目 编写一个程序,找到两个单链表相交的起始节点。如下图有两条链表,listA = [4,1,8,4,5], listB = [5,0,1,8,4,5],则应当返回相交的起始节点,即8的索引或指针。 题目来源 分析 看到这道题,其本质就是找到链表公共的部分,所以我们通常很容易想到的方法就是暴力破解,
阅读全文
摘要:题目 反转一个单链表。 示例 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 题目来源 思路 首先看到这道题的话,我第一个会想到的方法是创建一个新的头结点,把老的链表使用头插法,复制过去,这样就形成了一条新的倒序链表。有没有再简单的方法呢?再者的话,就
阅读全文