力扣刷题记录——367. 有效的完全平方数、383. 赎金信、387. 字符串中的第一个唯一字符、389. 找不同

news2024/11/17 22:45:27
本专栏主要记录力扣的刷题记录,备战蓝桥杯,供复盘和优化算法使用,也希望给大家带来帮助,博主是算法小白,希望各位大佬不要见笑,今天要分享的是——《367. 有效的完全平方数、383. 赎金信、387. 字符串中的第一个唯一字符、389. 找不同》。

367. 有效的完全平方数

题目描述

给你一个正整数 num 。如果 num 是一个完全平方数,则返回 true ,否则返回 false
完全平方数 是一个可以写成某个整数的平方的整数。换句话说,它可以写成某个整数和自身的乘积。
不能使用任何内置的库函数,如 sqrt

示例 1:
输入:num = 16 输出:true 解释:返回 true ,因为 4 * 4 = 16 且 4 是一个整数。
示例 2:
输入:num = 14 输出:false 解释:返回 false ,因为 3.742 * 3.742 = 14 但 3.742 不是一个整数。

解题思路

依然是暴力循环,注意range的取值范围,因为是平方,所有只要到16就可以了,如果选择更大的数不仅没有意义,而且会超出时间限制。

解题代码

def isPerfectSquare(num):
    for i in range(1,2**16):
        if i**2 == num:
            return True
    return False

383. 赎金信

题目描述

给你两个字符串:ransomNote magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。
如果可以,返回 true ;否则返回 false
magazine 中的每个字符只能在 ransomNote 中使用一次。

示例 1:
输入:ransomNote = "a", magazine = "b" 输出:false
示例 2:
输入:ransomNote = "aa", magazine = "ab" 输出:false
示例 3:
输入:ransomNote = "aa", magazine = "aab" 输出:true

解题思路

首先用集合判断,是不是ransomNote中的元素在magazine都出现了,也就是集合相交还等于randomnote的集合。然后就是判断,每个元素在ransomnote中出现的次数是不是都小于magazine中出现的次数,如果不是返回False。两个检测都通过的话,返回True。

解题代码

def canConstruct(ransomNote:str,magazine:str):
    if set(ransomNote)&set(magazine) != set(ransomNote):
        return False
    else:
        for i in set(ransomNote):
            if ransomNote.count(i) > magazine.count(i):
                return False
        return True

387. 字符串中的第一个唯一字符

题目描述

给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1

示例 1:
输入: s = "leetcode" 输出: 0
示例 2:
输入: s = "loveleetcode" 输出: 2
示例 3:
输入: s = "aabb" 输出: -1

解题思路

这个还是比较简单的,直接暴力循环,在s中数每一个i,如果等于1的话就返回索引,如果遍历完都不是1的话返回-1。

解题代码

def firstUniqChar(s: str):
    for i in s:
        if s.count(i) == 1:
            return s.index(i)
        else:
            return -1

389. 找不同

题目描述

给定两个字符串 s t ,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。

示例 1:
输入:s = "abcd", t = "abcde" 输出:"e" 解释:'e' 是那个被添加的字母。
示例 2:
输入:s = "", t = "y" 输出:"y"

解题思路

用集合的补集,直接作差就可以得出后来增加的元素。

解题过程

    def findTheDifference(self, s: str, t: str) -> str:
        if s== "":
            return t
        else:
            return str(set(t) - set(s))[2]

忽略了如果添加的元素本身就在原来的字符串中出现的这种情况,所以还是用暴力循环来写,遍历t,如果t中的i出现次数比s中多一次,那么这个i就是后来添加的元素。

def findTheDifference(s: str, t: str):
    if s == "":
        return t
    else:
        for i in t:
            if t.count(i) - s.count(i) == 1:
                return i

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

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

相关文章

LightDB单机安装

LightDB单机安装 LightDB官网:https://www.hs.net/lightdb 下载安装包:lightdb-x-13.8-22.3-7953-el7.x86_64.zip 前置准备 防火墙配置(选择一种操作) firewall防火墙 firewall-cmd --permanent --add-port5432/tcp firewall-cmd --permanent --add-p…

(深度学习快速入门)第三章第三节2:深度学习必备组件之损失函数和激活函数

文章目录一:损失函数(1)均方误差损失(MSE)(2)交叉熵损失(Cross Entropy)二:激活函数(1)tanh(2)ReLU&#xff0…

SpringBoot数据响应与内容协商

目录 数据响应与内容协商 1、响应JSON 1.1、jackson.jarResponseBody 1.2、SpringMVC到底支持哪些返回值 2、内容协商 1、引入xml依赖 2、postman分别测试返回json和xml 3、开启浏览器参数方式内容协商功能 数据响应与内容协商 1、响应JSON 1.1、jackson.jarResponseBo…

区块链北大肖老师学习笔记6

第七节 比特币的挖矿难度调整 H(block header) < target 目标(target)预值越小&#xff0c;挖矿的难度越大。调整挖矿的难度就是调整目标空间在整个输出空间中所占的比例。 比特币用的哈希算法是SHA-256&#xff0c;这个产生的哈希值是256位。所以整个输出空间是2的256次…

[JavaEE]synchronized 与 死锁

专栏简介: JavaEE从入门到进阶 题目来源: leetcode,牛客,剑指offer. 创作目标: 记录学习JavaEE学习历程 希望在提升自己的同时,帮助他人,,与大家一起共同进步,互相成长. 学历代表过去,能力代表现在,学习能力代表未来! 目录 1.synchronized 的特性 2. synchronized 使用示例:…

new做了什么

function structure (name, age) {this.name namethis.age age}// 给构造函数--prototype加上一个方法structure.prototype.sayName function () {console.log(this.name, 调用打印);return this.name}structure.one 5const person new structure(张龙, 188)// 打印构造函…

【基础算法】前缀和 与 差分

前缀和 用来求解一段区间&#xff08;一维&#xff09;的总和 或者一块矩形区域&#xff08;二维&#xff09;的总和 一维前缀和 原数组a[N]&#xff0c;前缀和数组s[N]// ---读入数组a[N] // ---// 处理前缀和数组 s[N] s[0] 0; //定义在全局变量&#xff0c;不用写这一句 f…

SOA 和微服务有何区别?

玩过 Dubbo 的小伙伴应该都有听说过一个概念叫做 SOA&#xff0c;每当我们说起微服务的时候&#xff0c;很多人就会去纠结这和 SOA 有啥关系呀&#xff1f;感觉换汤不换药呀。 今天松哥来稍微和小伙伴们讨论下这个话题&#xff0c;我们一起来看看 SOA 和微服务到底有何异同。 …

c语言进阶(3)——指针进阶笔试题详解

1.指针和数组笔试题解析 关键&#xff1a;数组名在两种情况下是指整个数组&#xff1a; &#xff08;1&#xff09;sizeof&#xff08;数组名&#xff09;&#xff08;2&#xff09;&数组名 其它的情况下&#xff0c;都是代表数组的首元素地址。 例题 1 &#xff1a;一维…

【算法面试】算法在面试中考察的是什么(金三银四面试专栏启动)

&#x1f4eb;作者简介&#xff1a;小明java问道之路&#xff0c;专注于研究 Java/Liunx内核/C及汇编/计算机底层原理/源码&#xff0c;就职于大型金融公司后端高级工程师&#xff0c;擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。 &#x1f4…

Kafka消息中间件

Kafka消息中间件 同时市场上也发展处ActiveMq、RabbitMQ、Kafka、RocketMQ、Pulsar等众多优秀的框架&#xff1b;在大数据领域中Kafka目前是使用较多的框架。Kafka作为内部消息通知的框架&#xff0c;可以适应项目中大数据量的高吞吐、实时流计算等功能实现。 分布式消息中间…

【自学C++】C++整型

C整型 C整型教程 C 的整型用来存放整数 类型 的数字&#xff0c;即不可以带小数&#xff0c;C 整型可以分为短整型 short&#xff0c;整型 int&#xff0c;长整型 long 和 long long 类型。 C整型取值范围 数据类型取值范围字节数short-32768 ~ 327672int-2147483648 ~ 214…

小米万兆路由器里的Docker安装drawio

小米2022年12月份发布了万兆路由器&#xff0c;里面可以使用Docker。 今天尝试在小米的万兆路由器里安装drawio 20.8.3。 准备工作 请参考https://engchina.blog.csdn.net/article/details/128515422的准备工作。 查看Docker Hub镜像信息 访问https://hub.docker.com/r/jgr…

axios系列之并发

文章の目录一、axios.all(iterable)二、axios.spread(callback)写在最后处理并发请求的助手函数 一、axios.all(iterable) function a() {return axios.get("http://localhost/a"); } function b() {return axios.get("http://localhost/b"); }axios.all…

【Linux 进程控制】进程创建、进程终止、进程等待、进程替换

1.进程创建&#xff08;fork&#xff09;#include<iostream> #include<unistd.h> using std::cout; using std::endl;int main() {if(fork()0){cout<<"child:"<<"I am child"<<endl;}else{cout<<"parent:"&…

用555定时器接成的施密特触发器电路/滞回电压比较器中,用什么方法能调节回差电压的大小?包含工作原理与应用

一、简答:电源电压或外接控制电压改变时&#xff0c;可以改变回差电压的大小。二、施密特触发器电路工作原理&#xff1a;滞回电压比较器&#xff0c;又名施密特触发器&#xff0c;有两个稳定状态&#xff0c;与一般触发器不同的是&#xff0c;施密特触发器采用电位触发方式&am…

【免杀】通用shellcode原理及思路——FS段寄存器获取kernel32.dll基址逻辑、根据函数名进行查找逻辑、双指针循环遍历获取函数名称

通用shellcode通用shellcode思路FS段寄存器获取kernel32.dll基址逻辑根据函数名进行查找逻辑双指针循环遍历获取函数字符串总结通用shellcode思路 1、保存相关字符串 user32.dll、LoadLibraryA、GetProcAddress、MessageBoxA、hello 51hook 2、通过fs寄存器获取kernel32.dll…

8.Isaac教程--在Kaya上运行IsaacSDK

在Kaya上运行IsaacSDK 构建自己的 NVIDIA Kaya 机器人后&#xff0c;请按照本页中的步骤在其上运行一些示例应用程序。 文章目录在Kaya上运行IsaacSDK安装和设置操纵杆应用程序跟随我的应用程序物体检测应用地图应用安装和设置 在 Kaya 上运行应用程序之前完成这些先决条件步…

Jenkins+Git+Maven自动化部署配置

JenkinsGitMaven自动化部署配置基本思路1、jenkins安装maven依赖2、git安装3、Jenkins中新建任务3.1 git配置3.2 maven配置3.3 pom.xml配置3.4 build4、自动化发布到测试服务器并自动执行(Test-server)4.1 安装Publish Over SSH插件4.2 修改Post Steps配置4.3 执行构建5、小插曲…

实战6 :基于mmdetection搭建Faster R-CNN实现酒液杂质检测

项目介绍: 本教程讲述如何解决依赖运动变化来区分目标的目标检测问题。以酒液杂质目标检测为例,讲述如何合理利用运动的酒液图像来设计算法进行杂质的检测。通过学习掌握依赖运动变化区分目标的检测任务的解决方法。首先我们对酒液杂质检验任务做了简要介绍。接下来再对数据…