数据结构与算法解题-20240421

ops/2024/9/20 1:22:23/ 标签: log4j, 数据结构, 算法, python

在这里插入图片描述


数据结构算法解题-20240421

  • 一、278. 第一个错误的版本
  • 二、541. 反转字符串 II
  • 三、右旋字符串
  • 四、替换数字
  • 五、977.有序数组的平方

一、278. 第一个错误的版本

简单
你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。
假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。

你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。

示例 1:
输入:n = 5, bad = 4
输出:4
解释:
调用 isBadVersion(3) -> false
调用 isBadVersion(5) -> true
调用 isBadVersion(4) -> true
所以,4 是第一个错误的版本。

示例 2:
输入:n = 1, bad = 1
输出:1

python">class S278:def func(self, n):start = 1end = nwhile start <= end:mid = (start + end) // 2if isBadVersion(mid):# todo 若 mid是错误版本,则最后一个正确版本一定在闭区间 [i, m - 1]end = mid - 1else:# todo 若 mid是正确版本,则首个错误版本一定在闭区间 [m + 1, j]start = mid + 1return start  #todo start 指向首个错误版本,end 指向最后一个正确版本r=S278()
n=5
print(r.func(n))

二、541. 反转字符串 II

简单
给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,
就反转这 2k 字符中的前 k 个字符。
如果剩余字符少于 k 个,则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。

示例 1:
输入:s = “abcdefg”, k = 2
输出:“bacdfeg”

示例 2:
输入:s = “abcd”, k = 2
输出:“bacd”

abcdefgz 反转 cbadefzg
abcdefgzjj 反转 cbadef jzgj
解题思路
1.python的range可以设置步长,实现2k的循环
2.当最后一步剩余元素小于2k,超过k时,因为循环的是i,而且都是处理i后元素,i在循环不满足条件结束之前,便处理了反转k个元素
3.当最后剩余元素小于k时,ss[i: i+k]只会表达到ss截止的地方,不会继续往后查找,就像ss[:]表示的是从最开始项到最后项一样

python">class S:def func(self,s,k):ss=[i for i in s]n=len(ss)for i in range(0,n,2*k):ss[i:i+k]=ss[i:i+k][::-1]return ''.join(ss)

三、右旋字符串

卡码网题目链接(opens new window)
字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。
例如,对于输入字符串 “abcdefg” 和整数 2,函数应该将其转换为 “fgabcde”。
输入:输入共包含两行,
第一行为一个正整数 k,代表右旋转的位数。
第二行为字符串 s,代表需要旋转的字符串。
输出:输出共一行,为进行了右旋转操作后的字符串。

python">class S17:def func(self,s,k):n=len(s)s=s[n-k:]+s[:n-k]return sr=S17()
s="abcdefg"
k=2
print(r.func(s, k))

四、替换数字

卡码网题目链接(opens new window)
给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。
例如,对于输入字符串 “a1b2c3”,函数应该将其转换为 “anumberbnumbercnumber”。
对于输入字符串 “a5b”,函数应该将其转换为 “anumberb”
输入:一个字符串 s,s 仅包含小写字母和数字字符。
输出:打印一个新的字符串,其中每个数字字符都被替换为了number
样例输入:a1b2c3
样例输出:anumberbnumbercnumber
数据范围:1 <= s.length < 10000。

python">class S18:def func(self,s):lst=list(s)   #todo Python里面的string也是不可改的,所以也是需要额外空间的。空间复杂度:O(n)for i in range(len(lst)):if lst[i].isdigit():lst[i]='number'return ''.join(lst)

五、977.有序数组的平方

力扣题目链接(opens new window)

给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。

示例 1:
输入:nums = [-4,-1,0,3,10]
输出:[0,1,9,16,100]
解释:平方后,数组变为 [16,1,0,9,100],排序后,数组变为 [0,1,9,16,100]

示例 2:
输入:nums = [-7,-3,2,3,11]
输出:[4,9,9,49,121]

暴力法

python"># todo 暴力法
class S19:def func(self,nums):for i in range(len(nums)):nums[i]*=nums[i]nums.sort()return nums

http://www.ppmy.cn/ops/7807.html

相关文章

Elasticsearch常用查询语法及RestClient操作

DSL Query基本语法 1&#xff0c;查询所有数据matchall&#xff08;当然并不是会显示所有数据&#xff09; #查询所有数据 GET /索引名/_search {"query": {"查询类型": {"查询条件":"条件值"}} }2&#xff0c;全文搜索检索-分词搜索…

c语言基础总结

1. c语言概述 c语言是计算机编程语言的一种&#xff0c;编程语言用于人和机器交流。 1.1 c语言特点 简洁 ​ c语言的语法简单&#xff0c;语句清晰明了&#xff0c;使得程序易于阅读和理解 高效 ​ c语言的执行效率高&#xff0c;可以用于开发需要高性能的应用程序 可移…

Windows bat实现循环往txt文件插入1000条数据内容

bat脚本实现&#xff1a; echo off for /L %%i in (1,1,1000) do (echo "I am from 192.168.10.171" >> c:\ztj.txt ) echo off --在批处理运行命令的时候不会一条一条的显示执行的命令 for /L %variable in (start,step,end) do command [command-p…

2024数学建模时间汇总与竞赛攻略

目录 2024数学建模汇总&#xff08;时间、报名费、获奖率、竞赛级别、是否可跨校&#xff09; 中国高校大数据挑战赛 “华数杯”国际大学生数学建模竞赛 美国大学生数学建模竞赛&#xff08;美赛&#xff09; 数学中国&#xff08;认证杯&#xff09;数学建模网络挑战赛 …

【多线程学习】深入探究定时器的重点和应用场景

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

【技术】Spring Boot 将 Word 转换为 PDF 2.0 版本

之前写过一篇 Spring Boot 将 Word 转换为 PDF 的文章&#xff0c;但是有评论说导入依赖有问题&#xff0c;还存在依赖冲突的问题。索性再来一个完整版的代码&#xff0c;之前的完整版代码找不到了&#xff0c;又重新整理了一下&#xff0c;依赖导入和之前不太一样&#xff0c;…

Linux动态追踪——eBPF

目录 摘要 1 什么是 eBPF 2 eBPF 支持的功能 3 BCC 4 编写脚本 5 总结 6 附 摘要 ftrace 和 perf 与 ebpf 同为 linux 内核提供的动态追踪工具&#xff0c;其中 ftrace 侧重于事件跟踪和内核行为的实时分析&#xff0c;perf 更侧重于性能分析和事件统计&#xff0c;与…

达梦数据库的监听进程

达梦数据库&#xff08;DMDB&#xff09;也同样有监听进程&#xff0c;其主要职责是监听来自客户端的连接请求。这里的监听进程指的是达梦数据库服务启动后&#xff0c;在操作系统级别监听特定TCP/IP端口&#xff08;默认情况下是5236&#xff0c;但这可以配置&#xff09;的进…

Spring Security之Session管理

前言 在聊认证过滤器的时候&#xff0c;我们埋了个坑&#xff1a;Session管理。实际上&#xff0c;事情从这里开始&#xff0c;就变得复杂了。提前跟大家交个底&#xff1a;后续我们将涉及多个需要协同才能完成的功能。 什么是Session 想要管理session&#xff0c;就必须搞清…

Web前端框架/库/工具

前言 前端从步枪&#xff08;原生js&#xff09;到了半自动武器&#xff08;jQuery&#xff09;并进化为全自动武器&#xff08;三大框架&#xff08;angular&#xff0c;react&#xff0c;vue及其生态链&#xff09;&#xff09;。 常说工欲善其事必先利其器。对于那些想要提…

TPCC MySQL

目录 1. tpcc-mysql下载 2. tpcc-mysql安装 3. 初始化tpcc-mysql 4. 使用tpcc-mysql测试 5. 结果解释 1. tpcc-mysql下载 https://github.com/Percona-Lab/tpcc-mysql 2. tpcc-mysql安装 [rootlocalhost soft]# unzip tpcc-mysql-master.zip [rootlocalhost soft]# cd t…

代码随想录训练营24day-贪心算法2

一、122 买卖股票最佳时机 题目介绍限制条件&#xff0c;必须卖了再买&#xff0c;而且当前交易一只股票。一开始想法是去遍历&#xff0c;找到每个区间段间的差值&#xff0c;然后再相加。看了解答&#xff0c;其实每一天的利润&#xff0c;都是可以用差值表示出来&#xff0…

Spring - 1 ( 8000 字 Spring 入门级教程 )

一&#xff1a;SpringBoot 快速上手 环境准备 ⾃检Idea版本: 社区版: 2021.1 -2022.1.4专业版: ⽆要求 如果个⼈电脑安装的idea不在这个范围, 需要卸载重新安装.&#xff08;⼀定要删除注册表&#xff09; Maven Maven是⼀个项⽬管理⼯具。基于POM(Project Object Model,…

centos 7.9 安装 ftp 传输文件

ftp server 端 sudo yum install vsftpd ftp其中 vsftpd 为 ftp server 端&#xff0c;ftp 包含 ftp 这个客户端命令。 # sudo rpm -ql vsftpd/etc/logrotate.d/vsftpd /etc/pam.d/vsftpd /etc/vsftpd /etc/vsftpd/ftpusers /etc/vsftpd/user_list /etc/vsftpd/vsftpd.conf /…

耀斑层-如何在Unity中实现耀斑亮光效果

在Unity中实现耀斑亮光效果可以通过以下步骤来实现&#xff1a; 创建一个空物体作为光源&#xff1a;在场景中创建一个空物体&#xff0c;并将其放置在需要发出耀斑亮光效果的位置上。 添加光源组件&#xff1a;选中空物体&#xff0c;在Inspector面板中点击"Add Compone…

C# 下记录(Record)详解

在C# 9.0中&#xff0c;引入了一个新的关键字&#xff1a;record。record关键字用于定义记录类型&#xff0c;这是一种不可变的数据结构&#xff0c;用于表示具有明确字段名称和类型的数据集。本文将详细介绍C#中record类型的使用和特点&#xff0c;以及如何通过记录记录器&…

使用easyexcel将csv转为excel

一.背景 供应商系统下载的csv文件不支持域控&#xff08;主要是第三方wps服务不能对csv文件加密&#xff0c;但是可以对office系列产品进行权限访问的加密控制&#xff09;。因此思路就改为现将csv文件转为excel文件&#xff0c;然后对excel文件进行加域控制。本文主要介绍如何…

数据结构--双向链表

在讲双向链表之前&#xff0c;我们先了解一下链表的分类&#xff1a; 链表的结构⾮常多样&#xff0c;主要分为带头与不带头、单向与双向、循环与不循环。三个种类可以任意搭配&#xff0c;所以总共可以形成八种链表&#xff0c;但是最常用的是单向不带头不循环链表和双向带头循…

html、css、QQ音乐移动端静态页面,资源免费分享,可作为参考,提供InsCode在线运行演示

CSDN将我上传的免费资源私自变成VIP专享资源&#xff0c;且作为作者的我不可修改为免费资源&#xff0c;不可删除&#xff0c;寻找客服无果&#xff0c;很愤怒&#xff0c;&#xff08;我发布免费资源就是希望大家能免费一起用、一起学习&#xff09;&#xff0c;接下来继续寻找…

代码托管基础操作

在待上传代码文件夹中右键&#xff0c;打开Git Bash Here依次输入以下命令&#xff1a; git init(在本地初始化一个代码仓库&#xff0c;具体表现为会在你的文件夹里出现一个隐藏的.git文件夹) git add .&#xff08;先把代码放到本地的一个缓冲区&#xff09;添加当前目录下的…