leetcode刷题Day4

leetcode刷题Day4
33.环形链表
给你一个链表的头节点 head ,判断链表中是否有环。
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。
如果链表中存在环 ,则返回 true 。 否则,返回 false 。
在这里插入图片描述

  • 示例:输入:head = [3,2,0,-4], pos = 1; 输出:true; 解释:链表中有一个环,其尾部连接到第二个节点。
class Solution:
    def hasCycle(self, head: Optional[ListNode]) -> bool:
        slow_pre = head
        fast_pre = head
        while fast_pre and fast_pre.next:
            slow_pre = slow_pre.next
            fast_pre = fast_pre.next.next
            if slow_pre == fast_pre:
                return True
        return False

注:设置一个快指针和一个慢指针,快指针走两步,慢指针走一步。

34.相交链表
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。
图示两个链表在节点 c1 开始相交:
在这里插入图片描述

class Solution:
    def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> Optional[ListNode]:
        if not headA and not headB: return None
        nodeA = headA
        nodeB = headB
        while nodeA != nodeB:
            nodeA = nodeA.next if nodeA else headB
            nodeB = nodeB.next if nodeB else headA
        return nodeA

35.Excel表列名称
给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。
例如: A -> 1; B -> 2;…AA -> 27

  • 示例:输入:columnNumber = 1;输出:“A”
class Solution:
    def convertToTitle(self, columnNumber: int) -> str:
        result = ""
        while columnNumber > 0:
            num1 = (columnNumber - 1) % 26
            result = chr(num1 + 65) + result
            columnNumber = (columnNumber - num1) // 26
        return result

36.多数元素
给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。

  • 示例:输入:nums = [3,2,3];输出:3
import math
class Solution:
    def majorityElement(self, nums: List[int]) -> int:
        dict_count = {}
        for i in nums:
            if i not in dict_count:
                num = self.sum_num(nums, i)
                dict_count[i] = num
        ci_shu = math.floor(len(nums) / 2)

        result = [key for key, value in dict_count.items() if value > ci_shu]
        for i in result:
            return i       

    def sum_num(self, nums, num):
        count = 0
        for i in nums:
            if i == num:
                count += 1
        return count

37.位1的个数
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中设置位的个数(也被称为汉明重量)。

  • 示例:输入:n = 11; 输出:3; 解释:输入的二进制串 1011 中,共有 3 个设置位。
class Solution:
    def hammingWeight(self, n: int) -> int:
        num1 = bin(n)[2:]
        count = 0
        for i in str(num1):
            if i == "1":
                count += 1
        return count
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值