31-35

作者: yy辰 | 来源:发表于2018-10-12 13:43 被阅读27次

31、两个链表的第一个公共节点
之前在leetcode上刷到过,刷的时候不会做,后来参考了别人的写法,把其中一个链表的尾节点指向另一个链表的头节点,这样就转化成了求一个环形链表的入环节点。但是后来看了下最快的办法,真的是又快又简洁,在这里贴上代码:

class Solution(object):
    def getIntersectionNode(self, headA, headB):
        """
        :type head1, head1: ListNode
        :rtype: ListNode
        """
        p1, p2 = headA, headB
        while(p1 != p2):
            p1 = headB if p1 == None else p1.next
            p2 = headA if p2 == None else p2.next
        return p1

32、第一个只出现一次的字符
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写。
能想到的只有遍历两遍,第一遍用字典计数,第二遍找第一个只出现一次的字符。

class Solution:
    def FirstNotRepeatingChar(self, s):
        dic = {}
        for i in s:
            print(i)
            dic[i] = dic.get(i, 0) + 1
        for i in s:
            if dic[i] == 1:
                return i
        else:
            return -1

33、数据中的逆序对
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007。
我想到的是递归求逆序对的个数,递归的时候可以像求斐波那契数列一样用动态规划优化一下。但是想想其实跟直接遍历的时间复杂度是一样的。看了下别人的答案,用了归并排序之类的,关于排序算法之前没仔细看过,只知道冒泡、选择、插入算法。刷完剑指offer再去详细了解一下,先马住。贴上自己写的递归版答案

class Solution:
    def InversePairs(self, data):
        # write code here
        memory = [0]
        def getnumsofpairs(data):
            for i in range(1, len(data)):
                count = 0
                for j in range(i):
                    if data[j] > data[i]:
                        count += 1
                memory.append(memory[i-1]+count)
            return memory[-1]
        return getnumsofpairs(data)%1000000007

34、连续子数组最大和
这题也在leetcode中刷过

class Solution(object):
    def maxSubArray(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        all_max = nums[0]
        cur = 0
        for i in nums:
            cur = max(cur+i, i)
            all_max = max(all_max, cur)
        return all_max

35、最小的k个数
最笨的办法就是写个排序。思考了一下如何优化,可以用一个列表先储存前k个数,然后对剩下的数开始遍历,如果小于列表的最大值,那么列表的最大值替换为k。看了下别人的答案,思路是一样的,但是是用最大堆来储存k个数,我还不知道堆是什么😔,之前了解了一点排序算法,有个最大堆排序没仔细看,待会去看一下。先把列表的答案贴上。

class Solution:
    def GetLeastNumbers_Solution(self, tinput, k):
        # write code here
        temp = tinput[:k]
        for i in tinput[k:]:
            if i < max(temp):
                temp[temp.index(max(temp))] = i
        return temp

相关文章

  • MySQL经典50题-第31到35题

    MySQL50-9-第31-35题 本文中介绍的是第31-35题目,主要涉及的知识点是: 模糊匹配 同时指定多种排...

  • 31-35

    31、两个链表的第一个公共节点之前在leetcode上刷到过,刷的时候不会做,后来参考了别人的写法,把其中一个链表...

  • 保持正向思维

    2019.5.16 星期四 感恩日记第1894天 江苏常州 天气 多云 读经内容:易经下40卦、唐诗31-35、...

  • 诗篇31-35

    诗篇 第31篇 〔大卫的诗,交与伶长。〕 耶和华啊,我投靠你,求你使我永不羞愧,凭你的公义搭救我。求你侧耳而听,快...

  • 31-35总结

    背景:领导力特质。---领导者类型。(画像) what 领导者的类型: 硬权力领导/民主型。 能力型。 情感型/理...

  • 分享诗歌《鸡叫的时候》

    专辑:再次将我更新 演唱:小羊诗歌 经文:赛53:7;太26:31-35,57-75;可14:27-31,50-7...

  • 少儿编程游戏CodeMonkey通关攻略:第31-35关

    本文介绍少儿编程游戏[CodeMonkey]第31-35关。 第31关 猴博士告诉咱,咱已经脱离循环阶段,开始进入...

  • 神会眷顾!29/2020

    创世记 29:31-35 CUNPSS-神 “耶和华见 利亚 失宠 ,就使她生育, 拉结 却不生育。 利亚 怀孕生...

  • 2020幸福实修内外丰盛,家业同修9/100

    今日实修 ❤ 诵读《教条示龙场诸生》&道德经31-35章 ❤ 阅读《生命的重建》&《亲爱的安德烈》 ❤️家业同修营...

  • 读《100个基本》有感-最基本的也是最有意义的(7)

    这篇文章是“100个基本”有感系列第七篇,将记录31-35条“基本”的感悟。 031 想要伙伴,先制造敌人。 ...

网友评论

      本文标题:31-35

      本文链接:https://www.haomeiwen.com/subject/fguwaftx.html