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

数学刷题总结

9. 回文数

简单把几个用例拿出来,然后先解决大多的用例,然后处理少量用例,问题就解决了。

class Solution {public boolean isPalindrome(int x) {if (x < 0) {return false;}if (x < 10) {return true;}int y = 0;int x1 = x;while (x1 > 0) {int tmp = x1 % 10;x1 = x1 / 10;y = y * 10 + tmp;}return x == y;}
}

还是看看官方的题解吧,思路比我这个巧妙

class Solution {public boolean isPalindrome(int x) {// 特殊情况:// 如上所述,当 x < 0 时,x 不是回文数。// 同样地,如果数字的最后一位是 0,为了使该数字为回文,// 则其第一位数字也应该是 0// 只有 0 满足这一属性if (x < 0 || (x % 10 == 0 && x != 0)) {return false;}int revertedNumber = 0;while (x > revertedNumber) {revertedNumber = revertedNumber * 10 + x % 10;x /= 10;}// 当数字长度为奇数时,我们可以通过 revertedNumber/10 去除处于中位的数字。// 例如,当输入为 12321 时,在 while 循环的末尾我们可以得到 x = 12,revertedNumber = 123,// 由于处于中位的数字不影响回文(它总是与自己相等),所以我们可以简单地将其去除。return x == revertedNumber || x == revertedNumber / 10;}
}

. 算法元认知能力提升框架

4.1 解题前思考清单

  1. 边界条件
  • 负数、0、末尾0、最大/最小值
  • 数据类型溢出风险
  1. 问题本质
  • 回文的数学特性:对称性
  • 能否利用对称性减少计算量?
  1. 复杂度分析
  • 时间:能否从O(n)优化到O(n/2)?
  • 空间:能否O(1)?
  1. 特殊情况
  • 单数字、双数字
  • 奇偶位数差异

4.2 代码优化思考路径

原始思路↓ 识别模式(对称性)↓ 优化方向(只处理一半)↓ 处理边界(奇偶、特殊情况)↓ 验证正确性

6. 元认知提升要点

  1. 从"模拟"到"洞察"
  • 不要只满足于解决问题
  • 思考问题的数学/逻辑本质
  1. 提前考虑边界
  • 养成先列特殊情况的习惯
  • 负数、0、溢出是整数问题的常见陷阱
  1. 空间换时间思考
  • 这里虽然都是O(1)空间
  • 但时间减少了一半,是重要优化
  1. 测试驱动思考
  • 12321(奇数位)
  • 1221(偶数位)
  • 10、100(末尾0)
  • -121、0

7. 总结

差距主要在算法洞察力边界完整性 。提高方向:

  1. 多思考问题的数学特性
  2. 建立系统的边界检查习惯
  3. 追求最优解,不满足于可行解
  4. 理解每个优化的理论依据

这种差距的缩小需要: 刻意练习 + 深度思考 + 模式识别 。每次解题后,问自己:"这是最优解吗?还能更好吗?"

66. 加一

自己做的

class Solution {public int[] plusOne(int[] digits) {int carry = 1;int len = digits.length;for (int i = len - 1; i >=0; i--) {int tmp = digits[i] + carry;if (tmp >= 10) {carry = 1;} else {carry = 0;}digits[i] = tmp % 10;if (carry == 0) {return digits;}}int[] res = new int[len + 1];res[0] = 1;return res;}
}

下面是官方的解法,更加的间接,没有那么多变量去判断,理由特殊性,如果发现元素=9,那么置为0即可,否则发现第一个小于9的,则直接+1,然后返回

class Solution {public int[] plusOne(int[] digits) {int len = digits.length;for (int i = len - 1; i >=0; i--) {if (digits[i] < 9) {digits[i] = digits[i] + 1;return digits;} else {digits[i] = 0;}}int[] res = new int[len + 1];res[0] = 1;return res;}
}class Solution {public int[] plusOne(int[] digits) {int n = digits.length;for (int i = n - 1; i >= 0; --i) {if (digits[i] != 9) {++digits[i];for (int j = i + 1; j < n; ++j) {digits[j] = 0;}return digits;}}// digits 中所有的元素均为 9int[] ans = new int[n + 1];ans[0] = 1;return ans;}
}作者:力扣官方题解
链接:https://leetcode.cn/problems/plus-one/solutions/1057162/jia-yi-by-leetcode-solution-2hor/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

主要差距

  1. 思维抽象层次 :我关注过程模拟,官方关注规律总结
  2. 代码简洁性 :官方解法更精炼
  3. 问题洞察 :官方利用了"只是加1"的特殊性

缩小差距的方法

  1. 解决具体问题前,先分析其特殊性
  2. 尝试从 结果反推过程,寻找规律
  3. 写完代码后,问自己:"还能更简单吗?"
  4. 比较不同解法的核心差异,理解背后的思考方式
http://www.jsqmd.com/news/106329/

相关文章:

  • FlutterOpenHarmony底部导航栏组件开发
  • 2026年河北省职业院校技能大赛“信息技术应用创新”赛项(高职组)竞赛样题
  • FlutterOpenHarmony动画效果实现指南
  • 深度分析:AI智能体记忆是如何管理的?
  • 2025年中山可靠的无溶剂环氧涂料批发选哪家,石墨烯涂料/环氧玻璃钢/环氧酚醛/无溶剂环氧涂料/无溶剂环氧涂料设计推荐 - 品牌推荐师
  • 男生脱发:热门育发液哪个牌子效果最好?十大口碑防脱育发产品排行榜出炉 - 速递信息
  • 零样本克隆音色有多强?实测EmotiVoice语音复刻能力
  • kanass全面介绍(15) - Kanass如何有效集成sward文档
  • XL520无线接收芯片的简略说明
  • wechatapi-微信ipad协议新篇章-让账号更智能
  • 实用指南:智能网联汽车信息安全深度解析:从UN-R155与GB44495标准到OBD/UDS技术实践
  • sward全面介绍(14) - 集成企业微信,使用企业微信扫码登录sward
  • 【dz-943】基于单片机的电压表监测仪
  • 吴恩达深度学习课程四:计算机视觉 第二周:经典网络结构 (三)11卷积与Inception网络
  • Product Hunt 每日热榜 | 2025-12-17
  • Agent学习——通过ZENMUX来使用Xiaomi MiMo-V2-Flash(自用)
  • 苹果 iOS 开发真正复杂的不是写代码这方面,是证书、构建、上架
  • uniapp开发APP 内嵌外部 HTTPS 链接的实现方案
  • 新手跨境电商实测:Apache 搭站,雷池 WAF 零基础部署
  • es:python:指定索引的mapping和获取mapping
  • EDA 缩写全解析系列|第 2 周:J–R
  • TikTok Studio创作者工具打不开怎么办?
  • Spring Boot 自动配置的底层实现原理
  • 局部放电:电力设备的“隐形杀手”,三分钟搞懂它!
  • 全栈开发者:雷池 WAF 受欢迎,不是超越谁,是它不打扰开发
  • 工业清洗剂口碑排行:揭秘复购率高的脱漆剂定制源头,行业内工业清洗剂/去污剂厂商优选实力品牌 - 品牌推荐师
  • 电商网站如何用vue-qrcode实现优惠券分享?
  • AIoT:从万物互联到万物智联的进化之路
  • Java-IO流
  • 对比实测:传统安装vsDocker部署MySQL8的效率差异