【经典LeetCode算法题目专栏分类】【第5期】贪心算法:分发饼干、跳跃游戏、模拟行走机器人

《博主简介》

小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。
更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~
👍感谢小伙伴们点赞、关注!

分发饼干

class Solution:

    def findContentChildren(self, g: List[int], s: List[int]) -> int:

        # 贪心算法

        res = 0

        g.sort()

        s.sort()

        i = 0

        j = 0

        while i < len(g) and j < len(s):

            # 饼干满足胃口

            if g[i] <= s[j]:

                res += 1

                i += 1

                j += 1

            else:

            # 饼干不满足胃口,查找下一个饼干

                j += 1

        return res

跳跃游戏

class Solution:

    def canJump(self, nums: List[int]) -> bool:

        # 贪心算法

        reach_index = len(nums) - 1 # 表示能够到达的索引位置

        for i in range(len(nums)-1,-1,-1):

            # 从后往前遍历,如果满足下述条件说明能够达到当前索引

            if i + nums[i] >= reach_index:

                reach_index = i

        return reach_index == 0

class Solution:

    def canJump(self, nums: List[int]) -> bool:

        if nums == [0]: return True

        maxDist = 0 # 能够达到的最远距离

        end_index = len(nums)-1

        for i, jump in enumerate(nums):

            # maxDist >= i表示能够达到当前索引位置,并且从当前索引开始

            if maxDist >= i and i+jump > maxDist:

                maxDist = i+jump

                if maxDist >= end_index:

                    return True

        return False

跳跃游戏2

class Solution:

    def jump(self, nums: List[int]) -> int:

        end = 0  # end 表示当前能跳的边界

        maxPosition = 0

        steps = 0

        for i in range(len(nums) - 1):

            # 找能跳的最远的

            maxPosition = max(maxPosition, nums[i] + i); 

            if i == end: #遇到边界,就更新边界,并且步数加一

                end = maxPosition;

                steps += 1

        return steps;

模拟行走机器人

class Solution:

    def robotSim(self, commands: List[int], obstacles: List[List[int]]) -> int:

        if not commands:

            return 0

        # 索引0,1,2,3分别表示北,东,南,西

        direx = [0, 1, 0, -1]

        direy = [1, 0, -1, 0]

        curx, cury, curdire, ans = 0, 0, 0, 0

        com_len, obs_len = len(commands), len(obstacles)

        obstacle_set = {(obstacles[i][0], obstacles[i][1]) for i in range(obs_len)}  # 变为集合,使判断是否有障碍物更快

    

        for i in range(com_len):

            if commands[i] == -1: # 向右转90度

                curdire = (curdire +1) % 4

            elif commands[i] == -2: # 向左转90度

                curdire = (curdire + 3) %4

            else: #  1 <= x <= 9: 向前移动x个单位长度

                for j in range(commands[i]):

                    # 试图走出一步,并判断是否遇到了障碍物

                    nx = curx + direx[curdire]

                    ny = cury + direy[curdire]

                    # 当前坐标不是障碍物,计算并存储的最大欧式距离的平方做比较

                    if (nx, ny) not in obstacle_set:

                        curx = nx

                        cury = ny

                        ans = max(ans, curx*curx + cury*cury)

                    else:

                        # 是障碍点,被挡住了,停留,智能等待下一个指令,那可以跳出当前指令了。

                        break

        return ans

关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!

觉得不错的小伙伴,感谢点赞、关注加收藏哦!

欢迎关注下方GZH:阿旭算法与机器学习,共同学习交流~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/221660.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】自定义类型之联合和枚举

目录 1. 前言2. 联合体2.1 联合体类型的声明2.2 联合体的特点2.3 相同成员的结构体和联合体对比2.4 联合体大小的计算2.4 判断当前机器的大小端 3. 枚举3.1 枚举类型的声明3.2 枚举类型的优点3.3 枚举类型的使用 1. 前言 在之前的博客中介绍了自定义类型中的结构体&#xff0c;…

华为鸿蒙操作系统简介及系统架构分析(2)

接前一篇文章&#xff1a;华为鸿蒙操作系统简介及系统架构分析&#xff08;1&#xff09; 本文部分内容参考&#xff1a; 鸿蒙系统学习笔记(一) 鸿蒙系统介绍 特此致谢&#xff01; 上一回对于华为的鸿蒙操作系统&#xff08;HarmonyOS&#xff09;进行了介绍并说明了其层次化…

使用Alpha Vantage API和Python进行金融数据分析

Alpha Vantage通过一套强大且开发者友好的数据API和电子表格&#xff0c;提供实时和历史的金融市场数据。从传统资产类别&#xff08;例如股票、ETF、共同基金&#xff09;到经济指标&#xff0c;从外汇汇率到大宗商品&#xff0c;从基本数据到技术指标&#xff0c;Alpha Vanta…

从初学者到高手:Golang匿名函数和闭包全解

从初学者到高手&#xff1a;Golang匿名函数和闭包全解 引言&#xff1a;Golang中的函数概述匿名函数的基础定义和使用匿名函数赋值给变量作为参数传递 深入理解闭包闭包的工作原理闭包的实际应用注意事项 匿名函数的高级应用事件处理和回调延迟执行和资源管理封装私有逻辑链式操…

SQL面试题挑战01:打折日期交叉问题

目录 问题&#xff1a;SQL解答&#xff1a;第一种方式&#xff1a;第二种方式&#xff1a; 问题&#xff1a; 如下为某平台的商品促销数据&#xff0c;字段含义分别为品牌名称、打折开始日期、打折结束日期&#xff0c;现在要计算每个品牌的打折销售天数&#xff08;注意其中的…

数据分析基础之《numpy(6)—合并与分割》

了解即可&#xff0c;用panads 一、作用 实现数据的切分和合并&#xff0c;将数据进行切分合并处理 二、合并 1、numpy.hstack 水平拼接 # hstack 水平拼接 a np.array((1,2,3)) b np.array((2,3,4)) np.hstack((a, b))a np.array([[1], [2], [3]]) b np.array([[2], […

手把手教你创建一个实时互动的AI数字人直播间!

数字人是什么&#xff1f;数字人是利用人工智能技术实现与真人直播形象的1:1克隆&#xff0c;即克隆出一个数字化的你自己&#xff0c;包括你的形象、表情、动作和声音都会被克隆下来&#xff0c;让你能够拥有接近真人的表现力。 1.首先您需要独立部署青否数字人SaaS系统&#…

Opencv入门6(读取彩色视频并转换为对数极坐标视频)

源码如下&#xff1a; #include <opencv2/opencv.hpp> #include <iostream> int main(int argc, char* argv[]) { cv::namedWindow("Example2_11", cv::WINDOW_AUTOSIZE); cv::namedWindow("Log_Polar", cv::WINDOW_AUTOSIZE); c…

2023 英特尔On技术创新大会直播 |我感受到的“芯”魅力

文章目录 每日一句正能量前言AI时代&#xff0c;云与PC结合为用户带来更好体验全新处理器&#xff0c;首次引入针对人工智能加速的NPU大模型时代&#xff0c;软硬结合带来更好训练成果后记 每日一句正能量 成长是一条必走的路路上我们伤痛在所难免。 前言 在2023年的英特尔On技…

【LeetCode刷题笔记(9-1)】【Python】【无重复字符的最长子串】【滑动窗口】【中等】

文章目录 引言无重复字符的最长子串题目描述提示 解决方案1&#xff1a;【滑动窗口】结束语 无重复字符的最长子串 引言 编写通过所有测试案例的代码并不简单&#xff0c;通常需要深思熟虑和理性分析。虽然这些代码能够通过所有的测试案例&#xff0c;但如果不了解代码背后的思…

mysql:查看线程缓存中的线程数量

使用命令show global status like Threads_cached;可以查看线程缓存中的线程数量。 例如&#xff0c;查询线程缓存中的线程数量如下&#xff1a; 然后启动应用程序&#xff0c;使用连接&#xff0c;查询如下&#xff1a; 由查询结果可以看到&#xff0c;线程缓存中的线程数量…

【算法系列篇】递归、搜索和回溯(四)

文章目录 前言什么是决策树1. 全排列1.1 题目要求1.2 做题思路1.3 代码实现 2. 子集2.1 题目要求2.2 做题思路2.3 代码实现 3. 找出所有子集的异或总和再求和3.1 题目要求3.2 做题思路3.3 代码实现 4. 全排列II4.1 题目要求4.2 做题思路4.3 代码实现 前言 前面我们通过几个题目…

独立站退款率太高会怎么样?如何解决独立站退款纠纷?——站斧浏览器

独立站退款率太高会怎么样&#xff1f; 当独立站的退款率过高时&#xff0c;可能会对卖家和平台产生一些负面影响&#xff1a; 信誉受损&#xff1a;退款率过高可能会导致卖家的信誉受损。买家在购物时通常倾向于选择评价好的卖家&#xff0c;高退款率可能会让卖家的评价下降…

在vue中通过js动态绘制table,并且合并连续相同内容的行,支持点击编辑单元格内容

首先是vue代码 <template><div id"body-container"style"position: absolute"><div class"box-container"><div class"lsb-table-box" ><div class"table-container" id"lsb-table"&…

PyTorch深度学习实战(26)——卷积自编码器(Convolutional Autoencoder)

PyTorch深度学习实战&#xff08;26&#xff09;——卷积自编码器 0. 前言1. 卷积自编码器2. 使用 t-SNE 对相似图像进行分组小结系列链接 0. 前言 我们已经学习了自编码器 (AutoEncoder) 的原理&#xff0c;并使用 PyTorch 搭建了全连接自编码器&#xff0c;但我们使用的数据…

node.js mongoose middleware

目录 官方文档 简介 定义模型 注册中间件 创建doc实例&#xff0c;并进行增删改查 方法名和注册的中间件名相匹配 执行结果 分析 错误处理中间件 手动抛出错误 注意点 官方文档 Mongoose v8.0.3: Middleware 简介 在mongoose中&#xff0c;中间件是一种允许在执…

vue的自定义指令注册使用

目录 分类 局部注册 全局注册 使用例子 分类 自定义指令的注册分为局部注册和全局注册 局部注册是在某个组件内注册的指令&#xff0c;只能在这个组件内使用 全局注册是在main.js中注册的指令在任何组件内都可以使用&#xff0c;指令在使用时不论是全局还是局部注册的&am…

机器学习 | 贝叶斯方法

不同于KNN最近邻算法的空间思维&#xff0c;线性算法的线性思维&#xff0c;决策树算法的树状思维&#xff0c;神经网络的网状思维&#xff0c;SVM的升维思维。 贝叶斯方法强调的是 先后的因果思维。 监督式模型分为判别式模型和生成式模型。 判别模型和生成模型的区别&#xf…

Spring MVC框架支持RESTful,设计URL时可以使用{自定义名称}的占位符@Get(“/{id:[0-9]+}/delete“)

背景&#xff1a;在开发实践中&#xff0c;如果没有明确的规定URL&#xff0c;可以参考&#xff1a; 传统接口 获取数据列表,固定接口路径&#xff1a;/数据类型的复数 例如&#xff1a;/albums/select RESTful接口 - 根据ID获取某条数据&#xff1a;/数据类型的复数/{id} - 例…

智能化物联网(IoT):发展、问题与未来前景

导言 智能化物联网&#xff08;IoT&#xff09;作为信息技术领域的一项核心技术&#xff0c;正在深刻改变人们的生活和工作方式。本文将深入研究IoT的发展过程、遇到的问题及解决过程、未来的可用范围&#xff0c;以及在各国的应用和未来的研究趋势。探讨在哪些方面能够取得胜利…