IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 200道大数据面试常考Leetcode算法题--数组篇02(python带代码解析) -> 正文阅读

[数据结构与算法]200道大数据面试常考Leetcode算法题--数组篇02(python带代码解析)

往期内容在这里:

往期01-05

往期06-10

往期11-15

往期16-20

数组篇01

大家好,继续为大家推荐200道大数据面试常考Leetcode算法题,这期为--数组篇,附带解析,都是从Leetcode官网总结大神们的解法(在这里感谢大神的帮助,我只是个搬运工!)每篇更新5篇,一共更新数组篇20篇,艾瑞巴迪和我一起刷起来!!

200道大数据面试常考Leetcode算法题(数组篇)35- 搜索插入位置

Leetcode原题:

题解为 :

class Solution:
    def searchInsert(self, nums: List[int], target: int) -> int:
        if not nums:
            return nums
        # 定义左节点
        left = 0
        # 定义右节点
        right = len(nums) - 1
        # 从左开始向右循环
        while(left <= right):
            # 找到重中点
            mid = (left + right) // 2
            # 假如中点为目标数
            if(nums[mid] == target):
                return mid
            # 目标数是否在右边
            if(nums[mid] < target):
                # 则左节点从中点右边开始
                left = mid+1
            # 目标数在左边
            else:
                # 则右节点从中点左边开始
                right = mid -1
        # 跳出循环时,left 指向 target 插入位置,返回 left
        return left

200道大数据面试常考Leetcode算法题(数组篇)39-组合总和Ⅰ

Leetcode原题:

题解为:

def combinationSum(self, nums: List[int], target: int) -> List[List[int]]:
    ans=[]
    for i in range(len(nums)):
        # 若target-nums[i]<0,则以nums[i]为首元素无符合的组合
        if target-nums[i]<0:
            continue
        elif target-nums[i]==0:
        # 若target-nums[i]=0,则[nums[i]]即为唯一符合的组合
            ans.append([nums[i]])
        # 若target-nums[i]>0,则递归调用函数(以target-nums[i]为目标,nums[i:]为可用数组)
        else:
            ans+=[[nums[i]]+rest for rest in self.combinationSum(nums[i:],target-nums[i])]
    return ans

200道大数据面试常考Leetcode算法题(数组篇)40-组合总和Ⅱ

Leetcode原题:

?题解为:

class Solution:
    def combinationSum2(self, candidates: List[int], target: int) -> List[List[int]]:
        # 特判,若candidatescandidates为空,则返回[]
        if(not candidates):
            return []
        # 数组长度循环次数
        n=len(candidates)
        # 排序
        candidates.sort()
        res=[]
        # 回溯函数helper()helper(),
        # 传入参数:下一加和索引ii,当前已加和数组tmptmp,下一目标targettarget
        def helper(i,tmp,target):
            # 若target==0target==0,说明当前和满足条件,
            # 将当前加和数组tmptmp加入resres,并return。
            print(i,tmp,target)
            if(target==0):
                res.append(tmp)
                return
            # 若target==0target==0,
            # 说明当前和满足条件,将当前加和数组tmptmp加入resres,并return。
            if(i==n or target<candidates[i]):
                return
            # 对于j遍历区间[i,n)(为了防止数组越界,首先保证j>i,判断是否和上一元素相等),分为以下两种情况:
            for j in range(i,n):
            # 若满足条件j>i and candidates[j] == candidates[j-1]j>iandcandidates[j]==candidates[j?1],则跳过,避免出现重复解,同时也进行了剪枝。
                if(j>i and candidates[j]==candidates[j-1]):
                    continue
                # 否则,执行helper(j+1,tmp+[candidates[j]],target-candidates[j])
                helper(j+1,tmp+[candidates[j]],target-candidates[j])
        # 执行helper(0,[],target)helper(0,[],target),并返回resres
        helper(0,[],target)
        return res


200道大数据面试常考Leetcode算法题(数组篇)48-旋转图形

Leetcode原题为:

题解为:

class Solution:
    def rotate(self, matrix: List[List[int]]) -> None:
        """
        Do not return anything, modify matrix in-place instead.
        """
        # 初始数组的长度
        n = len(matrix)
        # 双层循环类似二维数组,先转置,对角线不变,行列相反
        for i in range(n):
            for j in range(i+1,n):
                matrix[i][j],matrix[j][i] = matrix[j][i],matrix[i][j]
        # 然后再关于中点对称即可
        mid = n//2
        for j in range(mid):
            for i in range(n):
                matrix[i][j],matrix[i][n-j-1] = matrix[i][n-j-1,matrix[i][j]

200道大数据面试常考Leetcode算法题(数组篇)54-螺旋矩阵

Leetcode原题为:

题解为:

class Solution:
    def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
        # 特殊判断
        if not matrix : return []
        res = []
        # 对数组循环3次
        while matrix:
            # 直接取出取出第一行
            res.extend(matrix.pop(0))
            # 下一个矩阵
            next_matrix = []
            # 对剩下的两行就是转置
            for x in zip(*matrix):
                # 添加到下一矩阵,即下一矩阵为竖着的矩阵
                next_matrix.append(x)
            # 重新赋值矩阵,不断取出第一行
            matrix = next_matrix[::-1]
        return res

好啦,这期的分享到这里结束啦!我们下期(数组篇03)再见!

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-08-11 12:40:50  更:2021-08-11 12:40:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 4:14:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码