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

leetcode3265. 统计近似相等数对 I-medium

1 题目:统计近似相等数对 I

官方标定难度:中

给你一个正整数数组 nums 。

如果我们执行以下操作 至多一次 可以让两个整数 x 和 y 相等,那么我们称这个数对是 近似相等 的:

选择 x 或者 y 之一,将这个数字中的两个数位交换。
请你返回 nums 中,下标 i 和 j 满足 i < j 且 nums[i] 和 nums[j] 近似相等 的数对数目。

注意 ,执行操作后一个整数可以有前导 0 。

示例 1:

输入:nums = [3,12,30,17,21]

输出:2

解释:

近似相等数对包括:

3 和 30 。交换 30 中的数位 3 和 0 ,得到 3 。
12 和 21 。交换12 中的数位 1 和 2 ,得到 21 。

示例 2:

输入:nums = [1,1,1,1,1]

输出:10

解释:

数组中的任意两个元素都是近似相等的。

示例 3:

输入:nums = [123,231]

输出:0

解释:

我们无法通过交换 123 或者 231 中的两个数位得到另一个数。

提示:

2 <= nums.length <= 100
1 < = n u m s [ i ] < = 1 0 6 1 <= nums[i] <= 10^6 1<=nums[i]<=106

2 solution

直接遍历每两个数,看是否满足条件即可

代码

class Solution {
public:
int countPairs(vector<int> &nums) {int cnt = 0;for (int i = 0; i < nums.size(); i++) {for (int j = i + 1; j < nums.size(); j++) {int x = nums[i], y = nums[j];bool flag = true;int d[2], z = 0;for (; x | y; x /= 10, y /= 10) {if (x % 10 != y % 10) {if (z == 0) {d[0] = x % 10;d[1] = y % 10;} else if (z == 1) {if (x % 10 != d[1] || y % 10 != d[0]) {flag = false;break;}} else {flag = false;break;}z++;}}if(flag && z != 1) cnt++;}}return cnt;
}
};

结果

在这里插入图片描述

http://www.xdnf.cn/news/7278.html

相关文章:

  • 编程技能:字符串函数07,strncat
  • C++跨平台开发经验与解决方案
  • Linux 文件(1)
  • 三维重建(二十三)——各种参数的测试(废案)
  • RV1126 + PCA9685实现7路舵机+2路减速电机控制
  • C++语法中的引用及其原理
  • 上位机知识篇---涂鸦智能云平台
  • Linux 线程(上)
  • Mamba LLM 架构简介:机器学习的新范式
  • SHAP分析图的含义
  • STM32F1软件调试详解
  • vLLM - LLM 类初始化参数
  • Addressable-加载指定资源
  • QT6 源(108)篇二:阅读与注释菜单栏里的菜单对象 QMenu,先是成员函数,后是信号函数的测试
  • Python 位运算:深入理解与实践应用
  • Linux开放访问端口
  • boost之signal2
  • 【ROS2】虚拟机使用fishros脚本一键安装humble
  • 我的创作纪念日——512天
  • 学习笔记:hspice仿真Verilog-a
  • ReentrantLock、ReentrantReadWriteLock、StampedLock讲解
  • ET Attribute
  • 【Python 算法零基础 4.排序 ① 选择排序】
  • 深度剖析:YOLOv8融入UNetv2 SDI模块的性能提升之旅
  • 游戏服务器之聊天频道设计
  • 双紫擒龙紫紫红指标源码学习,2025升级版紫紫红指标公式-重点技术
  • transformer project tutorial
  • volatile
  • Python实例题:Flask开发轻博客
  • mybatis中的resultMap的association及collectio的使用