day35|1005.K次取反后最大化的数组和 134. 加油站135. 分发糖果

news2024/11/16 15:46:00

文章目录

  • python语法记录 sort
    • 格式
  • 1005.K次取反后最大化的数组和
    • 思路
    • 方法一
    • 方法二 按照绝对值排序 教程
            • 🎈✨ 背住 按照绝对值进行降序排序的语法是:
  • 134. 加油站
    • 思路
    • 方法一 教程解法
    • 方法二 暴力求解
  • 135. 分发糖果
    • 思路
    • 方法一
  • 总结


python语法记录 sort

link

格式

列表为A
A.sort(cmp, key, reverse)A = sorted(A, cmp, key, reverse)是等价的

  • 其中cmp表示排序时进行比较的函数【一般不用,是高级用法的范畴,自定义函数】
  • key为函数,指定取待排序元素的哪一项进行排序。可以指定一个函数或者lambda函数
    • 例如key = lambda x: x[ 2 ] 就表示用A的元素的第二个内容进行排序
      在这里插入图片描述
    • 例如key = lambda x : abs(s)就表示用A中的元素的abs进行排序
  • reverse表示是按照正序还是反序
    补充:
  1. 多级排序:先照着第三个元素内容排序,再是第二个

1005.K次取反后最大化的数组和

在这里插入图片描述

思路

这题很简单的,但是我没有想出来,可能今天过于焦虑紧张了
总体思路:两步贪心,先给nums sort一下【🎈✨按照绝对值进行排序

  1. 对于负数全部进行取反
  2. 如果多到k,对于全是非负数的nums里面的最小值进行取反(如果k为奇数,因为偶数情况相当于没变)

方法一

下面是自己写的,但是两次sort,因为没有按照绝对值进行排序降序

class Solution(object):
    def largestSumAfterKNegations(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: int
        """

        nums = sorted(nums)
        for i in range(0,len(nums)-1):
            if nums[i] < 0 and k > 0:
                k -= 1
                nums[i] = -nums[i]
            elif nums[i] >= 0: break
        nums = sorted(nums)#再排序一次
        if k%2 == 1: nums[0] = -nums[0]
        return sum(nums)

方法二 按照绝对值排序 教程

🎈✨ 背住 按照绝对值进行降序排序的语法是:

sorted(nums, key=lambda x: abs(x), reverse=True) 或者nums.sort( key=lambda x: abs(x), reverse=True)

class Solution(object):
    def largestSumAfterKNegations(self, nums,K):
        """
        :type nums: List[int]
        :type k: int
        :rtype: int
        """

        A = sorted(nums, key=lambda x: abs(x), reverse=True)  # 第一步:按照绝对值降序排序数组A
        for i in range(len(A)):  # 第二步:执行K次取反操作
            if A[i] < 0 and K > 0:
                A[i] *= -1
                K -= 1

        if K % 2 == 1:  # 第三步:如果K还有剩余次数,将绝对值最小的元素取反
            A[-1] *= -1

        result = sum(A)  # 第四步:计算数组A的元素和
        return result

134. 加油站

在这里插入图片描述

思路

因为题目说了有唯一解,所以可以使用暴力求解的方法
贪心算法(方法二):方法一就不用看了
总体思路:每个加油站gas[i]-cost[i]都有剩余量,如果从起始位置累加剩余量小于0的话,说明那一天不行,断油了,从i+1开始作为起始位置,再来绕圈累加;
在这里插入图片描述
为什么是从i+1开始,有没有可能在预先定义的起始位置和i之间有一个合适的呢?教程方法二后段也给出了解释

方法一 教程解法

重新做,我没咋记住

class Solution(object):
    def canCompleteCircuit(self, gas, cost):
        """
        :type gas: List[int]
        :type cost: List[int]
        :rtype: int
        """
        if sum(gas) < sum(cost): return -1
        start = 0
        res = 0
        for i in range(0,len(cost)):
            res += gas[i] - cost[i]
            if res < 0 :
                start = i+1
                res = 0
        return start

方法二 暴力求解

就是将每个为起始位置的都遍历一遍,看看中间是否会有断油的情况
trick💘
循环index的写法:index = (i + 1) % len(cost)
下面的写法超时了

class Solution(object):
    def canCompleteCircuit(self, gas, cost):
        """
        :type gas: List[int]
        :type cost: List[int]
        :rtype: int
        """

        for i in range(len(cost)):
            res = gas[i] - cost[i]# 起始点的剩余量
            next_index = (i+1) % len(gas)

            while res > 0 and next_index != i:#如果没有断油,并且没有回到起始点
                res += gas[next_index] - cost[next_index]
                next_index = (next_index+1) % len(gas)      
            if res >= 0 and next_index == i:
                return i
        return -1

135. 分发糖果

在这里插入图片描述

思路

这道题目一定是要确定一边之后,再确定另一边,例如比较每一个孩子的左边,然后再比较右边,如果两边一起考虑一定会顾此失彼
首先保证右边的孩子大于左边孩子的情况:从前往后遍历
左边的孩子大于右边的孩子的情况:从后往前遍历【为什么不能从后往前遍历看教程】
具体操作:注意第二个情况需要将第一个情况包含进去,取一个max

方法一

class Solution(object):
    def candy(self, ratings):
        """
        :type ratings: List[int]
        :rtype: int
        """
        candy = [1] * len(ratings)
        for i in range(1,len(ratings)):
            if ratings[i] > ratings[i-1]:
                candy[i] = candy[i-1] + 1
        for i in range(len(ratings)-2,-1,-1):
            if ratings[i] > ratings[i+1]:
                candy[i] = max(candy[i],candy[i+1]+1)
        return sum(candy)

总结

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【AI大模型】Transformers大模型库(七):单机多卡推理之device_map

目录​​​​​​​ 一、引言 二、单机多卡推理之device_map 2.1 概述 2.2 自动配置&#xff0c;如device_map"auto" 2.3 手动配置&#xff0c;如device_map"cuda:1" 三、总结 一、引言 这里的Transformers指的是huggingface开发的大模型库&#x…

MapTR代码复现-nucenes数据集

前言 本节将对环视车道线MapTR算法进行复现&#xff0c;使用nuscenes-mini数据集&#xff01; 一、环境配置 1、基础环境&#xff1a; ubuntu20.04&#xff0c;pytorch1.10.0&#xff0c;python3.8&#xff0c;cuda11.3 2、源码下载 下载地址&#xff1a; git clone http…

基础IO(下)

基础IO 1. 磁盘1.1 磁盘的物理结构1.2 磁盘的逻辑抽象结构 2. 理解文件系统2.1 前言2.2 文件系统2.3 文件的新建和删除2.4 文件的查找2.5 理解软硬链接 3. 动态库和静态库3.1 生成静态库3.2 生成动态库3.3 动态库加载 实际上&#xff0c;大部分文件都不是被打开的&#xff08;当…

pikachu靶场通关全流程

目录 暴力破解&#xff1a; 1.基于表单的暴力破解&#xff1a; 2.验证码绕过(on server)&#xff1a; 3.验证码绕过(on client)&#xff1a; token防爆破&#xff1a; XSS&#xff1a; 1.反射型xss(get)&#xff1a; 2.反射性xss(post)&#xff1a; 3.存储型xss&#…

一道初中一年级几何题解析

来看一个初中一年级的几何题目&#xff1a; 直接看第三问。 拿到题后直接解的话就是在 BC 上截取 BP 等于 CE&#xff0c;就直接得出 PBD 和 ECD 全等&#xff0c;加上角 EDF 等于 45 度&#xff0c;就能得到角 EDF 等于角 PDF&#xff0c;于是 PDF 与 EDF 全等&#xff0c;…

自定义组件——ABManager(AB包管理器)

需求描述 在Unity3D引擎中&#xff0c;AB包作为常用的游戏资源存储格式之一。而对于资源管理我们就不得不谈到集中管理的优势了&#xff0c;通过统一的接口加载和卸载AB包及其中的资源将进一步提升我们的编程效率。本文将围绕这个需求进行尝试。 功能描述 1. AB包的加载包括同…

代码随想录算法训练营第五十五 | ● 583. 两个字符串的删除操作 ● 72. 编辑距离

583. 两个字符串的删除操作 https://programmercarl.com/0583.%E4%B8%A4%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E5%88%A0%E9%99%A4%E6%93%8D%E4%BD%9C.html class Solution { public:int minDistance(string word1, string word2) {vector<vector<int>> d…

遇到的状态308问题

前端用的vue.config.js做的代理,请求后端的地址https://n6118lr7-10010.usw3.devtunnels.ms 在请求的时候会308 是因为本地是http而请求地址是https 前端代理允许https接口代理即可

电脑缺失d3dx9_43.dll是怎么回事,总结5种实测有效的解决方法

电脑在使用过程中偶尔会遇到一些问题&#xff0c;其中之一就是缺失d3dx9_43.dll文件。那么&#xff0c;电脑缺失d3dx9_43.dll​是怎么回事呢&#xff1f;本文将从多个方面进行详细描述&#xff0c;帮助大家更好地了解这个问题。 一&#xff0c;d3dx9_43.dll文件的概述 d3dx9_4…

Python中的钩子函数(hooks)介绍使用

什么是hook&#xff1f; 钩子函数&#xff0c;顾名思义&#xff0c;就是把我们自己实现的自定义函数在某一时刻挂接到目标挂载点上去执行。 1. hook函数&#xff0c;就是我们自己实现的函数&#xff0c;函数类型与挂载点匹配&#xff08;返回值&#xff0c;参数列表&#xff0…

virtual box安装invalid installation directory

问题原因 看官方文档Chapter 2. Installation Details 第2.1.2所示&#xff0c;安装目录需要满足两个条件&#xff1a; 一是&#xff1a;需要安装目录的所有父目录都要满足以下访问控制条件 Users S-1-5-32-545:(OI)(CI)(RX) Users S-1-5-32-545…

添加L1/L2损失函数,以及AttributeError: ‘NoneType‘ object has no attribute ‘data‘

添加L1/L2损失函数&#xff0c;以及解决报错 1.添加L1 loss2.添加L2 loss3.代码报错&#xff1a;AttributeError: NoneType object has no attribute data 1.添加L1 loss # 方式1&#xff1a;添加到损失函数中 def l1_regularization(model, l1_alpha):l1_loss []for module …

健康节能台灯的设计电子实践

1.1 功能描述 根据主要功能要求&#xff0c;该设计利用 51 单片机实现了电子时钟、温度的显示以 及整点报时等功能。具体可分为一下几种&#xff1a; 1) 显示当前的日期及时间&#xff0c;24 时制的时、分、秒&#xff1b; 2) 可调节时间&#xff1b; 3) 整点报时并响铃。 4) 能…

SpringCloud微服务架构(eureka、nacos、ribbon、feign、gateway等组件的详细介绍和使用)

一、微服务演变 1、单体架构&#xff08;Monolithic Architecture&#xff09; 是一种传统的软件架构模式&#xff0c;应用程序的所有功能和组件都集中在一个单一的应用中。 在单体架构中&#xff0c;应用程序通常由一个大型的、单一的代码库组成&#xff0c;其中包含了所有…

C/C++ 进阶(6)红黑树

个人主页&#xff1a;仍有未知等待探索-CSDN博客 专题分栏&#xff1a;C 目录 一、概念 性质 二、操作 插入 情况一&#xff1a;cur为红、p为红、g为黑&#xff0c;如果u存在且为红 步骤&#xff1a; 情况二&#xff1a;cur为红、p为红、g为黑&#xff0c;如果u不存在或…

京东网页html+css简单制作1(附带源码和素材)

一.代码效果展示 代码html骨架结构分为头部top,颈部banner&#xff0c;中间部分main,腿部fortet-image,尾部fortter&#xff0c;五部分组成&#xff0c;从上至下&#xff0c;从左到右结构。&#xff08;总体因为没设计版心&#xff0c;所以位置比较乱&#xff09; 其中中部mai…

迷宫最短路径求解--c++

【代码】 #include<iostream> #include<queue> #include<stack> using namespace std; #define ROW 8 #define COL 8 //测试迷宫数据 int maze[ROW][COL] {{0,0,0,1,0,0,0,0},{0,1,0,1,0,1,0,1},{0,1,0,0,0,1,0,1},{0,1,0,1,1,1,0,1},{0,1,0,1,1,0,0,0},{0…

第一百零四节 Java面向对象设计 - Java内部类成员

Java面向对象设计 - Java内部类成员 内部类可以访问其所有实例成员&#xff0c;实例字段和其封闭类的实例方法。 class Outer {private int value 2014;public class Inner {public void printValue() {System.out.println("Inner: Value " value);}} // Inner …

这三款思维导图工具,真的很好用

XMIND XMIND是优秀的国产思维导图和头脑风暴软件&#xff0c;非常符合国人的使用要求&#xff0c;旨在帮助用户理清思路、捕捉创意&#xff0c;并提高工作和生活效率。支持Linux、IOS、Android、MAC平台。 提供了非常多精美的结构图&#xff0c;例如鱼骨图、逻辑图、括号图、树…

Django DeleteView视图

Django 的 DeleteView 是一个基于类的视图&#xff0c;用于处理对象的删除操作。 1&#xff0c;添加视图函数 Test/app3/views.py from django.shortcuts import render# Create your views here. from .models import Bookfrom django.views.generic import ListView class B…