两整数相加
问题描述(来源于LeetCode) 给定两个整数 num1 和 num2,返回这两个整数的和。 解题思路分析 问题本质 这是一个基础的算术运算问题,考察对编程语言基本运算符的掌握程度。 核心思路 直接使用加法运算符 + 计算两个整数的和。 代码实现 123class Solution: def sum(self, num1: int, num2: int) -> int: return num1 + num2 算法详解 实现步骤 接收参数:获取两个整数 num1 和 num2 计算和:使用加法运算符直接计算 返回结果:返回计算结果 关键点 直接使用语言内置的加法运算符 不需要任何额外的数据处理或转换 复杂度分析 时间复杂度:O(1) 只进行一次加法运算 空间复杂度:O(1) 不使用额外的存储空间 边界情况考虑 正常情况 12输入:num1 = 12, num2 = 5输出:17 特殊情况 包含零的情况 12输入:num1 = 0, num2 = 5输出:5 负数情况 12...
11.13 日常 | 直觉的陷阱与品牌的力量
今天继续阅读《思考,快与慢》的第三部分,深入了解了几个影响我们判断的重要概念: 大数定律:样本量越大,结果越接近理论预期 小数定理:人们倾向于从小样本中过度推断结论 锚定效应:初始值会像“锚”一样制约后续判断 这些原理揭示了系统1(快思考)如何在无意识中主导我们的决策。书中提醒我们:无论直觉准确与否,都需要保持警惕。通过大量专注的练习和在合适环境下的应用,我们能够提升直觉的可靠性,但这需要持续的自我觉察。 今天还读到一篇关于苹果公司新款手机袋的短文。这款与三宅一生合作设计的布质手机袋起价150美元,引发了广泛争议。有人批评其定价过高,也有人赞赏其设计理念。这让我深刻感受到品牌效应的力量——当品牌积累足够的影响力时,即使看似简单的产品也能获得市场关注。 今日学习进展: 上午完成了离散数学作业 中午刷了4道LeetCode算法题(包括两数相加、最小偶倍数等基础题型) 晚上学习了微机原理第三章,计划明天整理笔记 从认知偏见到商业策略,从数学证明到系统编程,今天依然是在多重思维维度间穿梭的一天。保持理性的思考,同时理解感性的选择,或许就是我们这个时代需要...
11.12 日常 | 思考的顺序与善意的本能
今天继续阅读《思考,快与慢》。在第一部分中,我了解到人类思维运作的两种基本模式——系统1(快思考)与系统2(慢思考)。它们并无绝对的高下之分,而是各有所长:系统1依赖直觉与经验,是我们日常决策的主力;系统2则更理性、审慎,在复杂情境下被唤醒。 书中提到一个经典心理学实验,让我印象深刻: “所罗门·阿希曾描述两个人——艾伦与本,请受试者评价他们的性格: 艾伦:聪明—勤奋—冲动—爱挑剔—固执—忌妒心强 本:忌妒心强—固执—爱挑剔—冲动—勤奋—聪明 尽管两人特质完全相同,仅顺序相反,大多数人却更喜欢艾伦。前几条特质会改变我们对后续特质的理解——我们愿原谅聪明人的固执,却会因忌妒者的聪明而警觉。” 原来,顺序本身就在无声地塑造我们的认知。这也让我联想到,“白月光之所以无可替代”,或许不仅因为那个人本身,也因ta出现在我们生命序列中最恰当的位置。 晚上读了一篇关于“潜在英雄”的短文。研究指出,人在危急时刻并非如电影中那样恐慌逃散,反而常会展现出自然的利他倾向。“旁观者冷漠”实为误解,团结互助才是人性底色。这令人感到温暖,也提醒我们:善意本就埋藏在每个人的本能之中。 今天,...
温度转换
问题描述(来源于leetcode) 给定一个四舍五入到两位小数的非负浮点数 celsius 表示摄氏度,需要将其转换为开氏度和华氏度,并以数组 [kelvin, fahrenheit] 的形式返回结果。 转换公式 开氏度 = 摄氏度 + 273.15 华氏度 = 摄氏度 × 1.80 + 32.00 注意: 与实际答案误差不超过 10⁻⁵ 的结果被视为正确。 解法分析 这是一个基础的数学计算问题,直接应用给定的转换公式即可解决。 代码实现 12345class Solution: def convertTemperature(self, celsius: float) -> List[float]: Kelvin = celsius + 273.15 Fahrenheit = celsius * 1.80 + 32.00 return [Kelvin, Fahrenheit] 算法详解 步骤分解 接收输入:获取表示摄氏度的浮点数 celsius 计算开氏度:使用公式 Kelvin = celsius + 27...
两数之和
问题描述(问题来源于LeetCode) 给定一个整数数组 nums 和一个整数目标值 target,在数组中找出和为目标值的那两个整数,并返回它们的数组下标。 假设每种输入只会对应一个答案,并且不能使用两次相同的元素。 示例: 12345text输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:nums[0] + nums[1] = 2 + 7 = 9 解法:暴力枚举 思路分析 通过两层循环遍历所有可能的数字组合,检查它们的和是否等于目标值。 代码实现 12345678pythonclass Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: for i in range(len(nums)): for j in range(i + 1, len(nums)): if nums[i] + nums[j] == target: ret...
11.11 日常 | 细菌、量子与延迟工作
今天早上读了一篇很有意思的科普短文,探讨了我们穿着外衣直接坐在床上是否会带来细菌污染。文章指出,虽然理论上衣物可能成为病菌传播的媒介,但实际风险很低——大多数病原体在织物上存活时间很短,且需要达到一定数量才能致病。不过,如果家里有免疫力较弱的成员,或是衣物被明显污染时,及时更换仍是明智之举。 中午终于读完了《上帝掷骰子吗》这本量子物理科普书。虽然之前通过《时间简史》对部分内容有所了解,但这次阅读仍让我收获颇丰,特别是对“观察者效应”和“超弦理论”有了更深入的理解。量子世界的发展史充满了意外与突破,许多伟大发现往往在多年后才显现其深远意义。 下午完成了操作系统实验二,晚上则练习了一道LeetCode算法题——经典的“两数之和”。我采用了暴力枚举的解法,虽然时间复杂度较高(O(n²)),但胜在思路直观,适合小规模数据。 12345678pythonclass Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: for i in range(len(nums)): ...
微型计算机概述
1基本概念 1.1 微处理器: CPU内核 单核处理器 多核处理器 微型计算机 微型计算机系统 单片机 单片机系统 Soc(System on Chip) 嵌入式系统 1.2微型计算机系统的简化结构 1.3嵌入式系统的特点 以应用为核心, 以计算机技术为基础, 软、硬件可“裁剪”, 适合对功能、实时性、可靠性、安全性、体积、重量、成本、功耗、环境、安装方式等方面有严格要求的专用计算机系统。 更强功能、更小尺寸的高级单片机系统。 2 微处理器概述 3 微型计算机(PC)概述 3.1 硬件 ①微型计算机(主机): CPU、系统总线、内存、接口 ②外围设备: 外部设备 输入设备、输出设备、辅助存储器 辅助设备:电源电路、时钟电路 3.2 软件 ①系统软件: 对各部分硬件管理、协调:OS 编程语言开发工具、数据库管理系统、 硬件监测诊断工具 ②应用软件(用户软件) 3.3 PC的基本组成 内存:也称主存,CPU可直接访问的存储器。 4 习题练习 1.8088是____位处理器 解答:8088是16位...
11.10 日常 | 量子、单调栈与生活的细节
上午写完了离散数学的作业,在集合与逻辑的世界里完成了一次思维的漫步。 下午则整理了微机原理的第一章——微型计算机概述,将那些基础的架构与概念重新梳理,为后续的学习打下地基。 今天的阅读依旧是《上帝掷骰子吗?》。这本关于量子物理发展的科普书,其中大部分内容我其实已在《时间简史》中有所涉猎,因此阅读的新鲜感不免减弱。但既然打开了,还是决定把它读完——每一本科普作品都凝聚着作者的心血,不应被轻易辜负。 今天读到了“薛定谔的猫”这一经典思想实验的提出。再次回顾量子力学这段充满争议与突破的历史,不禁感叹:许多伟大的发现,往往诞生于不经意的瞬间,或是其深远意义要经过漫长时光才能被真正理解。这种“延迟的震撼”,恰恰是科学史最迷人的地方之一。 今天还读了两篇短文。一篇谈及塑造我们的,往往是生活中那些微小的细节;另一篇则介绍了一个关于人际交流的四种状态模型,简洁而富有启发性。 晚上继续刷题,学习了单调栈算法。这种数据结构在处理“下一个更大元素”类问题时,展现出一种优雅的简洁与高效。 今天,是从数学到物理,从理论到实践,从宏大叙事到生活细节的一天。世界由量子的不确定性与人际交流的确定性共同构成,...
将所有元素变为 0 的最少操作次数
问题描述 给定一个大小为 n 的非负整数数组 nums,我们需要通过若干次操作将数组中的所有元素变为 0。每次操作可以选择一个子数组 [i, j],将该子数组中所有最小的非负整数设为 0。目标是找到使整个数组变为 0 所需的最少操作次数。 关键思路 经过分析,发现这个问题可以通过单调栈高效解决。核心思路是: 维护一个单调递减栈,栈中元素表示需要单独处理的不同数值 当遇到比栈顶元素小的数字时,需要先处理掉栈顶元素(弹出并计数) 最终栈中剩余的元素也需要各自处理 算法实现 12345678910111213141516171819class Solution: def minOperations(self, nums: List[int]) -> int: stack = [] # 单调递减栈 operations = 0 # 操作计数器 for num in nums: # 当栈不为空且栈顶元素大于当前元素时 while stack and s...
单调栈
单调栈算法 123 单调栈是一种特殊的数据结构,分为单调递增栈和单调递减栈,保证元素从栈顶到栈底的单调性。单调栈常用于在O(n)O(n)O(n)的时间复杂度内寻找序列中某些元素的相邻元素,如左侧第一个更大/更小的元素等。 单调递增栈 单调递增栈的特点是从栈顶到栈底的元素是单调递增的。只有比栈顶元素小的元素才能直接进栈,否则需要先将栈中比当前元素小的元素出栈,再将当前元素入栈。这样就保证了栈中保留的都是比当前入栈元素大的值。 代码示例 1234567891011121314def monotoneIncreasingStack(nums):stack = []for num in nums:while stack and num >= stack[-1]:stack.pop()stack.append(num)return stack 单调递减栈 单调递减栈的特点是从栈顶到栈底的元素是单调递减的。只有比栈顶元素大的元素才能直接进栈,否则需要先将栈中比当前元素大的元素出栈,再将当前元素入栈。这样就保证了栈中保留的都是比当前入栈元素小的值。 代码示例 12345678910...














