【412】【统计近似相等数对 I】

news2024/9/29 15:18:10

我的思路:

 两层循环找数组两个数

然后进行1次过滤,如果数字相同直接下一组

不相同的话就要进行2次过滤

方便处理,转移到str格式

change函数用于比较两个输入的字符串是否相同

change中使用两层循环暴力调用两位数位进行交换比较(记得打回原形)

调用ifqual(使用Int函数)比较调换的结果是否符合题意

此处tips:change函数需要调用2次(str1和str2分别处理,防止3和30的情况不通过)

超级复杂的情况下通过了!!!

class Solution:
    def ifqual(self,str1,str2):
        return int(str1)==int(str2)
    def change(self,str1,str2):
        str1 = list(str1)
        n=len(str1)
        for i in range(n):
            for j in range(i+1,n):
                str1[i],str1[j]=str1[j],str1[i]
                if self.ifqual("".join(str1),str2):
                    return True
                str1[i],str1[j]=str1[j],str1[i]   
        return False
         
    def countPairs(self, nums: List[int]) -> int:
        n=len(nums)
        ret=0
        for i in range(n):
            for j in range(i+1,n):
                if nums[i]==nums[j]:
                    ret+=1
                else:
                   num1=str(nums[i])
                   num2=str(nums[j])
                   if self.change(num1,num2) or self.change(num2,num1):
                      ret+=1
        return ret

复杂度还是太高了。

保留,等待大佬题解

大佬题解:

class Solution:
    def countPairs(self, nums: List[int]) -> int:
        nums.sort()
        ret=0
        dict=defaultdict(int)
        for num in nums:
            #不交换
            st={num}
            #num的长度
            s=list(str(num))
            m=len(s)
            #数位交换
            for i in range(m):
                for j in range(i+1,m):
                    s[i],s[j]=s[j],s[i]
                    st.add(int(''.join(s)))
                    #换回来
                    s[i],s[j]=s[j],s[i]
            ret+=sum(dict[v] for v in st)
            dict[num]+=1
        return ret         

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

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

相关文章

SpringBoot 新手入门(实操)

Spring Boot 是一个开源框架,旨在简化基于 Spring 的 Java 应用程序的开发。它通过提供一系列默认配置和约定大于配置的理念,让开发者可以更快速地创建和部署应用。以下是一个 Spring Boot 新手入门的实操指南,帮助你从零开始创建一个简单的 …

Gitee上传项目(从0开始)

1.默认你Git已经下载好的情况下。 下载好的两种显示: 1.右击桌面显示这个 2.如果没有情况1出现,需要自己去创建快捷方式 2.去网站创建仓库 网站参考:yanyongzhitest/java_web - 码云 - 开源中国 (gitee.com) 新建仓库: 仓库名…

科研绘图系列:R语言基因PPI互作网络图(PPI network plot )

介绍 基因的PPT互作网络图。 加载R包 导入所需要的R包,在导入前需要用户自己安装。 library("tidyverse") library("magrittr") library("here") library("janitor") library("ggpubr") library("ComplexHeatmap&…

js函数方法apply,bind,call,手写new操作符

函数方法 函数方法可以用来改变函数的this指向,对于内置的标准函数来说,改变this就相当于改变了函数的作用目标;比如说,对于一个对象的方法toString(),可以将它的使用目标修改成指定的参数, 这里原本是对o…

大语言模型数据增强与模型蒸馏解决方案

背景 在人工智能和自然语言处理领域,大语言模型通过训练数百亿甚至上千亿参数,实现了出色的文本生成、翻译、总结等任务。然而,这些模型的训练和推理过程需要大量的计算资源,使得它们的实际开发应用成本非常高;其次&a…

Android经典实战之OkDownload:一个经典强大的文件下载开源库,支持断点续传

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 OkDownload 是一个为 Android 平台设计的开源下载框架,它支持多线程下载、多任务处理、断点续传等功能,并且具有可靠性、…

8款好用的电脑监控软件推荐?(一口气了解8款!)赶紧Get吧!

电脑监控软件成为了企业和个人管理电脑、提高工作效率、保护信息安全的重要工具。 这些软件不仅能够实时监控电脑的使用情况,还能帮助管理者制定合理的工作计划,预防潜在的安全风险。 本文将为您详细介绍八款功能强大、易于使用的电脑监控软件&#xff…

stm32之软件I2C读写MPU6050陀螺仪、加速度传感器应用案例

系列文章目录 1. stm32之I2C通信协议 文章目录 系列文章目录前言一、电路接线图二、应用案例代码三、应用案例分析3.1 I2C通信模块3.2 MPU6050模块 前言 提示:本文主要用作在学习江科大自化协STM32入门教程后做的归纳总结笔记,旨在学习记录&#xff0c…

空间计量 | 空间杜宾误差模型SDEM

空间计量研究中,空间杜宾误差模型,其考虑两项,分别是自变量X的空间滞后作用,以及误差扰动项的空间滞后作用,其数学模型公式如下: y βk * x θk * Wx u, u λ * Wu (其中βk表示X的回归系…

AI学习记录 - 线性代数(3Blue1Brown)

一天更新一点点,只更新重点内容,一句话定义,简单的定义,避免脑子及记太多 向量的加法就是一种趋势运动 向量的延长缩短,就是分量的延长缩短 基向量就是在平面或者任意维度空间随便定义的一个向量 多个基向量的组合可…

每天分享一个FPGA开源代码(1)- spi

1、SPI总线进行通信的结构 SPI总线主要包括四根关键信号线: (1)SCK (Serial Clock) 串行时钟线,由主设备产生,控制数据传输的速率和时机。 (2)MOSI (Master Out Slave In) 主设备数据输出线…

指针的一些细节补充———C语言

野指针: 1.未初始化的指针: eg: int *p; // 未初始化的指针 *p 5; // 未定义行为,p 是野指针 ————————————————————————————————————————————————————————…

记Codes 开源研发项目管理平台——管理系统颠覆性创新实现之事件驱动+信息流

引言 市面上所有管理系统,数据都不是以推流的方式展现到前端,有新数据产生需主动刷新页面才能看到,也就是“人找事”;而不是主动推送的“事找人”,Codes 敢为人先,采用事件驱动信息流实现“事找人”。 1、…

一起学习LeetCode热题100道(64/100)

64.搜索二维矩阵(学习) 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则&am…

Java Excel转PDF(免费)

目前市面上 Excel 转 PDF 的组件较多: 收费:aspose、GcExcel、spire开源:jacob、itextpdf 其中收费的组件封装得比较好,代码简洁,转换的效果也很好,但收费也高得离谱: 为了成本考虑&#xff…

共享单车|基于SprinBoot+vue的共享单车数据储存系统(源码+数据库+文档)

共享单车数据储存系统 基于SprinBootvue的共享单车数据储存系统 一、前言 二、系统设计 三、系统功能设计 系统登录注册实现 管理员模块实现 用户模块实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介…

STM32和TMSF28335定时器的系统时钟问题

用户可通过多个预分频器配置AHB、高速APB(APB2)和低速APB(APB1)域的频率。AHB和APB2域的最大频率是72MHz。APB1域的最大允许频率是36MHz。 定时器时钟频率分配由硬件按以下2种情况自动设置: 如果相应的APB预分频系数是1,定时器的时钟频率与所在APB总线…

俄罗斯OZON真的适合小白做吗,有哪些坑需要知道

OZON 对于小白来说有一定的可行性,但也存在一些需要注意的 “坑”: OZON 平台适合小白的原因: 入驻门槛较低:目前中国卖家入驻 OZON 是免费的,具备企业营业执照(暂不支持个体工商户注册)&#…

Part4-DOM学习笔记-获取元素属性及节点操作

6.获取元素属性 6.1 获取元素属性 获取元素的属性有两种方式: element.属性: 获取内置属性值,元素本身自带的属性 不能获取自定义属性 代码示例如 console.log(div.id)element.getAttribute(‘属性’): 可以获取内置属性值 可…

高带宽云服务器有什么用处?这几种用处要知道

高带宽云服务器的主要用途包括提供更快的网络连接速度、支持高并发访问和大规模数据传输、提高应用程序的性能和用户体验等。在当今数字化时代,随着大数据、云计算、流媒体等技术的飞速发展,高带宽云服务器已成为许多企业和个人用户的首选。以下将详细分…