坚持刷题的第三周(四)

简介: 坚持刷题的第三周(四)

2021-10-28

题目

1.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

示例 4:


输入:n = 4

输出:true

示例 5:


输入:n = 5

输出:false


提示:


-231 <= n <= 231 - 1


2.全排列

给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。


示例 1:


输入:nums = [1,2,3]

输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

示例 2:


输入:nums = [0,1]

输出:[[0,1],[1,0]]

示例 3:


输入:nums = [1]

输出:[[1]]


提示:


1 <= nums.length <= 6

-10 <= nums[i] <= 10

nums 中的所有整数 互不相同


3.全排列||

给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。


示例 1:


输入:nums = [1,1,2]

输出:

[[1,1,2],

[1,2,1],

[2,1,1]]

示例 2:


输入:nums = [1,2,3]

输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]


 4.组合两个表


image.png



5.重新排序得到 2 的幂

给定正整数 N ,我们按任何顺序(包括原始顺序)将数字重新排序,注意其前导数字不能为零。


如果我们可以通过上述方式得到 2 的幂,返回 true;否则,返回 false。


示例 1:


输入:1

输出:true

示例 2:


输入:10

输出:false

示例 3:


输入:16

输出:true

示例 4:


输入:24

输出:false

示例 5:


输入:46

输出:true


题解

1.2的幂

这个题我们直接可以用与运算来写出如果n&(n-1)==0返回true就证明这是是2的幂数,明天我可能就会更新一些运算符的使用,有一些运算符在写踢的时候是很方便的,还要注意一点这个是要大于0的!


2.全排列

本题就是一个简单的回溯加剪枝,我们在回溯的条件上添加一个剪枝,判断每一个排序中是否已经有了该元素,如果有了就直接跳过此次循环,每次回溯的终止条件就是子元素的长度是否等于给定的长度,我们来借鉴一下官方的图:


image.png


看图是能比较好理解的,如果大家懂了这个图的原理,还有回溯的原理就可以直接下手本题了!!


3.全排列||

本题是上一题的一个进阶问题,本题多出了两个条件,给的数组里面的元素是可以重复的,但是排序的结果是不能重复的。


我们还是用回溯加剪枝,我们还需要把每个重复的元素给经行一个标记,我们可以创建一个新的全为0等长的列表,然后判断如果有重复的,则对应新列表重复的下标转化为1,在回溯的时候判断,如果新列表的哪个下标为1就直接跳过此次循环,这样就去重了一些,然后回溯在进行排序。


4.组合两个表

本题考的就是两个表的如何合并,在MySQL中我们可以先用outer join合并这两个表,然后在在合并的表中进行查询,这个是一个基本的思路,我最后测试了一下效率不是很高但是没有什么问题。


5.重新排序得到 2 的幂

本题是今天的每日一题,本题有一种解法就是用回溯加对2幂数经行判断,我最开始写的几道题就是为这个题做铺垫,但是呢我并没有用那种方法去写嘿嘿嘿嘿,我看到了一个新的思路。就是我们可以把2的31个幂数列举出来,然后在给这些幂函数转化为二进制的数,并放在列表中,我们也把目标数转化为二进制数放在列表中,然后经行a和b两个数组进行对比如果相等就返回true,反之返回false。


6.买股票的最佳时机

image.png


代码

1.2的幂

class Solution:
    def isPowerOfTwo(self, n: int) -> bool:
        return n>0 and n&(n-1)== 0

2.全排列  

class Solution:
    def permute(self, nums: List[int]) -> List[List[int]]:
        res = []
        def trace (nums,path):
            if len(path) == len(nums):
                res.append(list(path))
                return
            for i in nums:
                if i in path:
                    continue
                path.append(i)
                trace(nums,path)
                path.pop()
        trace(nums,[])
        return res

3.全排列||

 

 

 

class Solution:
    def permuteUnique(self, nums: List[int]) -> List[List[int]]:
        nums.sort()
        res = []
        check =[0 for i in range(len(nums))]
        def trace (nums,path,check):
            if len(path) == len(nums):
                    res.append(list(path))
                    return
            for i in range(len(nums)):
                if check[i] == 1:
                    continue
                if i>0 and nums[i]==nums[i-1] and check[i-1] ==0:
                    continue
                check[i]=1
                trace(nums,path+[nums[i]],
                      check)
                check[i]=0
        trace(nums,[],check)
        return res
class Solution1:
    def permuteUnique(self, nums: List[int]) -> List[List[int]]:
        nums.sort()
        res = []
        check = [0 for i in range(len(nums))]
        def backtrack(sol, nums, check):
            if len(sol) == len(nums):
                res.append(list(sol))
                return
            for i in range(len(nums)):
                if check[i] == 1:
                    continue
                if i > 0 and nums[i] == nums[i-1] and check[i-1] == 0:
                    continue
                check[i] = 1
                backtrack(sol+[nums[i]], nums, check)
                check[i] = 0
        backtrack([], nums, check)
        return res

         

4.组合两个表

select FirstName, LastName, City, State
from Person left join Address
on Person.PersonId = Address.PersonId
;

5.重新排序得到 2 的幂

class Solution:
    def reorderedPowerOf2(self, n: int) -> bool:
        def check(targ: int, num: int) -> bool:
            a = [0 for _ in range(10)]
            b = [0 for _ in range(10)]
            while targ:
                x = targ % 10 
                a[x] += 1
                targ //= 10
            while num:
                x = num % 10
                b[x] += 1
                num //= 10
            return a == b
        for i in range(31):
            targ = 2 ** i
            if check(targ, n) == True:
                return True
        return False

6.买卖股票的最佳时机

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        n = len(prices)
        if n == 0: return 0 # 边界条件
        dp = [0] * n
        minprice = prices[0] 
        for i in range(1, n):
            minprice = min(minprice, prices[i])
            dp[i] = max(dp[i - 1], prices[i] - minprice)
        return dp[-1]

 


目录
相关文章
|
4天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1106 0
|
3天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
511 10
|
13天前
|
人工智能 运维 安全
|
12天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。
|
4天前
|
弹性计算 Kubernetes jenkins
如何在 ECS/EKS 集群中有效使用 Jenkins
本文探讨了如何将 Jenkins 与 AWS ECS 和 EKS 集群集成,以构建高效、灵活且具备自动扩缩容能力的 CI/CD 流水线,提升软件交付效率并优化资源成本。
301 0
|
11天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
12天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
803 23
|
4天前
|
缓存 供应链 监控
VVIC seller_search 排行榜搜索接口深度分析及 Python 实现
VVIC搜款网seller_search接口提供服装批发市场的商品及商家排行榜数据,涵盖热销榜、销量排名、类目趋势等,支持多维度筛选与数据分析,助力选品决策、竞品分析与市场预测,为服装供应链提供有力数据支撑。
|
4天前
|
缓存 监控 API
Amazon item_review 商品评论接口深度分析及 Python 实现
亚马逊商品评论接口(item_review)可获取用户评分、评论内容及时间等数据,支持多维度筛选与分页调用,结合Python实现情感分析、关键词提取与可视化,助力竞品分析、产品优化与市场决策。