数据结构与算法解题-20240427

在这里插入图片描述


1089. 复写零

简单
给你一个长度固定的整数数组 arr ,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。
注意:请不要在超过该数组长度的位置写入元素。请对输入的数组 就地 进行上述修改,不要从函数返回任何东西。

示例 1:
输入:arr = [1,0,2,3,0,4,5,0]
输出:[1,0,0,2,3,0,0,4]
解释:调用函数后,输入的数组将被修改为:[1,0,0,2,3,0,0,4]

示例 2:
输入:arr = [1,2,3]
输出:[1,2,3]
解释:调用函数后,输入的数组将被修改为:[1,2,3]

class S1089:
    def func(self, arr):
        i = 0
        j = len(arr)
        while i < j:
            if arr[i] == 0:
                arr.insert(i, 0)
                arr.pop()
                i += 2
            else:
                i += 1


r = S1089()
arr = [1, 0, 2, 3, 0, 4, 5, 0]
print(r.func(arr))

20. 有效的括号

简单

给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。

示例 1:
输入:s = “()”
输出:true

示例 2:
输入:s = “()[]{}”
输出:true

示例 3:
输入:s = “(]”
输出:false

class S20:
    def func(self, s):
        if len(s) % 2 == 1:
            return False
        dic = {
            ")": "(",
            "]": "[",
            "}": "{"
        }
        stack = []
        for i in s:
            if i not in dic:
                stack.append(i)
            elif not stack or dic[i] != stack.pop():
                return False
        return len(stack) == 0


r = S20()
s = '()'
s = '()[]{}'
s = '(}'
print(r.func(s))

231. 2 的幂

简单

给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。
如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。

示例 1:
输入:n = 1
输出:true
解释:20 = 1

示例 2:
输入:n = 16
输出:true
解释:24 = 16

示例 3:
输入:n = 3
输出:false

class S2:
    def func(self,n):
        if n<=0:
            return False
        elif n==1:
            return True
        elif n==2:
            return True
        elif n==3:
            return False
        else:
            if n%2==0:
                return self.func(n//2)
            else:
                return False

r=S2()
n=5
print(r.func(n))

326. 3 的幂

简单

给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。
整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3x

示例 1:
输入:n = 27
输出:true

示例 2:
输入:n = 0
输出:false

示例 3:
输入:n = 9
输出:true

示例 4:
输入:n = 45
输出:false

class S3:
    def func(self,n):
        if n<1:
            return False
        elif n==1:
            return True
        elif n==2:
            return False
        elif n%3!=0:
            return False
        else:
            return self.func(n/3)


r=S3()
n=9
print(r.func(n))

342. 4的幂

简单
给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。
整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x

示例 1:
输入:n = 16
输出:true

示例 2:
输入:n = 5
输出:false

示例 3:
输入:n = 1
输出:true

class S4:
    def func(self,n):
        if n<1:
            return False
        elif n==1:
            return True
        elif n%4!=0:
            return False
        else:
            return self.func(n/4)

r=S4()
n=5
print(r.func(n))

在这里插入图片描述

评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敲代码敲到头发茂密

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值