数字转换成十六进制数
数字转换成十六进制数 🎯 问题描述(来源于LeetCode) 123 给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用补码运算方法。答案字符串中的所有字母都应该是小写字符,并且除了 0 本身之外,答案中不应该有任何前置零。注意:不允许使用任何由库提供的将数字直接转换或格式化为十六进制的方法来解决这个问题。 💻 代码实现 123456789101112class Solution: def toHex(self, num: int) -> str: ans='' if num==0:return '0' a=['0','1','2','3','4','5','6','7','8','9','a','b','...
最大交换
最大交换 🎯 问题描述(来源于LeetCode) 12345给定一个非负整数,你**至多**可以交换一次数字中的任意两位。返回你能得到的最大值。示例 1 :输入:2736输出:7236解释:交换数字2和数字7。 💻 代码实现 123456789101112class Solution: def maximumSwap(self, num: int) -> int: digits = list(str(num)) n = len(digits) last = {int(d): i for i, d in enumerate(digits)} for i in range(n): for d in range(9, int(digits[i]), -1): if last.get(d, -1) > i: j = last[d] digits[i], d...
群组测试
群组测试 群组测试(Group Testing)是一种通过组合检测来高效识别少数异常个体(如感染者、缺陷品)的统计方法。其核心思想是将多个样本混合后进行单次测试,根据结果推断每个样本的状态,从而在总体样本量较大且异常比例较低时大幅减少检测次数。该方法最初由Rosenblatt和Dorfman于二战时期提出,用于美军梅毒血液筛查,如今已成为计算机科学、生物信息学、通信工程等多个领域的重要工具。 基本模型 假设有 n 个物品,其中至多d个为“缺陷品”(阳性)。每次测试可以选择任意物品子集,并获得一个二进制结果:1表示该子集中至少包含一个缺陷品,0表示没有缺陷品。目标是设计一系列测试,以最少的测试次数确定所有缺陷品的具体身份。 分类 自适应群组测试:后续测试依赖先前测试结果,可动态调整策略。经典案例如二分搜索,适用于缺陷品数量较少时,最优测试次数为 (O(dlogn))(O(d \log n))(O(dlogn))。 非自适应群组测试:所有测试提前设计,可并行执行。通常用 t×nt \times nt×n 的二进制矩阵表示,每行对应一个测试,每列对应一个物品。矩阵设计需满足分...
香农熵
如果说群组测试是一种“工程方法”,那么香农熵就是支撑其背后的“物理定律”之一(在信息论中)。 香农熵 香农熵,由克劳德·香农在1948年的划时代论文《通信的数学理论》中提出,是信息论的基石。它从根本上量化了“信息”、“不确定性”和“随机性”。 核心思想与定义 你可以把香农熵想象成**“意料之外”的平均程度**。 一个必然发生的事情(概率为1) 告诉你时,你不会感到任何“意外”,它提供零信息。 一个极不可能发生的事情(概率接近0) 发生时,你会感到巨大的“意外”,它提供了大量信息。 香农熵公式(对于离散随机变量X): H(X)=−∑ip(xi)log2p(xi)H(X) = -\sum_{i} p(x_i) \log_2 p(x_i) H(X)=−i∑p(xi)log2p(xi) 其中: *p(xi)p(x_i)p(xi)是事件xix_ixi发生的概率。 对数的底数通常为2,此时熵的单位是比特。 直观理解与例子 假设你有一枚硬币: 均匀硬币(公平): 正面概率p=0.5p = 0.5p=0.5,反面概率q=0.5q = 0.5q=0.5。 熵:H=...
吸引和亲密
吸引和亲密 人与人之间终生的相互依赖使得人际关系成为我们生存的核心。我们有一种强烈的归属需要—与他人建立持续而亲密的关系的需要。 罗伊·鲍麦斯特在拒绝研究中发现了: 当近期有过被拒斥经历的人再获得一个与新朋友交往的可靠机会时,他们“似乎愿意并渴望交往”。 要在社会水平上满足归属需要就应该有所付出。 导致友谊和吸引的因素 接近性 两个人能否成为朋友?接近性是一个强有力的预测源 事实上,地理距离并不是关键,功能性距离—人们的生活轨迹相交的频率—才是关键 这样的交往能使人们寻求彼此的相似性,感受对方的喜爱,并把自己和他们视为同一个社会的单元 达利和伯奇德发现 接近性能使人们发现共性并交换回报。更重要的是,仅仅是对相互交往的预期就可以引发喜欢 喜欢他们必定有助于和他们建立更好的关系,反过来,这样的关系也造就了更快乐、更有成就的生活。 200多个实验结果显示熟悉不会导致轻视 曝光效应 熟悉诱发了喜欢。对于各种新异刺激—无意义音节、汉字、音乐片段、面孔—的曝光都能提高人们对它们的评价 曝光效应违背了我们通常对厌倦(兴趣的降低)的预测,即重复听到的音乐和反复吃的食物会引起厌倦。除非...
12.1日常
📖 阅读与思考 今日阅读《社会心理学》,进度至促进亲密关系的因素。 感悟与联想: 增加了吸引和亲密的概念卡(待完善) 在今天的阅读中,我了解了一些有助于社交的方式,具有吸引力在哪一方面更有优势以及什么才是具有吸引力的人/最后阐述的一点关于爱情的介绍。激情之爱的确让人沉醉;但相伴之爱更让人幸福 💻 学习与代码 课程/领域: 增加了香农熵的概念卡 增加了群组测试的概念卡 实践/实验: LeetCode(可怜的小猪) LeetCode(阶乘后的零) LeetCode(交替位二进制数) LeetCode(各位相加) LeetCode(灯泡开关) 代码/项目: 进行特征选择(用户信息、电影信息、评分) 数据标准化 🎮 生活与观察 日常小事: HarmonyOS应用开发者基础认证(第一次考了73还好第二次考过了) 网络见闻
交替位二进制数
交替位二进制数 🎯 问题描述(来源于LeetCode) 1给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。 💻 代码实现 123456789class Solution: def hasAlternatingBits(self, n: int) -> bool: while n: a=n&1 n>>=1 b=n&1 if a^b==0: return False return True 📊 性能分析 提交结果 运行时间:0ms击败100.00 % 内存消耗:17.66MB击败14.25 % 复杂度验证 时间复杂度:O(1)O(1)O(1) 空间复杂度:O(1)O(1)O(1)
可怜的小猪
可怜的小猪 🎯 问题描述(来源于LeetCode) 123456789有 buckets桶液体,其中 正好有一桶 含有毒药,其余装的都是水。它们从外观看起来都一样。为了弄清楚哪只水桶含有毒药,你可以喂一些猪喝,通过观察猪是否会死进行判断。不幸的是,你有minutesToTest分钟时间来确定哪桶液体是有毒的。喂猪的规则如下:1. 选择若干活猪进行喂养2. 可以允许小猪同时饮用任意数量的桶中的水,并且该过程不需要时间。3. 小猪喝完水后,必须有minutesToDie分钟的冷却时间。在这段时间里,你只能观察,而不允许继续喂猪。4. 过了minutesToDie分钟后,所有喝到毒药的猪都会死去,其他所有猪都会活下来。5. 重复这一过程,直到时间用完。给你桶的数目buckets,minutesToDie` 和 minutesToTest,返回在规定时间内判断哪个桶有毒所需的最小猪数_ 。 灵感思路 我原本的想法采取群组测试的思想直接求取编码位数,但想不到如何引进最大测试次数与其的关系。通过阅览宫水三叶大佬的题解中进制猜想 & 香农熵验证得以知道测试次数与编码进制有关,原...
各位相加
各位相加 🎯 问题描述(来源于LeetCode) 1给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。 思路分析 原本想着先暴力破解再优化的,但一看下面的提升说,可以只用O(1)O(1)O(1)时间就可实现。直接就开始观察。最后列表一看,就发现规律了: 0 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 💻 代码实现 123456class Solution: def addDigits(self, num: int) -> int: if num==0: return 0 a=[1,2,3,4,5,6,7,8,9] return a[num%9-1] 📊 性能分析 提交结果 运行时间:0ms击败100.00% 内存消耗:17.75...
灯泡开关
灯泡开关 🎯 问题描述(来源于LeetCode) 12345初始时有 n个灯泡处于关闭状态。第一轮,你将会打开所有灯泡。接下来的第二轮,你将会每两个灯泡关闭第二个。第三轮,你每三个灯泡就切换第三个灯泡的开关(即,打开变关闭,关闭变打开)。第i轮,你每 i个灯泡就切换第 i 个灯泡的开关。直到第n轮,你只需要切换最后一个灯泡的开关。找出并返回n轮后有多少个亮着的灯泡。 灵感思路 结果n 0 0 sqrt(0) 1 2 3 1 sqrt(1) 4 5 6 7 8 2 sqrt(4) 9 10 11 12 13 14 15 3 sqrt(9) 16 17 18 19 20 21 ~~ 24 4 sqrt(16) 猜测结果=int(sqrt(n)) 向下取整 💻 代码实现 1234class Solution: def bulbSwitch(self, n: int) -> int: return int(math.sqrt(n)) ...













