自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

猫小九的博客

一个码农罢了

  • 博客(8)
  • 资源 (1)
  • 收藏
  • 关注

原创 设计模式——策略模式

设计模式——策略模式

2025-10-27 22:51:16 334

原创 面向对象设计原则

面向对象设计的核心原则是提高系统可维护性和抵御变化能力。主要包括:依赖倒置(稳定模块依赖于抽象)、开放封闭(可扩展不可修改)、单一职责(一个类一个变化原因)、Liskov替换(子类可替换基类)、接口隔离(小而完备的接口)。此外,应优先使用对象组合而非继承,封装变化点,针对接口而非实现编程。这些原则共同实现"高内聚、松耦合"的设计目标,使系统更易于扩展和维护。

2025-10-21 22:06:54 414

原创 经典问题——接雨水

本文介绍了解决接雨水问题的双指针算法。该问题本质是相向双指针问题,基于木桶原理:接水量由较矮边决定。通过维护两个变量pre_max和suf_max分别记录左右墙的最大高度,比较两者后决定移动指针方向,并计算当前可接雨水。代码展示了简洁高效的C++实现,时间复杂度为O(n),空间复杂度为O(1)。该解法可参考LeetCode第42题。

2025-06-23 22:17:53 179

原创 nSum问题

本文介绍了一种解决n数之和(nSum)问题的递归分治方法。核心思想是将n数之和分解为两数之和的基础问题,通过递归降低问题规模。文章提供了C++实现模板,包含排序预处理、双指针法解决两数之和(base case),以及递归处理n>2情况。该方法通过将问题分解为(n-1)Sum并组合结果,最终得到n数之和的所有解。同时处理了重复元素问题,确保结果唯一性。

2025-06-23 22:17:03 239

原创 C++vector<vector<bool>>实现细节

C++中std::vector<std::vector<bool>>存在特殊实现细节,它使用位压缩优化存储而非直接存储布尔值,每个元素实际是代理对象而非真正的bool引用。与std::vector<std::vector<char>>相比:内存更节省(1bit/元素 vs 1byte/元素)操作更复杂(需要位运算)无法获取元素地址调试更困难 建议在非极端内存需求场景下使用vector<vector<char>>替代,以获得更好的可维护性和性能。示例代码展示了两种实现的类型差异和实际使用效果。

2025-06-23 22:13:43 639

原创 回溯算法框架总结

nums。

2025-06-19 21:46:14 341

原创 数据结构之线段树

一种基于分治思想的二叉树,用于在区间上进行信息统计。它的每一个节点都对应一个区间 [left,right] ,left、right 通常是整数。每一个叶子节点表示了一个单位区间(长度为 1),叶子节点对应区间上 left==right。每一个非叶子节点 [left,right] 的左子节点表示的区间都为 [left,(left+right)/2],右子节点表示的的区间都为 [(left+right)/2+1,right]。线段树是一棵平衡二叉树,树上的每个节点维护一个区间。

2025-01-04 23:12:17 1102

原创 C++学习路线及推荐书籍

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、C/C++学习路线二、推荐书籍1.C/C++书籍2.编程四大件(数据结构、网络、操作系统、设计模式)推荐书籍3.linux/Unix推荐书籍总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、C/C++学习路线C -> C++ -&g.

2022-04-22 11:49:50 3970 1

C语言实现扑克牌游戏

一款C语言实现的扑克牌小游戏,用到了随机函数,初学者可以看一下,方便日后学习。游戏规则: 游戏开始时,向所有参与者(庄家和闲家)分发两张扑克牌。玩家可以看到他们的牌以及点数总和。然而,庄家有一张牌暂时不可见。 接下来,每个玩家只要愿意,每次都有机会添加一张新牌。如果玩家的点数总和超过21点,则玩家失败。当所有玩家选择是否添加新牌之后,庄家亮出隐藏的牌。 如果庄家的点数总和小于或等于16,庄家必须添加新牌。如果庄家点数超过21点,则点数没有超过21点的所有玩家胜出;否则比较庄家总点数与剩下玩家的总点数。 如果某个玩家的点数大于庄家点数,则他获胜;反之则失败。如果两

2020-10-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除