LeetCode.2843. 统计对称整数的数目
统计对称整数的数目
- 题目
- 解题思路
- 思路1.v1
- Code
- 思路优化1.v2
- Code
- 思路优化1.v3
- Code
- 复杂度分析
题目
2843. 统计对称整数的数目
给你两个正整数 low
和 high
。
对于一个由 2 * n
位数字组成的整数 x
,如果其前 n
位数字之和与后 n
位数字之和相等,则认为这个数字是一个对称整数。
返回在 [low, high]
范围内的 对称整数的数目 。
示例 1:
输入:low = 1, high = 100
输出:9
解释:在 1 到 100 范围内共有 9 个对称整数:11、22、33、44、55、66、77、88 和 99 。示例 2:
输入:low = 1200, high = 1230
输出:4
解释:在 1200 到 1230 范围内共有 4 个对称整数:1203、1212、1221 和 1230 。
解题思路
思路1.v1
- 遍历范围:对
[low, high]
中的每个整数进行检查。 - 检查数字位数:只有当数字的位数为偶数时,才可能是对称整数。
- 计算前后半部分数字之和:如果数字位数为偶数,将数字拆分为前后两部分,分别计算它们的数字之和。
- 判断是否对称:若前后两部分数字之和相等,则该数字为对称整数。
- 统计对称整数的数量:在遍历过程中,对满足条件的对称整数进行计数。
Code
int countSymmetricIntegers(int low, int high) {int count = 0;for (int num = low; num <= high; num++) {int temp = num;int digits[10];int digitCount = 0;// 提取数字的每一位while (temp > 0) {digits[digitCount++] = temp % 10;temp /= 10;}// 只有偶数位数字才可能是对称整数if (digitCount % 2 == 0) {int leftSum = 0;int rightSum = 0;int half = digitCount / 2;// 计算前半部分数字之和for (int i = 0; i < half; i++) {leftSum += digits[i];}// 计算后半部分数字之和for (int i = half; i < digitCount; i++) {rightSum += digits[i];}// 判断是否对称if (leftSum == rightSum) {count++;}}}return count;
}
思路优化1.v2
为了优化时间复杂度,可以在提取数字每一位时就进行前后半部分的求和,避免不必要的数组存储和后续的双重循环计算前后半部分和。可以将时间复杂度从 (O(n * m))(n 是区间内数字个数,m 是数字的最大位数)优化到接近 (O(n * m/2))。
Code
int countSymmetricIntegers(int low, int high) {int count = 0;for (int num = low; num <= high; num++) {int temp = num;int digitCount = 0;// 先计算数字的位数while (temp > 0) {digitCount++;temp /= 10;}// 只有偶数位数字才可能是对称整数if (digitCount % 2 == 0) {int leftSum = 0, rightSum = 0;temp = num;int half = digitCount / 2;// 计算前半部分和后半部分的数字和for (int i = 0; i < digitCount; i++) {if (i < half) {leftSum += temp % 10;} else {rightSum += temp % 10;}temp /= 10;}// 判断是否对称if (leftSum == rightSum) {count++;}}}return count;
}
思路优化1.v3
- 跳过奇数位数字:在遍历过程中,快速判断数字的位数,若为奇数位则直接跳过,不进行后续的数字和计算。
- 提前终止循环:在计算数字位数时,如果发现当前数字已经小于某个能构成对称整数的最小数字,可提前终止循环。
-
Code
// 计算数字的位数
int getDigitCount(int num) {int count = 0;while (num > 0) {count++;num /= 10;}return count;
}int countSymmetricIntegers(int low, int high) {int count = 0;for (int num = low; num <= high; num++) {int digitCount = getDigitCount(num);// 跳过奇数位数字if (digitCount % 2 != 0) {continue;}int leftSum = 0, rightSum = 0;int half = digitCount / 2;int temp = num;// 计算前半部分和后半部分的数字和for (int i = 0; i < digitCount; i++) {if (i < half) {leftSum += temp % 10;} else {rightSum += temp % 10;}temp /= 10;}// 判断是否为对称整数if (leftSum == rightSum) {count++;}}return count;
}
复杂度分析
- 时间复杂度:(O((high - low + 1) * m)),这里的 m 为数字的最大位数。不过在实际运行中,由于跳过了奇数位数字,会减少一部分计算量。
- 空间复杂度:(O(1)),仅使用了常数级的额外空间。
相关文章:
LeetCode.2843. 统计对称整数的数目
统计对称整数的数目 题目解题思路思路1.v1Code 思路优化1.v2Code 思路优化1.v3Code复杂度分析 题目 2843. 统计对称整数的数目 给你两个正整数 low 和 high 。 对于一个由 2 * n 位数字组成的整数 x ,如果其前 n 位数字之和与后 n 位数字之和相等,则认…...
Java常用工具算法-6--秘钥托管云服务3--微软zure Key Vault
Azure Key Vault是微软Azure提供的一项服务,旨在帮助用户安全地存储和管理敏感信息,如加密密钥、证书和密码等。它提供了一个集中的位置来保护这些重要资产,并且通过细粒度的访问控制和审计日志来确保安全性。 1、主要功能 (1&a…...
表格开启聚光灯,查看数据不错行-Excel易用宝
面对如此庞大的一个表格,每次找数据就像走迷宫一样,有时看到了数据,眼神不好的小丽小手一抖还会选择到其他数据上,我问她个数据,她经常给我报个错的数据,我说怎么数据总是对不上号。 对于大表格防看错行这…...
解决java使用easyexcel填充模版后,高度不一致问题
自定义工具,可以通过获取上一行行高设置后面所以行的高度 package org.springblade.modules.api.utils;import com.alibaba.excel.write.handler.RowWriteHandler; import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; import com.alibaba.excel.wr…...
【25软考网工笔记】第二章 数据通信基础(1)信道特性 奈奎斯特 香农定理
一、信道特性 1. 数据通信概念 1)通信系统的基本元素 通信目的: 传递信息。 信源: 产生和发送信息的一端,即信息发送的源头。 信宿: 接收信息的一端,即信息的目的地。 信道: 信源和信宿之间的通信线路,用于传输信息。 信号变换:…...
2024年React最新高频面试题及核心考点解析,涵盖基础、进阶和新特性,助你高效备战
以下是2024年React最新高频面试题及核心考点解析,涵盖基础、进阶和新特性,助你高效备战: 一、基础篇 React虚拟DOM原理及Diff算法优化策略 • 必考点:虚拟DOM树对比(同级比较、Key的作用、组件类型判断) …...
【Code】《代码整洁之道》笔记-Chapter11-系统
第11章 系统 “复杂要人命。它消磨开发者的生命,让产品难以规划、构建和测试。” 11.1 如何建造一个城市 你能自己掌管一切细节吗?大概不行。即便是管理一个既存的城市,也是靠单人能力无法做到的。不过,城市还是在运转&#…...
MySQL数据库编程总结
MySQL数据库编程总结 一、数据库概述 数据库定义 • 数据库是管理数据的软件系统,用于高效存储、管理和检索数据,减少冗余。 • 核心功能:通过SQL语言定义、操作数据,维护完整性和安全性。 常见数据库 • MySQL、Oracle、SQL Ser…...
MySQL学习笔记7【InnoDB】
Innodb 1. 架构 1.1 内存部分 buffer pool 缓冲池是主存中的第一个区域,里面可以缓存磁盘上经常操作的真实数据,在执行增删查改操作时,先操作缓冲池中的数据,然后以一定频率刷新到磁盘,这样操作明显提升了速度。 …...
HTML应用指南:利用GET请求获取全国汉堡王门店位置信息
在当今快节奏的都市生活中,餐饮品牌的门店布局不仅反映了其市场策略,更折射出消费者对便捷、品质和品牌认同的追求。汉堡王(Burger King)作为全球知名的西式快餐品牌之一,在中国市场同样占据重要地位。自进入中国市场以…...
STM32+EC600E 4G模块 与华为云平台通信
前言 由于在STM32巡回研讨会上淘了一块EC600E4G模块以及刚办完电信卡多了两张副卡,副卡有流量刚好可以用一下,试想着以后画一块ESP32板子搭配这个4G模块做个随身WIFI,目前先用这个模块搭配STM32玩一下云平顺便记录一下。 实验目的 实现STM…...
【Spring】IoC详解:五大类注解、类Bean的存储(上)
1.IoC本质 IoC(Inversion of Control,控制反转) 是Spring框架的灵魂,它颠覆了传统编程中“谁用谁造”的逻辑。简单来说,IoC就是把对象创建和管理的控制权从程序员手中“反转”给一个外部容器,让代码更灵活…...
图片压缩后失真?3款工具还原高清细节
在当今,图片的使用无处不在。为了便于存储和传输,我们常常会对图片进行压缩。然而,不少人发现,压缩后的图片往往变得模糊,失去了原本的清晰度和细节。那么,当遇到这种情况时,我们该如何将模糊的…...
2025中国移动云智算大会|彩讯企业级AI应用产品引关注
2025中国移动以“由云向智,共绘算网新生态”为主题,精心打造了一场智能科技展。中国移动携手生态伙伴带来涵盖算力、工具、模型、应用等覆盖多样化场景的AI应用服务,赋能生产方式、生活方式、社会治理方式的数智化解决方案,充分释…...
在新一代人工智能技术引领下的,相互联系、层层递进的明厨亮灶开源了
明厨亮灶视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。AI技术可以24小时…...
修图自由!自建IOPaint服务器,手机平板随时随地远程调用在线P图
前言:在这个人人都想当摄影师的时代,一张完美的照片简直比中彩票还难。但别担心,今天我来给大家揭秘一个超级神器——IOPaint!这款免费开源的AI工具不仅能一键移除照片中的杂物和路人,还能智能扩展图片内容,…...
PyTorch实现二维卷积与边缘检测:从原理到实战
本文通过PyTorch实现二维互相关运算、自定义卷积层,并演示如何通过卷积核检测图像边缘。同时,我们将训练一个卷积核参数,使其能够从数据中学习边缘特征。 1. 二维互相关运算的实现 互相关运算(Cross-Correlation)是卷…...
解决Server doesn‘t support Accept-Ranges问题
Cannot download differentially, fallback to full download: Error: Server doesnt support Accept-Ranges (response code 200) 解决方案 修改nginx配置文件支持Accept-Ranges(范围请求) server {...location ^~/ {default_type multipart/byterang…...
处理Excel表不等长时间序列用tsfresh提取时序特征
我原本的时间序列格式是excel表记录的,每一行是一条时间序列,时间序列不等长。 要把excel表数据读取出来之后转换成extract_features需要的格式。 1.读取excel表数据 import pandas as pd import numpy as np from tsfresh import extract_features mda…...
Linux __命令和权限
目录 一、几个指令 bc uname -r 指令 重要的几个热键 二、Shell命令以及运行原理 为什么有外壳 外壳是如何工作的 什么是操作系统,为什么要有操作系统 三、文件类型 1、Linux的文件类型 2、文件类型 四、用户 用户问题和切换问题 增加普通用户 root -&…...
IO流——字符输入输出流:FileReader FileWriter
一、文件字符输入流:FileReader 作用:以内存为基准,可以把文件中的数据以字符的形式读入到内存中去 public class Test5 {public static void main(String[] args) {try (Reader fr new FileReader("E:\\IDEA\\JavaCodeAll\\file-io-t…...
【大模型理论篇】DeepResearcher论文分析-通过在真实环境中的强化学习实现深度研究
1. 背景与问题 大模型(LLMs)配合网络搜索功能已经展现出在深度研究任务中的巨大潜力。然而,目前的方法主要依赖两种途径: 人工设计的提示工程(Prompt Engineering):这种方法依靠手动设计的工作流…...
大数据(7.5)Kafka Edge在5G边缘计算中的革新实践:解锁毫秒级实时处理的无限可能
目录 一、5G时代边缘计算的算力革命1.1 传统架构的延迟困境1.2 5G网络特性与Kafka适配 二、Kafka Edge核心架构设计2.1 分层处理架构2.2 关键技术创新点2.2.1 协议优化2.2.2 轻量化存储引擎 三、5G场景落地实践3.1 智能工厂预测性维护3.2 全息远程医疗会诊 四、性能优化深度实践…...
【基于开源insightface的人脸检测,人脸识别初步测试】
简介 InsightFace是一个基于深度学习的开源人脸识别项目,由蚂蚁金服的深度学习团队开发。该项目提供了人脸检测、人脸特征提取、人脸识别等功能,支持多种操作系统和深度学习框架。本文将详细介绍如何在Ubuntu系统上安装和实战InsightFace项目。 目前github有非常多的人脸识…...
kafka怎么保证消息不被重复消费
在 Kafka 中,要保证消息不被重复消费,可从消费者端和生产者端分别采取不同策略,下面为你详细介绍: 消费者端实现幂等消费 幂等消费是指对同一条消息,无论消费多少次,产生的业务结果都是一样的。 业务层面…...
一个批量文件Dos2Unix程序(Microsoft Store,开源)
这个程序可以把整个目录的文本文件改成UNIX格式,源码是用C#写的。 目录 一、从Microsoft Store安装 二、从github获取源码 三、功能介绍 3.1 运行 3.2 浏览 3.3 转换 3.4 转换(无列表) 3.5 取消 3.6 帮助 四、源码解读 五、讨论和…...
Python及Javascript的map 、 filter 、reduce类似函数的对比汇总
A. 在Python中,map 和 filter 是两个非常有用的内置函数,它们分别用于对可迭代对象中的每个元素执行某种操作,并返回结果。在JavaScript中,虽然没有内置的 map 和 filter 函数,但是可以使用数组的 map() 和 filter() …...
Linux中OS的管理和进程的概念
一、OS的管理 1.1操作系统宏观的理解 OS的本质是一款进行资源管理的软件 图示: 1.2OS存在的意义 1.2.1计算机的分层式管理结构 最底层的硬件部分遵循“冯诺依曼体系” ,每一种硬件都在驱动层中有着自己对应的“驱动程序” 在OS中,驱动管…...
Spring定时任务修仙指南:从@Scheduled到分布式调度的终极奥义
各位被Thread.sleep()和while(true)折磨的Spring道友们!今天要解锁的是Spring生态自带的定时任务三件套——Scheduled、TaskScheduler、Async定时组合技!无需引入外部依赖,轻松实现从简单定时到分布式调度的全场景覆盖!准备好抛弃…...
Node.js多版本共存管理工具NVM(最新版本)详细使用教程(附安装包教程)
目录 前言 一、Nvm下载 二、Nvm安装 三、配置nodeJS 前言 NVM(Node Version Manager)是一个用于管理多个Node.js版本的工具,主要帮助开发者在同一设备上轻松安装、切换和卸载不同版本的Node.js,解决项目间版本冲突问题。 一、…...
管道魔法木马利用Windows零日漏洞部署勒索软件
微软披露,一个现已修复的影响Windows通用日志文件系统(CLFS)的安全漏洞曾被作为零日漏洞用于针对少数目标的勒索软件攻击中。 01 攻击目标与漏洞详情 这家科技巨头表示:"受害者包括美国信息技术(IT)…...
Devops之Argo:Argo 是什么,和现在常用的Jenkins之间的区别
Argo CD(Argo Continuous Delivery 的缩写)是一款基于 GitOps 的声明式 Kubernetes 持续交付工具。它提供了一种以 Git 为中心的方法来管理和部署应用程序到 Kubernetes 集群。Argo CD 遵循 GitOps 的原则,即将应用程序的预期状态存储在 Git …...
从 60 FPS 掉帧到 7.6 倍提速Rust + WebAssembly 优化《生命游戏》的实战指南
一、构建 FPS 统计器:用 performance.now() 实时观察性能变化 要优化,就要先 测量。我们在 JavaScript 端添加一个 fps 对象,结合 performance.now() 来监控每一帧的耗时,并统计最近 100 帧的平均 FPS、最小 FPS、最大 FPS&#…...
jmeter 集成ZAP进行接口测试中的安全扫描 实现方案
以下是将 JMeter 集成 ZAP(OWASP Zed Attack Proxy)进行接口测试中安全扫描的实现方案: 1. 环境准备 JMeter 安装:从 JMeter 官方网站(https://jmeter.apache.org/download_jmeter.cgi)下载并安装 JMeter,确保其版本稳定。ZAP 安装:从 ZAP 官方网站(https://www.zapr…...
Hyperlane 文件分块上传服务端
Hyperlane 文件分块上传服务端:高效、可靠、易用的文件上传解决方案 引言 在现代 Web 开发中,文件上传是许多应用的核心功能之一。然而,随着文件大小的增加和网络环境的复杂性,传统的单次文件上传方式已经难以满足需求。Hyperla…...
BT面板docker搭建excalidraw遇到的问题
1.傻瓜式拉取镜像 2.点击创建容器 3.暴露端口 4.放行端口和服务器安全组,如果用的是轻量型服务器,那就关闭防火墙 下面放图...
Qt之OpenGL使用Qt封装好的着色器和编译器
代码 #include "sunopengl.h"sunOpengl::sunOpengl(QWidget *parent) {}unsigned int VBO,VAO; float vertices[]{0.5f,0.5f,0.0f,0.5f,-0.5f,0.0f,-0.5f,-0.5f,0.0f,-0.5f,0.5f,0.0f };unsigned int indices[]{0,1,3,1,2,3, }; unsigned int EBO; sunOpengl::~sunO…...
【仿Mudou库one thread per loop式并发服务器实现】项目介绍+前置技术知识点
HTTP协议模块实现 1. 项目实现的目标2. 项目储备知识2.1 HTTP服务器2.2 Reactor模型 3. 功能模块划分3.1 SERVER模块3.1.1 Buffer模块3.1.2 Socket模块3.1.3 Channel模块3.1.4 Poller模块3.1.5 EventLoop模块3.1.6 Connection模块3.1.7 7. Acceptor模块3.1.8 TimerQueue模块3.1…...
Open Interpreter:重新定义人机交互的开源革命
引言 在人工智能技术蓬勃发展的今天,人机交互的方式正经历着前所未有的变革。Open Interpreter,作为一个开源项目,正在重新定义我们与计算机的互动方式。它允许大型语言模型(LLMs)在本地运行代码,通过自然…...
Shell编程之条件语句
目录 一.条件测试操作 1.文件测试 2.整数值比较 3.字符串比较 4.逻辑测试 二:if条件语句 1.if语句的结构 (1)单分支if语句 (2)双分支if语句 (3)多分支if语句 2.if语句应用示例 &…...
Python编程快速上手 让繁琐工作自动化笔记
编程基础 字符串使用单引号...
高性能文件上传服务
高性能文件上传服务 —— 您业务升级的不二选择 在当今互联网数据量激增、文件体积日益庞大的背景下,高效、稳定的文件上传方案显得尤为重要。我们的文件分块上传服务端采用业界领先的 Rust HTTP 框架 Hyperlane 开发,凭借其轻量级、低延时和高并发的特…...
【从零开始学习JVM | 第二篇】HotSpot虚拟机对象探秘
对象的创建 1.类加载检查 虚拟机遇到一条new的指令,首先去检查这个指令的参数能否在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行类的加载过程。 2.分配内存 在类…...
浅谈前端开发中的 npm、cnpm、pnpm、yarn各自特点
在前端开发中的 npm、cnpm、pnpm、yarn 等工具都是包管理器(Package Manager),用于安装/更新/卸载 JavaScript 项目的依赖。 下面我详细地给你梳理下这些包管理器的作用、特点和适用场景👇 一. npm(Node Package Mana…...
【数据结构】包装类和泛型
目录 1.包装类 1.1 基本数据类型和对应的包装类 1.2 装箱和拆箱 1.3 自动装箱和自动拆箱 2.泛型 2.1泛型的概念 2.2引出泛型 3.语法 4.泛型类的使用 5.泛型的上界 1.包装类 在Java中,由于基本类型不是继承自Object,为了在泛型代码中可以支持基…...
红帽9运行容器一
运行容器:容器概念,构建,存储和运行容器的核心技术(用户资源管理的控制组,进程隔离的命名空间,加强安全边界的SELinux和Seccomp) 软件运行需要环境,系统库,配置文件和服…...
使用poi+itextpdf把word转成pdf
使用 Apache POI 和 iTextPDF 将 Word 转换为 PDF 需要分两步操作:先用 POI 读取 Word 内容,再用 iText 生成 PDF。 apache poi官方文档:Apache POI™ - Javadocs 以下是详细的代码实现示例: 环境准备 在 pom.xml 中添加依赖: …...
民安智库:开启零售行业客户满意度提升新征程
在当今这个瞬息万变的商业世界中,零售市场的竞争愈发激烈,犹如一场没有硝烟的战争。各大零售企业为了抢占市场份额,纷纷使出浑身解数,从商品种类的丰富到店铺环境的优化,从价格策略的调整到服务质量的提升,…...
自行搭建一个Git仓库托管平台
1.安装Git sudo apt install git 2.Git本地仓库创建(自己选择一个文件夹) git init 这里我在 /home/test 下面初始化了代码仓库 1. 首先在仓库中新建一个txt文件,并输入一些内容 2. 将文件添加到仓库 git add test.txt 执行之后没有任何输…...
无锡无人机超视距驾驶证怎么考?
无锡无人机超视距驾驶证怎么考?在近年来,无人机技术的迅猛发展使得无人机的应用场景变得愈发广泛,其不仅在环境监测、农业喷洒、快递配送等领域展现出真金白银的价值,同时也推动了无人机驾驶证的需求。尤其是在无锡,随…...