LintCode Python 简单级题目 112.删除链表中的重复元素

题目描述:

给定一个排序链表,删除所有重复的元素每个元素只留下一个。

您在真实的面试中是否遇到过这个题?

Yes

样例

给出 1->1->2->null,返回 1->2->null

给出 1->1->2->3->3->null,返回 1->2->3->null

标签

链表

题目分析:

给定一个排序链表,删除所有重复的元素每个元素只留下一个。

源码:

"""
Definition of ListNode
class ListNode(object):
    def __init__(self, val, next=None):
        self.val = val
        self.next = next
"""
class Solution:
    """
    @param head: A ListNode
    @return: A ListNode
    """
    def deleteDuplicates(self, head):
        # write your code here
        if head is None:
            return None
        pre = head
        cur = pre
        fol = pre.next
        while fol.next is not None:
            # 一直找到第一个与pre值不等的fol,删除中间所有重复元素
            if pre.val == fol.val:
                fol = fol.next
            else:
                pre.next = fol
                pre = fol
                fol = pre.next
        # 检测末尾是否相等
        if pre.val == fol.val:
            pre.next = fol.next
        else:
            pre.next = fol
        return cur

  

时间: 2024-08-19 11:28:36

LintCode Python 简单级题目 112.删除链表中的重复元素的相关文章

LintCode Python 简单级题目 452.删除链表中的元素

原题描述: 删除链表中等于给定值val的所有节点. 您在真实的面试中是否遇到过这个题? Yes 样例 给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5. 标签 链表 题目分析: 删除链表中等于给定值val的所有节点. 遍历链表,找到其中next.val等于val的节点,删除. 注意的地方就是可能链表中的所有元素val都等于val,循环的开始需要从表头开始删除,需要新增一个头节点.

LintCode Python 简单级题目 174.删除链表中倒数第n个节点

题目描述: 给定一个链表,删除链表中倒数第n个节点,返回链表的头节点. 注意事项 链表中的节点个数大于等于n 您在真实的面试中是否遇到过这个题? Yes 样例 给出链表1->2->3->4->5->null和 n = 2. 删除倒数第二个节点之后,这个链表将变成1->2->3->5->null. 挑战 O(n)时间复杂度 标签 两根指针 链表 题目分析: 创建两个指针,head指向表头.curent指向链表第n个元素: 循环后移n次,直至curent=

LintCode Python 简单级题目 35.翻转链表

题目描述: 翻转一个链表 您在真实的面试中是否遇到过这个题? Yes 样例 给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null 挑战 在原地一次翻转完成 标签 链表 脸书 优步 题目分析: 在原地一次翻转完成 循环head链表,将链表中的元素从表头依次取出指向新链表即可. 源码: """ Definition of ListNode class ListNode(object): def __init__(

LintCode Python 简单级题目 60.搜索插入位置

题目描述: 给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引.如果没有,返回到它将会被按顺序插入的位置. 你可以假设在数组中无重复元素. 您在真实的面试中是否遇到过这个题? Yes 样例 [1,3,5,6],5 → 2 [1,3,5,6],2 → 1 [1,3,5,6], 7 → 4 [1,3,5,6],0 → 0 挑战 O(log(n)) time 标签 数组 排序数组 二分法 题目分析: 给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引.如果没有,返回到它将会被按

LintCode Python 简单级题目 451.两两交换链表中的节点

题目描述: 给一个链表,两两交换其中的节点,然后返回交换后的链表. 您在真实的面试中是否遇到过这个题? Yes 样例 给出 1->2->3->4, 你应该返回的链表是 2->1->4->3. 挑战 你的算法只能使用常数的额外空间,并且不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 标签 链表 题目分析: 你的算法只能使用常数的额外空间,即不能新建链表: 并且不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 创建三个指针: head指向开始交换的

LintCode Python 简单级题目 链表求和

原题描述: 你有两个用链表代表的整数,其中每个节点包含一个数字.数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头.写出一个函数将两个整数相加,用链表形式返回和. 您在真实的面试中是否遇到过这个题? Yes 样例 给出两个链表 3->1->5->null 和 5->9->2->null,返回 8->0->8->null 标签 Cracking The Coding Interview 链表 高精度 # Definition for sin

LintCode Python 简单级题目 最小子数组和、最大子数组和

题目1 最小子数组 描述: 给定一个整数数组,找到一个具有最小和的子数组.返回其最小和. 注意事项 子数组最少包含一个数字 您在真实的面试中是否遇到过这个题? Yes 样例 给出数组[1, -1, -2, 1],返回 -3 标签 LintCode 版权所有 子数组 贪心 数组 题目2 最大子数组 描述: 给定一个整数数组,找到一个具有最大和的子数组,返回其最大和. 注意事项 子数组最少包含一个数 您在真实的面试中是否遇到过这个题? Yes 样例 给出数组[?2,2,?3,4,?1,2,1,?5,

LintCode Python 简单级题目 82.落单的数

题目描述: 给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字. 您在真实的面试中是否遇到过这个题? Yes 样例 给出 [1,2,2,1,3,4,3],返回 4 挑战 一次遍历,常数级的额外空间复杂度 标签 贪心 题目分析: 给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字. 利用  n^n = 0的特性,一个数异或本身结果为0 而  n^0 = n,所以 n^n-1^n = n-1, 所以保存异或结果,循环异或列表元素即可

LintCode Python 简单级题目 423.有效的括号序列

题目描述: 给定一个字符串所表示的括号序列,包含以下字符: '(', ')', '{', '}', '[' and ']', 判定是否是有效的括号序列. 您在真实的面试中是否遇到过这个题? Yes 样例 括号必须依照 "()" 顺序表示, "()[]{}" 是有效的括号,但 "([)]"则是无效的括号. 标签 栈 谷歌 题目分析: 循环字符串,遇左括号入栈. 遇右括号,从栈顶取元素然后配对,判断配对结果. 最后再判断栈是否不为空. 源码: cla