【经典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.hqwc.cn/news/285238.html

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

相关文章

深度学习笔记_7经典网络模型LSTM解决FashionMNIST分类问题

1、 调用模型库&#xff0c;定义参数&#xff0c;做数据预处理 import numpy as np import torch from torchvision.datasets import FashionMNIST import torchvision.transforms as transforms from torch.utils.data import DataLoader import torch.nn.functional as F im…

Python 爬虫之简单的爬虫(三)

爬取动态网页&#xff08;上&#xff09; 文章目录 爬取动态网页&#xff08;上&#xff09;前言一、大致内容二、基本思路三、代码编写1.引入库2.加载网页数据3.获取指定数据 总结 前言 之前的两篇写的是爬取静态网页的内容&#xff0c;比较简单。接下来呢给大家讲一下如何去…

Linux之FTP 服务器

一、FTP服务器匿名账户服务器配置 1、测试是否已安装vsftp服务器&#xff1a; 2、启动vsftp服务器&#xff1a; 3、修改vsftp主配置文件&#xff0c;允许匿名登录 4、重新启动vsftpd服务,禁用防火墙 5、打开FTP服务的数据文件存放目录/var/ftp&#xff0c;复制若干文件到该目…

智慧养老:创新科技让老年生活更美好

智慧养老&#xff1a;创新科技让老年生活更美好 随着人口老龄化的加剧&#xff0c;智慧养老成为了关注焦点。智慧养老以创新科技为核心&#xff0c;旨在改善老年人的生活品质、促进健康、增强安全感和社会融入感。本文将详细介绍智慧养老的关键技术和应用场景&#xff0c;带您了…

回归预测 | MATLAB实现SABO-LSTM基于减法平均优化器优化长短期记忆神经网络的多输入单输出数据回归预测模型 (多指标,多图)

回归预测 | MATLAB实现SABO-LSTM基于减法平均优化器优化长短期记忆神经网络的多输入单输出数据回归预测模型 &#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现SABO-LSTM基于减法平均优化器优化长短期记忆神经网络的多输入单输出数据回归预测模型 &a…

Xxl-job-admin 数据库使用DM8/达梦改造

Xxl-job 简介 XXL-JOB是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。 XXL-JOB-ADMIN 是针对分布式定时任务管理的Web管理平台&#xff0c;默认使用的数据库是MySQL 8版本。 业务背景 在项目中使用分布式定时任务调度框架:xxl-…

Linux---Ubuntu软件卸载

1. 软件卸载的介绍 Ubuntu软件卸载有两种方式: 离线安装包的卸载(deb 文件格式卸载&#xff09;在线安装包的卸载(apt-get 方式卸载) 2. deb 文件格式卸载 命令格式: sudo dpkg –r 安装包名 -r 选项表示安装的卸载 dpkg 卸载效果图: 3. apt-get 方式卸载 命令格式: …

mybatis.interceptor.exception.SqLValidateException:Ilegal SQL::......

现象&#xff1a;⬇️ 描述&#xff1a;执行 SQL 没问题&#xff0c;应用代码报错 ⬇️ .mybatis.interceptor.exception.SqLValidateException&#xff1a;Ilegal SQL::SELECT voucherNo FROM voucher ORDER BY CAST(SUBSTRING(voucherNo FROM LOCATE(_, voucherNo) 1) AS U…

门控网络简介

门控网络是一种循环神经网络 (RNN)&#xff0c;它使用门来控制信息在时间步之间的流动。门是一种神经网络层&#xff0c;它可以选择性地允许或阻止信息通过。 门控网络的主要优点是它们可以解决传统 RNN 中存在的梯度消失问题。梯度消失是指随着时间步的增加&#xff0c;梯度会…

大模型(LLM)+词槽(slot)构建动态场景多轮对话系统

构建动态场景多轮对话系统 引言 在人工智能和自然语言处理领域&#xff0c;聊天机器人的开发一直是一个热点话题。近年来&#xff0c;随着大型语言模型&#xff08;LLM&#xff09;的进步&#xff0c;构建能够理解和响应各种用户需求的聊天机器人变得更加可行和强大。本文将介…

什么店生意好?C++采集美团商家信息做数据分析

最近遇到几个朋友&#xff0c;想要一起合伙投资一个实体店&#xff0c;不问类型&#xff0c;就看哪类产品相对比较受欢迎。抛除地址位置&#xff0c;租金的影响&#xff0c;我们之谈产品。因此&#xff0c;我熬了几个通宵&#xff0c;写了这么一段爬取美团商家商品信息的数据并…

Idea远程debugger调试

当我们服务部署在服务器上&#xff0c;我们想要像在本地一样debug,就可以使用idea自带的Remote JVM Debug 创建Remote JVM Debug服务器启动jar打断点进入断点 当我们服务部署在服务器上&#xff0c;我们想要像在本地一样debug,就可以使用idea自带的 Remote JVM Debug) 创建Rem…