力扣
lucy-bit
这个作者很懒,什么都没留下…
展开
-
【Leetcode】——有效的括号
题目描述:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例1:输入: “()”输出: true示例2:输入: “()[]{}”输出: true示例3:输入: “(]”输出: false示例4:...原创 2019-12-11 00:07:11 · 108 阅读 · 0 评论 -
相交链表 【Java-力扣】
编写一个程序,找到两个单链表相交的起始节点。分析:两个链表在某一结点相交,即为地址相同,可以分别遍历各链表,看在哪一个结点相交。考虑到两个链表的长度可能不一样,所以不能同步遍历,所以可以先求出链表长度的差值,让长链表先走差值个结点,然后再同步各自去遍历。代码如下:public ListNode getIntersectionNode(ListNode headA, ListNode h...原创 2019-11-17 17:18:15 · 171 阅读 · 0 评论 -
链表的回文结构 【Java-牛客】
题目描述 对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。 给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。 回文结构示例:1 - 2 - 2 - 1分析:1、先找到链表的中间结点2、将中间结点之后的部分反转3、定义两个结点,一个从前往后走,一个从后往前走,看两结点的val...原创 2019-11-17 13:45:16 · 160 阅读 · 0 评论 -
删除链表中重复的结点 【Java-牛客】
题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。例如,链表1->2->3->3->4->4->5 处理后为 1->2->5分析过程如下图:还有细节需要注意:代码如下:public ListNode deleteDuplication(ListNode pHead){ ...原创 2019-11-16 23:13:28 · 130 阅读 · 0 评论 -
链表分割 【Java-牛客】
题目描述 编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。分析见下图:要注意这种情况:大致思路就是这样,还有一些需要注意的情况,当链表为空或链表只有一个结点时,都没办法分割,直接返回null就行。还要注意到bs或as...原创 2019-11-16 22:02:43 · 169 阅读 · 0 评论 -
反转链表 【Java-力扣】
反转一个单链表。 示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL分析:画图解释:上述反转过程是个循环才能将链表整体反转,循环结束的条件是cur == null 即将整个链表遍历完时。要注意,在curNext == null时,此时cur所指的结点就是新的头结点,所以...原创 2019-11-16 00:06:44 · 179 阅读 · 0 评论 -
链表中第k个结点——【Java牛客】
题目描述:输入一个链表,输出该链表中倒数第k个结点。分析:最直接、最先想到的方法肯定是先求出链表长度,然后让链表从开始向后走(k-1)个结点。但是这种方法会遍历链表两遍,下面我说的这种方法只需遍历一遍就能找出对应结点。定义两个结点fast和slow。让fast先向后走(k-1)个结点,然后slow和fast同时向后走,直到fast走到头,slow对应的结点即为所求结点,这个过程画图更直观...原创 2019-11-15 23:17:02 · 233 阅读 · 0 评论 -
链表的中间结点 【Java-力扣】
给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。 示例: 输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.nex...原创 2019-11-14 23:47:48 · 156 阅读 · 0 评论 -
合并两个有序链表 【Java-力扣】
题目:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4分析:需要合并的两个链表是有序的,所以合成的新链表也需要是有序的,这就需要我们在合并过程中对链表中的各节点进行排序。我的思路是这样的:因为链表是有序...原创 2019-11-13 00:35:30 · 209 阅读 · 0 评论 -
移除链表元素 【Java-力扣】
删除链表中等于给定值 val 的所有节点。 示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5分析:要像实现删除指定内容项,可以将删除项的prev.next改为删除项的下一项的引用。链表问题画图解决比较容易,整体逻辑如下图所示:要注意的是,1、判断prev.nex...原创 2019-11-03 17:38:22 · 281 阅读 · 0 评论