Python解力扣算法题(七)(详解)

  1. 题目1:创建目标数组.给你两个整数数组 nums 和 index。你需要按照以下规则创建目标数组: # 目标数组 target 最初为空。 # 按从左到右的顺序依次读取 nums[i] 和 index[i],在 target 数组中的下标 index[i] 处插入值 nums[i] 。 # 重复上一步,直到在 nums 和 index 中都没有要读取的元素。 # 请你返回目标数组。 # 题目保证数字插入位置总是存在。

    • 解释:给定两个整数数组numsindex,我们需要生成一个目标数组target。这个数组开始为空。我们按顺序将nums[i]插入到targetindex[i]位置,直到遍历完所有元素。
    • 题解
      def createTargetArray(nums, index):target = []  # 初始化空目标数组for i in range(len(index)):  # 遍历索引数组target.insert(index[i], nums[i])  # 在指定位置插入相应的值return target  # 返回生成的目标数组# 测试函数
      print(createTargetArray([0, 1, 2, 3, 4], [0, 1, 2, 2, 1]))
      
  2. 题目2:求步数

    给你一个非负整数 num ,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。
    • 解释:给定一个非负整数num,计算将其变为0所需的步数。如果当前数字是偶数,则将其除以2;如果是奇数,则减去1。
    • def numberOfSteps(num):count = 0  # 步数计数器while num != 0:  # 当num不为0时if num % 2 == 0:  # 如果是偶数num = num / 2  # 除以2else:  # 如果是奇数num = num - 1  # 减去1count += 1  # 步数加1return count  # 返回步数# 测试函数
      print(numberOfSteps(14))
      
  3. 题目3:检查整数关系

    给你一个整数数组 arr,请你检查是否存在两个整数 N 和 M,满足 N 是 M 的两倍(即,N = 2 * M)。
    • 解释:给定一个整数数组arr,检查是否存在两个整数N和M,使得N是M的两倍(即N=2×M)。
    • 题解
      def checkIfExist(arr):for i in range(len(arr)):  # 遍历每个元素for j in range(i + 1, len(arr)):  # 遍历后续元素if arr[j] == arr[i] * 2 or arr[i] == arr[j] * 2:  # 检查两倍关系return True  # 若存在,返回Truereturn False  # 不存在,则返回False# 测试函数
      print(checkIfExist([-10, 12, -20, -8, 15]))
      
  4. 题目4:统计小于当前数字的数

    给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。
    # 换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] < nums[i] 。
    # 以数组形式返回答案。
    • 解释:对于每个元素nums[i],统计数组中比它小的所有数字的数量。有效的j的数量满足j≠i且nums[j]<nums[i]。
    • 题解
      def smallerNumbersThanCurrent(nums):list1 = []  # 初始化结果列表for i in range(len(nums)):  # 遍历每个元素count = 0  # 小于当前数字的计数器for j in range(len(nums)):  # 检查所有元素if nums[j] < nums[i]:  # 如果小于当前元素count += 1  # 计数加1list1.append(count)  # 将计数添加到结果列表return list1  # 返回结果列表# 测试函数
      print(smallerNumbersThanCurrent([8, 1, 2, 2, 3]))
      
  5. 题目5:生成奇数次字符的字符串

    给你一个整数 n,请你返回一个含 n 个字符的字符串,其中每种字符在该字符串中都恰好出现 奇数次 。
    # 返回的字符串必须只含小写英文字母。如果存在多个满足题目要求的字符串,则返回其中任意一个即可。
    • 解释:给定一个整数n,生成一个长度为n的字符串,使得每种字符在字符串中恰好出现奇数次。返回的字符串必须只含小写英文字母。
    • 题解
      def generateTheString(n):if n % 2 == 0:  # 如果n为偶数return "a" * (n - 1) + "b"  # 返回n-1个'a'和1个'b'else:if n == 1:  # 特殊情况n为1return "a"  # 返回'a'else:return "a" * (n - 2) + "b" + "c"  # 返回n-2个'a',1个'b'和1个'c'# 测试函数
      print(generateTheString(4))
      
  6. 题目6:计算最小初始值

    给你一个整数数组 nums 。你可以选定任意的 正数 startValue 作为初始值。
    # 你需要从左到右遍历 nums 数组,并将 startValue 依次累加上 nums 数组中的值。
    # 请你在确保累加和始终大于等于 1 的前提下,选出一个最小的 正数 作为 startValue 。
    • 解释:给定整数数组nums,选择一个正数startValue作为初始值,确保从左到右累加nums数组的值始终大于等于1,找到最小的正数作为startValue
    • 题解
      def minStartValue(nums):i = 1  # 从1开始while True:  # 循环直到找到合适的startValuesum = i  # 初始化sum为startValuefor j in range(len(nums)):  # 遍历数组sum += nums[j]  # 累加if sum < 1:  # 如果累加和小于1break  # 退出当前循环if j == len(nums) - 1:  # 如果到达末尾return i  # 返回startValuei += 1  # 增加startValue# 测试函数
      print(minStartValue([-3, 2, -3, 4, 2]))
      
  7. 题目7:统计最多糖果的孩子

    有 n 个有糖果的孩子。给你一个数组 candies,其中 candies[i] 代表第 i 个孩子拥有的糖果数目,和一个整数 extraCandies 表示你所有的额外糖果的数量。
    # 返回一个长度为 n 的布尔数组 result,如果把所有的 extraCandies 给第 i 个孩子之后,他会拥有所有孩子中 最多 的糖果,那么 result[i] 为 true,否则为 false。
    # 注意,允许有多个孩子同时拥有 最多 的糖果数目。
    • 解释:给定一个数组candies和整数extraCandies,返回一个布尔数组,表示每个孩子在获得extraCandies后能否拥有最多的糖果。
    • 题解
      def kidsWithCandies(candies, extraCandies):result = []  # 初始化结果列表max_candies = max(candies)  # 找到当前最多的糖果数for i in candies:  # 遍历每个孩子的糖果数if i + extraCandies >= max_candies:  # 判断是否能拥有最多的糖果result.append(True)  # 能则加入Trueelse:result.append(False)  # 否则加入Falsereturn result  # 返回结果列表# 测试函数
      print(kidsWithCandies([4, 2, 1, 1, 2], 1))
      
  8. 题目8:寻找旅行终点站

    给你一份旅游线路图,该线路图中的旅行线路用数组 paths 表示,其中 paths[i] = [cityAi, cityBi] 表示该线路将会从 cityAi 直接前往 cityBi 。
    # 请你找出这次旅行的终点站,即没有任何可以通往其他城市的线路的城市。
    # 题目数据保证线路图会形成一条不存在循环的线路,因此恰有一个旅行终点站。
    • 解释:给定旅行线路图,用数组paths表示,找出没有可以通往其他城市的线路的城市,即旅行的终点站。
    • 题解
      def destCity(paths):# 使用集合来存储所有出发城市start_cities = set(path[0] for path in paths)for path in paths:  # 遍历每条路径if path[1] not in start_cities:  # 如果目的城市不在出发城市中return path[1]  # 返回该城市作为终点站# 测试函数
      print(destCity([["B", "C"], ["D", "B"], ["C", "A"]]))
      
  9. 题目9:查询时间内做作业的学生人数

    给你两个整数数组 startTime(开始时间)和 endTime(结束时间),并指定一个整数 queryTime 作为查询时间。
    # 已知,第 i 名学生在 startTime[i] 时开始写作业并于 endTime[i] 时完成作业。
    # 请返回在查询时间 queryTime 时正在做作业的学生人数。形式上,返回能够使 queryTime 处于区间 [startTime[i], endTime[i]](含)的学生人数。
    • 解释:给定开始时间和结束时间数组,查询某个时间点有多少学生在做作业。
    • 题解
      def busyStudent(startTime, endTime, queryTime):count = 0  # 学生计数器for i in range(len(startTime)):  # 遍历每个学生if startTime[i] <= queryTime <= endTime[i]:  # 判断查询时间是否在作业时间范围内count += 1  # 在范围内则计数加1return count  # 返回计数结果# 测试函数
      print(busyStudent([9, 8, 7, 6, 5, 4, 3, 2, 1], [10, 10, 10, 10, 10, 10, 10, 10, 10], 5))
      
  10. 题目10:计算动态和

    给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。
    # 请返回 nums 的动态和。
    • 解释:给定数组nums,计算其动态和,即每个位置的累计和。
    • 题解
      def runningSum(nums):list1 = []  # 初始化结果列表sum = 0  # 累计和初始化for i in range(len(nums)):  # 遍历每个元素sum += nums[i]  # 累加list1.append(sum)  # 将当前的累加和加入结果列表return list1  # 返回结果列表# 测试函数
      print(runningSum([3, 1, 2, 10, 1]))
      
  11. 题目11:最大数和次大数的乘积

    找出最大数和次大数分别减一后相乘
    • 解释:找出数组中最大值和次大值减一后的乘积。计算公式为: (max−1)×(second max−1)
    • 题解
      def maxProduct(nums):nums.sort()  # 排序return (nums[-1] - 1) * (nums[-2] - 1)  # 返回乘积# 测试函数
      print(maxProduct([3, 4, 5, 2]))
      
  12. 题目12:好数对计数

    给你一个整数数组 nums 。
    # 如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。返回好数对的数目。
    • 解释:返回数组中满足条件的好数对的数量。好数对的定义是(i,j)满足nums[i]=nums[j]且i<j。
    • 题解
      def numIdenticalPairs(nums):count = 0  # 好数对计数器for i in range(len(nums)):for j in range(i + 1, len(nums)):if nums[i] == nums[j]:  # 检查是否为好数对count += 1  # 计数加1return count  # 返回好数对数量# 测试函数
      print(numIdenticalPairs([1, 1, 1, 1]))
      
  13. 题目13:折扣后的价格

    给你一个数组 prices ,其中 prices[i] 是商店里第 i 件商品的价格。
    # 商店里正在进行促销活动,如果你要买第 i 件商品,那么你可以得到与 prices[j] 相等的折扣,
    # 其中 j 是满足 j > i 且 prices[j] <= prices[i] 的 最小下标 ,如果没有满足条件的 j ,你将没有任何折扣。
    # 请你返回一个数组,数组中第 i 个元素是折扣后你购买商品 i 最终需要支付的价格。
    • 解释:根据给定价格计算折扣后的价格,如果存在满足条件的j,则折扣为prices[j],否则不折扣。
    • 题解
      def finalPrices(prices):list1 = []  # 初始化结果列表for i in range(len(prices)):discount = 0  # 折扣初始化为0for j in range(i + 1, len(prices)):  # 查找后续商品if prices[j] <= prices[i]:  # 若找到折扣discount = prices[j]  # 设置折扣break  # 找到后退出循环list1.append(prices[i] - discount)  # 计算最终价格return list1  # 返回结果列表# 测试函数
      print(finalPrices([8, 4, 6, 2, 3]))
      
  14. 题目14:等差数列检查

    给你一个数字数组 arr 。
    # 如果一个数列中,任意相邻两项的差总等于同一个常数,那么这个数列就称为 等差数列 。
    # 如果可以重新排列数组形成等差数列,请返回 true ;否则,返回 false 。
    • 解释:判断数组是否能够重新排列为等差数列,如果任意相邻两项的差总等于同一个常数,则称为等差数列。
    • 题解
      def canMakeArithmeticProgression(arr):arr.sort()  # 排序ad = arr[1] - arr[0]  # 计算公差for i in range(len(arr) - 1):if arr[i + 1] - arr[i] != ad:  # 检查公差return False  # 不符合则返回Falsereturn True  # 若符合则返回True# 测试函数
      print(canMakeArithmeticProgression([3, 4, 1]))
      
  15. 题目15:重排列字符串

    给你一个字符串 s 和一个 长度相同 的整数数组 indices 。
    # 请你重新排列字符串 s ,其中第 i 个字符需要移动到 indices[i] 指示的位置。
    # 返回重新排列后的字符串。
    • 解释:根据数组indices重新排列字符串s,使得第i个字符移动到indices[i]指定的位置。
    • 题解
      def restoreString(s, indices):list1 = [""] * len(s)  # 初始化空列表for i in range(len(s)):  # 遍历字符串list1[indices[i]] = s[i]  # 按照指定位置重新排列return ''.join(list1)  # 返回重新排列后的字符串# 测试函数
      print(restoreString("codeleet", [4, 5, 6, 7, 0, 2, 1, 3]))

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

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

相关文章

物联网低功耗广域网LoRa开发(二):LoRa开发环境搭建及驱动移植

一、STM32CubeMX加载固件库 将F0固件库添加进来 二、IAR介绍、安装及快捷操作 &#xff08;一&#xff09;IAR介绍 1、简介 C/C编译器和调试器 集成开发环境(IDE) 实时操作系统和中间件 开发套件 硬件仿真器以及状态机建模工具2、IAR与Keil对比 MDK默认只创建工程&#xf…

RK3568平台开发系列讲解(设备树篇)device_node 转换成 platform_device

🚀返回专栏总目录 文章目录 一、DTB转换规则二、转换源码分析沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍通过设备树 device_node 转换成 platform_device 一、DTB转换规则 device 部分是用 platform_device 结构体来描述硬件资源的, 所以内核最终会…

深入理解 source 和 sh、bash 的区别

1 引言 在日常使用 Linux 的过程中&#xff0c;脚本的执行是不可避免的需求之一&#xff0c;而 source、sh、bash 等命令则是执行脚本的常用方式。尽管这些命令都能运行脚本&#xff0c;但它们之间的执行方式和效果却有着显著的区别。这些区别可能会影响到脚本的环境变量、工作…

基于Java Springboot鲜花商城系统

一、作品包含 源码数据库设计文档PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA 数据库&#xff1a;MySQL8.0 …

413: Quick Sort

解法&#xff1a; #include <bits/stdc.h> using namespace std; const int N1e55; int a[N]; int n;int main(int argc, char** argv) {cin>>n;for (int i0;i<n;i) cin>>a[i];sort(a,an);for (int i0;i<n;i) cout<<a[i]<<" "…

通过轻易云高效实现ERP数据无缝传输

高效集成领星ERP数据至金蝶云星空 领星ERP数据集成到金蝶云星空&#xff1a;发货结算报告对接销售出库单&#xff08;日本站&#xff09; 在企业的日常运营中&#xff0c;数据的高效流动和准确处理至关重要。本文将分享一个实际运行的系统对接集成案例&#xff1a;如何将领星E…

在 WSL2 Ubuntu22.04环境安装 MySQL

一、安装步骤 1.1. 确保/etc/apt/sources.list源配置文件一切正常 sudo nano /etc/apt/sources.list需要包括以下内容 deb http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu/ focal main restricted…

通信塔台、网点、线路数据

通信塔台&#xff1a; 数量&#xff1a; 通信电缆&#xff1a; 通信网点&#xff1a;

C#桌面应用制作计算器

C#桌面应用制作简易计算器&#xff0c;可实现数字之间的加减乘除、AC按键清屏、Del按键清除末尾数字、/-按键取数字相反数、%按键使数字缩小100倍、按键显示运算结果等...... 页面实现效果 功能实现 布局 计算器主体使用Panel容器&#xff0c;然后将button控件排列放置Pane…

【C++进阶】C++11 -- 智能指针

【C进阶】C11 -- 智能指针 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;C&#x1f96d; &#x1f33c;文章目录&#x1f33c; 1. 智能指针的使用场景分析 2. RAII和智能指针的设计思路 3. C标准库智能指针的使用 4. 智能指针的原…

web——upload-labs——第一关

今天新开一个upload-labs的靶场&#xff0c;文件上传&#xff0c;加油&#xff01;&#xff01;&#xff01;&#xff01; 先讲讲文件上传 文件上传&#xff1a;在Web开发中&#xff0c;文件上传功能是一个允许用户将文件&#xff08;例如图片、文档&#xff09;上传到服务器…

提升企业库存管理效率:聚水潭与金蝶云星空集成方案

查询聚水潭库存生成金蝶物料盘点作业 在企业的日常运营中&#xff0c;库存管理和物料盘点是至关重要的环节。为了实现高效、准确的数据对接&#xff0c;我们采用了轻易云数据集成平台&#xff0c;将聚水潭的库存数据无缝集成到金蝶云星空系统中。本案例将详细介绍如何通过API接…

MacOS下,如何在Safari浏览器中打开或关闭页面中的图片文字翻译功能

MacOS下&#xff0c;如何在Safari浏览器中打开或关闭页面中的图片文字翻译功能 在Mac上的Safari浏览器中&#xff0c;可以通过实况文本功能来实现图片中的文本翻译。关闭步骤具体步骤如下&#xff1a; 在浏览器地址栏&#xff0c;鼠标右击翻译按钮&#xff0c;然后点击“首选…

使用 PyAnsys 在 Ansys 随机振动分析中检索螺栓连接中的力和应力

介绍 随机振动模拟通常用于评估组件承受运输过程中振动的能力。随机振动分析利用先前模态分析的频率和模式内容对通过功率谱密度 (PSD) 负载定义的频谱和功率内容进行线性叠加。在大多数装配模型中&#xff0c;螺栓连接&#xff08;由求解器变为 BEAM188 元素&#xff09;通常…

使用Axios函数库进行网络请求的使用指南

目录 前言1. 什么是Axios2. Axios的引入方式2.1 通过CDN直接引入2.2 在模块化项目中引入 3. 使用Axios发送请求3.1 GET请求3.2 POST请求 4. Axios请求方式别名5. 使用Axios创建实例5.1 创建Axios实例5.2 使用实例发送请求 6. 使用async/await简化异步请求6.1 获取所有文章数据6…

让你的 环境变量 更合理

PATH PATH 环境变量由 shell 或 libc 读取来查找并执行程序&#xff0c;这就是当在终端中键入 ls 时 shell 可以找到 /bin/ls 的方式。 在基于 Debian 的桌面系统上&#xff0c;默认 PATH 变量如下所示&#xff1a; PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sb…

vue3中将在线url地址转为图片显示方法教程

vue3中将在线url地址转为图片显示方法教程 转化后&#xff1a; 原来&#xff1a; 代码&#xff1a; <el-table-column label"制单人" align"center"><template #default"scope"><imgv-if"scope.row.maker":src"s…

idea项目运行时 java: 错误: 不支持发行版本 21

java项目运行时&#xff0c;同样的项目别的都是正常运行&#xff0c;单个这个项目一直报 java: 错误: 不支持发行版本 21&#xff0c; 报错的解释 这个错误表明你正在尝试使用Java编译器编译一个类&#xff0c;但是编译器遇到了一个它不支持的版本号&#xff0c;在这个上下文…

Unity图形学之Blend指令

1.渲染流程&#xff1a;Blend 决定了要渲染的像素和Gbuffer里像素到底怎么取舍 2.Blend 公式&#xff1a; 3.factor可以取值的内容有&#xff1a; One 1 Zero :0 SrcColor : 要渲染的像素 SrcAlpha : 要渲染像素的 a 通道。 DstColor &#xff1a; 已经渲染在gbuffer…

打造智能客服知识库,实现高效管理客户服务

引言&#xff1a;在现代社会&#xff0c;企业的成功与否往往取决于其客户服务的质量。好的客户服务不仅能提高客户的满意度&#xff0c;还能推动品牌忠诚度和销售额的增长。而在这个过程中&#xff0c;客服知识库的作用显得尤为重要。本文将深入探讨客服知识库的重要性、构建方…