当前位置: 首页 > news >正文

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

文章目录

  • 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 -= 1nums[i] = -nums[i]elif nums[i] >= 0: breaknums = 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)  # 第一步:按照绝对值降序排序数组Afor i in range(len(A)):  # 第二步:执行K次取反操作if A[i] < 0 and K > 0:A[i] *= -1K -= 1if K % 2 == 1:  # 第三步:如果K还有剩余次数,将绝对值最小的元素取反A[-1] *= -1result = 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 -1start = 0res = 0for i in range(0,len(cost)):res += gas[i] - cost[i]if res < 0 :start = i+1res = 0return 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 ireturn -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] + 1for 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)

总结

相关文章:

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

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

HWA和BSS区别

芯片中的HWA&#xff08;Hardware Accelerator&#xff09;模块功能主要是为了加速雷达信号处理的特定任务。HWA模块在雷达系统中起到关键作用&#xff0c;以下是其主要功能和作用&#xff1a; 信号预处理&#xff1a; 滤波&#xff1a;对接收到的雷达信号进行滤波&#xff0c;…...

【Excel】Excel中将日期格式转换为文本格式,并按日期显示。

【问题需求】 在使用excel进行数据导入的过程中&#xff0c; 有的软件要求日期列必须是文本格式。 但是直接将日期列的格式改为文本后&#xff0c;显示一串数字&#xff0c;而不按日期显示。 进而无法导入使用。 【解决方法】 使用【TXET】函数公式进行处理&#xff0c; 在单…...

物联网学习小记

https://www.cnblogs.com/senior-engineer/p/10045658.html GOSP: 提供类似Qt的API接口&#xff0c;仅需要几百KB的硬件资源&#xff08;比Qt小的多&#xff09;&#xff0c;能运行在Qt不支持的低配置硬件上&#xff08;对Qt生态形成补充&#xff09;&#xff0c;适用于嵌入式…...

代码随想录-Day29

491. 非递减子序列 给你一个整数数组 nums &#xff0c;找出并返回所有该数组中不同的递增子序列&#xff0c;递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素&#xff0c;如出现两个整数相等&#xff0c;也可以视作递增序列的一种特殊情…...

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

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

【Vue】构建vuex-cart模块

说明&#xff1a;既然明确数据要存 vuex&#xff0c;建议分模块存&#xff0c;购物车数据存 cart 模块&#xff0c;将来还会有 user 模块&#xff0c;article 模块… 新建 store/modules/cart.js 挂载到 vuex 仓库上 store/cart.js import Vue from vue import Vuex from vu…...

如何成为嵌入式系统工程师?

各位朋友&#xff0c;如果你们有意向投身于嵌入式开发领域&#xff0c;那么强烈建议你们在软件和硬件两个方面均展开深入且全面的学习。 嵌入式计算机作为嵌入式系统的核心技术支撑&#xff0c;其是直接面向用户、产品以及应用的&#xff0c;无论是软件还是硬件方面都能发挥重要…...

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

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

驱动代码编写(一)

驱动程序的作用 驱动程序是指与硬件设备和操作系统进行通信的软件。它的主要功能有以下几个方面&#xff1a; 提供硬件支持&#xff1a;驱动程序允许操作系统与硬件设备进行通信&#xff0c;以便正确地操作和控制硬件设备。它可以向操作系统提供有关硬件设备的各种信息&#x…...

Prompt-to-Prompt Image Editing with Cross Attention Control

Prompt-to-Prompt Image Editing with Cross Attention Control (P2P) Amir Hertz, Tel Aviv University, ICLR23, Paper, Code 1. 前言 编辑对这些生成模型来说是具有挑战性的&#xff0c;因为编辑技术的一个固有特性是保留大部分原始图像&#xff0c;而在基于文本的模型中…...

实验11 OSPF协议配置

实验11 OSPF协议配置 一、OSPF单区域配置&#xff08;一&#xff09;原理描述&#xff08;二&#xff09;实验目的&#xff08;三&#xff09;实验内容&#xff08;四&#xff09;实验配置&#xff08;五&#xff09;实验步骤 二、OSPF多区域配置&#xff08;一&#xff09;原理…...

ChatGPT-4o, 腾讯元宝,通义千问对比测试中文文化

国内的大模型应用我选择了国内综合实力最强的两个&#xff0c;一个是腾讯元宝&#xff0c;一个是通义千问。其它的豆包&#xff0c;Kimi&#xff0c;文心一言等在某些领域也有强于竞品的表现。 问一个中文文化比较基础的问题,我满以为中文文化chatGPT不如国内的大模型。可事实…...

node.js学习

node.js学习实操及笔记 温故node.js&#xff0c;node.js学习实操过程及笔记~ node.js学习视频node.js官网node.js中文网实操笔记githubcsdn笔记 为什么学node.js 可以让别人访问我们编写的网页为后续的框架学习打下基础&#xff0c;三大框架vue react angular离不开node.js …...

python将一个图片雕刻镂空成二维码

本文使用创作助手。 要将一个图片雕刻镂空成二维码&#xff0c;你可以使用Python中的Pillow库来处理图像&#xff0c;并使用qrcode库来生成二维码。以下是一个示例代码&#xff0c;用于将图片雕刻镂空成二维码&#xff1a; import qrcode from PIL import Image# 打开待处理的…...

OS进程取样器OS Process Sampler执行CMD/Shell命令

Apache JMeter - Users Manual: Component Reference 1.背景 项目上最近需要测试一种很少用到的DICOM协议,但是网上资料很少,基本上可以总结为三种方案: 直接发送TCP 16进制数据包,但是参数化数据准备难度大通过开发封装jar包发送,需要开发组提供通过发送cmd命令给前置机…...

excel两个数据表格,怎样实现筛选的联动?

如图&#xff0c;想要通过处理器或者像素条件进行筛选&#xff0c;形成一个右边图2的对比表&#xff0c;如何实现实现联动显示呢&#xff1f; 这个在excel里可以借用数据透视表切片器来完成。步骤如下&#xff1a; 1.添加表 选中数据区域中任意一个单元格&#xff0c;点击 插…...

python,django好的get和post请求

获得get请求 df request.GET.get("dades")获得post请求 文件settings.py关闭csrf MIDDLEWARE [ ‘django.middleware.security.SecurityMiddleware’, ‘django.contrib.sessions.middleware.SessionMiddleware’, ‘django.middleware.common.CommonMiddleware’…...

volatile的用法

目录 前言 使用volatile的注意事项&#xff1a; 示例&#xff1a; 总结&#xff1a; 前言 在嵌入式C编程中&#xff0c;volatile是一个关键字&#xff0c;它用于告知编译器被修饰的变量可能会在程序的任何地方、任何时候被不可预见的、非程序本身控制的因素所改变。这通常…...

MySQL 与 PostgreSQL 关键对比二(SQL语法)

目录 1 详细示例 1.1自动增量列 1.2 字符串连接 1.3 JSON 支持 2 总结 MySQL 和 PostgreSQL 是两种流行的开源关系数据库管理系统&#xff08;RDBMS&#xff09;。尽管它们在许多方面相似&#xff0c;但在 SQL 语法和功能上存在一些显著差异。 以下SQL语句的执行如果需要开…...

徐州服务器租用该如何维护?

服务器能够帮助企业处理网络上大部分的数据和信息&#xff0c;在互联网行业中起着十分重要的作用&#xff0c;服务器的存在能够保障网站稳定的运行&#xff0c;主要是由内存、硬盘和处理器等组成&#xff0c;服务器除了进行正常的工作运行&#xff0c;还需要定期维护和管理&…...

C++习题精选(4)—— 栈

目录 1. 最小栈2. 栈的压入弹出序列3. 逆波兰表达式求值 1. 最小栈 题目描述&#xff1a;设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素…...

Web前端ES6-ES13笔记合集(下)

#### 五.ES10新特性 ##### 1. Object.fromEntries > Object.fromEntries()方法允许你轻松地将键值对列表转换为对象 js const arr [["name", "kerwin"], ["age", 100]]; console.log(Object.fromEntries(arr))//{name: kerwin, age: 100} …...

我要成为算法高手-双指针篇

目录 什么是双指针?问题1&#xff1a;移动零问题2&#xff1a;复写零问题3&#xff1a;快乐数问题4&#xff1a;盛最多水的容器问题5&#xff1a;有效三角形个数问题6&#xff1a;查找总价格和为目标值的两个商品(两数之和)问题7&#xff1a;三数之和问题8&#xff1a;四数之和…...

Fake news detection: A survey of graph neural network methods

abstract 各种社交网络的出现产生了大量的数据。捕获、区分和过滤真假新闻的有效方法变得越来越重要&#xff0c;特别是在 COVID-19 大流行爆发之后。本研究对假新闻检测系统的图神经网络 (GNN) 的现状和挑战进行了多方面、系统的回顾&#xff0c;并概述了使用 GNN 实现假新闻…...

HCIE认证,这些误区要避开

追求HCIE认证是许多网络工程师提升职业水平的选择之一。 然而&#xff0c;在这条备考之路上&#xff0c;存在不少误解可能会误导你的学习方向或影响你的备考效率。 了解并避开这些常见误区&#xff0c;将帮助你更有效地准备HCIE认证考试。 01 误区一&#xff1a;过分依赖题库 …...

主题切换之CSS文件篇

动态加载CSS: 利用HTML的标签&#xff0c;可以通过JavaScript动态改变其href属性来加载不同的CSS文件。这意味着我们可以在运行时切换整个页面的样式表&#xff0c;从而实现主题的变化。 分离样式: 将不同主题的样式分别放在不同的CSS文件中。例如&#xff0c;default_styles.…...

Vue进阶(八十八)前端测试工具介绍

文章目录 一、前言1.1 引入1.2 基础语法1.2.1 全局函数 describe 和 it1.2.2 断言 expect1.2.3 匹配器1.2.4 snapshot 快照1.2.5 测试用例覆盖率报告1.2.6 React Testing Library render1.2.7 screen1.2.8 查询函数1.2.9 waitFor1.2.10 fireEvent 和 userEvent 二、Jest 基本用…...

【录制,纯正人声】OBS录制软件,音频电流音,杂音解决办法,录制有噪声的解决办法

速度解决的方法 &#xff08;1&#xff09;用RNNoise去除噪声。RNNoise是一个开源的&#xff0c;效果不好的噪声去除器。使用方法就是点击滤镜&#xff0c;然后加噪声抑制RNNoise。【这方法不好用】 &#xff08;2&#xff09;用Krisp(https://krisp.ai/) 去除噪声。这个Kris…...

Django中drf动态过滤查询

Django中drf动态过滤查询 1、page.py 代码: from rest_framework.pagination import PageNumberPaginationclass UserPagination(PageNumberPagination):"""用户分页器"""page_size = 10 # 默认的页面数据数量page_query_param = page # 定…...

安徽 网站建设/sem是什么职业

如果你想使用 BeautifulSoup 来提取这个 HTML 代码中的 元素里面的内容&#xff0c;你可以这样做&#xff1a; 首先&#xff0c;你需要安装 BeautifulSoup 库&#xff1a; pipinstall beautifulsoup4...

新浪sae可以做网站么/北京优化网站公司

一:相关知识 WPF资源系统 1、资源定义 对我们开发有用的东西 都 叫资源 2、程序集资源 XAML-》BAML 寻址系统不同 3、对象资源 程序集资源 添加 引用 Pack URI Pack://application:,/程序集名称;版本号;公钥;component/Images/Logo.png 音视频文件 对象资源 1、保管与引用 保…...

怎么根据已有网站做新网站/百度app下载官方免费下载最新版

转载:http://hi.baidu.com/xyhk5558/item/5a5b706b5f9a3330ac3e83ab 上传漏洞可谓是网站入侵者最喜欢&#xff0c;最乐意的攻击手法&#xff0c;正因如此&#xff0c;程序员对上传文件的扩展名过滤&#xff0c;也是绞尽脑汁&#xff0c;从以前的黑名单过滤&#xff0c;通过判断…...

做网站框架需要什么软件/百度网页版首页

Python知识概括什么是PythonPython的应用是什么为什么要学习PythonPython与其他语言Python难学吗工作前景什么是Python 简介&#xff1a; Python是一种开放源代码&#xff0c;跨平台的通用编程语言。就编程语言而言&#xff0c;它既不是新的&#xff0c;也不是太老。它的开发…...

网站开发有前景吗/nba在线直播免费观看直播

大数据在网易内部的应用丰富多彩&#xff0c;在《让机器读懂用户--大数据中的用户画像》一文中&#xff0c;网易工程师对用户画像进行了较为系统的介绍&#xff0c;并提到用户画像的一个重要作用在于个性化推荐。但企业怎样才能正确认识和利用推荐系统来拓展业务&#xff1f;本…...

备案网站多少钱/qq代刷网站推广免费

WebWork介绍  WebWork是由OpenSymphony组织开发的&#xff0c;致力于组件化和代码重用的拉出式MVC模式J2EE Web框架。WebWork目前最新版本是2.1&#xff0c;现在的WebWork2.x前身是Rickard Oberg开发的WebWork&#xff0c;但现在WebWork已经被拆分成了Xwork1和WebWork2两个项…...