
程序的艺术
文章平均质量分 73
对于编程来说,算法和数据结构就是最美的艺术,让我们陶醉其中吧.....
Once-Day
长路漫漫,一人太孤单,无人理解,独自前行,给世界留下一点微不足道的痕迹,稍微弥补曾经的遗憾。
展开
-
研发效率破局之道阅读总结(1)研发效能
研发团队看起来人也不少,大家也很辛苦,加班也不少了,但是产品发布还是常常延期,上线后产品问题频发。用户需求从需求分析、产品设计、开发、测试最终流到部署,但最终发布的产品与用户需求偏差却很大。产品发布上线时出现大量提交、合并,导致最后时刻出现很多问题,团队成员集体熬夜加班,却将大把的时间花在了等待环境、等待验证上。开发提测质量不好,大量压力聚集到测试这一步,导致代码返工率很高。引入单元测试、代码审查,效果却都不明显。原创 2025-04-08 22:29:37 · 867 阅读 · 28 评论 -
代码训练LeetCode(2)区间列表的交集
让我们用一个简单的比喻来理解这个编程题目。想象你手中有两根彩色的绳子,这两根绳子由不同颜色的段落组成,每个颜色的段落代表一个闭区间。现在你的任务是找出这两根绳子中颜色相叠的部分,这些部分就是两组区间的交集。原创 2024-03-05 23:58:23 · 1096 阅读 · 17 评论 -
代码训练LeetCode(1)合并有序数组详解
关于合并两个有序数组的问题,我可以为你提供一个通俗易懂的解释,以及C语言的实现方法。首先,想象你有两排学生,他们分别按身高从矮到高排好了队。现在我们要将这两排学生合并成一排,同时保持身高从矮到高的顺序。这就像我们要合并的两个数组,分别是nums1和nums2,它们已经按照非递减顺序(即从小到大)排列好。整数m和n分别告诉我们nums1和nums2中有多少个元素是有效的。原创 2024-03-05 23:56:17 · 929 阅读 · 0 评论 -
(转载)CS自学(2)合适的提问方式
在黑客的世界里,当你拋出一个技术问题时,最终是否能得到有用的回答,往往取决于你所提问和追问的方式。本指南将教你如何正确地提问以获得你满意的答案。现在开源(Open Source)软件已经相当盛行,您通常可以从其他更有经验的用户那里获得与黑客一样好的答案,这是件好事;和黑客相比,用户们往往对那些新手常遇到的问题更宽容一些。尽管如此,以我们在此推荐的方式对待这些有经验的用户通常也是从他们那里获得有用答案的最有效方式。首先你应该明白,黑客们喜爱有挑战性的问题,或者能激发他们思维的好问题。转载 2023-12-18 23:28:00 · 156 阅读 · 0 评论 -
设计模式之(1)基础知识
设计模式的概念最早源自于建筑学家克里斯托弗·亚历山大在1970年代的研究。他尝试找出建筑设计中的一些常见问题和解决方案,然后将这些解决方案记录为“模式”。这个概念后来被软件工程界接纳,尤其是在Erich Gamma, Richard Helm, Ralph Johnson和John Vlissides(被称为“四人帮”)的《设计模式:可复用面向对象软件的基础》一书中得到了深入的探讨。设计模式是为了解决在软件设计中经常遇到的一些特定问题提供的一种模板性的解决方案。原创 2023-12-12 21:51:30 · 1057 阅读 · 0 评论 -
数据结构之线性表(bsd, sys/queue.h)
线性表(linear list)存在唯一的头部数据和尾部数据,而且中间的每个数据都有一个前驱元素和后驱元素。线性表是有限个元素的序列,如一维数组和链表。每个数据元素可由若干个数据项构成。a1a2an−1ana1a2....an−1an**数据元素n即为线性表的长度。**也可以看到每个元素都有个确切的位置,并且长度也可根据需要增长和缩短。本文介绍的线性表以linux自带的为例子,该列表来自于FreeBSD中的一个头文件。原创 2023-05-28 16:14:19 · 1526 阅读 · 0 评论 -
位级运算之提取位级表示的最高位
提取位级表示的最高位,一种快速的算法。原创 2022-07-31 14:25:19 · 940 阅读 · 0 评论 -
位级运算之计算整数位级表示奇偶性
计算整数位级表示的一种快速算法原创 2022-07-31 14:21:38 · 392 阅读 · 0 评论 -
算法之八皇后谜题(以序列为约定界面来求解)
author:onceday date:2022年6月15日在国际象棋棋盘上,如8x8大小,摆放8个皇后,使其任意两个皇后都不能在同一行、同一列或者同一对对角线上。假设棋盘大小为n∗nn*nn∗n,皇后数量也为n个。一种解法是,从一个方向,如从右向左遍历棋盘,每遍历一列,都有n种可能性,然后将这些可能一一过滤,去掉不满足条件的情况,剩下的继续下一轮操作。最后放完所有皇后剩下的情况都将是该问题的解。每一种情况按一下方式存放。...原创 2022-06-15 12:58:08 · 245 阅读 · 0 评论 -
算法之过程计数(丘奇)
author:onceday date:2022年6月15日,以及为使这些过程成为一套合法表示,它们就必须满足的一组特定条件。目前有两种方法来形式化它:一个较为明显的例子是序对的过程性表示。原创 2022-06-15 12:57:25 · 252 阅读 · 0 评论 -
算法之区间算术
author:onceday date:2022年6月15日诸如电阻之类实际问题都会有一个误差,如何根据已知的基本元器件误差计算组合元器件的误差就显得很有实际价值。将区间抽象为复合数据类型,其为一个(上限值+下限值)的组合。...原创 2022-06-15 12:56:12 · 1354 阅读 · 0 评论 -
算法之有理数运算
author:onceday date:2022年6月15日构建抽象复合数据:以下是其构造函数和选择函数:即使在没有具体将这些有理数实现的情况下,也可以根据抽象的数据对其进行计算。这是一种按愿望思维的强大能力。基于以下数学过程:...原创 2022-06-15 12:49:28 · 318 阅读 · 0 评论 -
算法之不动点、平均阻尼、一般性牛顿法
author:onceday date:2022年6月12日如果存在:函数不动点、平均阻尼,牛顿法求解x^n的根原创 2022-06-12 12:51:47 · 586 阅读 · 0 评论 -
算法之抽象求和器、累积器、过滤器
author:onceday date:2022年6月11日∑n=abf(n)=f(a)+...+f(b)三类简单的抽象操作原创 2022-06-11 18:11:46 · 164 阅读 · 0 评论 -
算法之素数检测
author:onceday date:2022年6月11日几种常见素数检测方法原创 2022-06-11 17:25:56 · 443 阅读 · 0 评论 -
算法之unix时间戳和UTC时间(年月日)互换
author:onceday date:2022年6月8日一个简单而效率的unix时间戳和UTC时间互换算法。3.底层tick滴答时钟获取函数4.标准时间time()函数,返回时间点用于时间计算5.星期计算公式,由年月日计算当前星期情况参考文档:C语言根据日期判断星期几(使用基姆拉尔森计算公式) (51hei.com)6.Unix时间戳计算标准UTC时间这里需要注意闰年的计算,如果计算缺少,就会影响到最终天数的准确性。7.标准UTC时间生成Unix时间戳8.time标准库函数实现...原创 2022-06-08 17:00:53 · 3452 阅读 · 0 评论 -
算法之对数步数求出斐波那契数
author:onceday date:2022年6月8日斐波那切数表达式fib(n)={0如果n=01如果n=1fib(n−1)+fib(n−2)其他情况fib(n)=\begin{cases}0&\text{如果}n=0\\1&\text{如果}n=1\\fib(n-1)+fib(n-2)&其他情况\end{cases}fib(n)=⎩⎪⎨⎪⎧01fib(n−1)+fib(n−2)如果n=0如果n=1其他情况因此有:(fib(1),fib(0))=(1,0)=(a,b)(fi原创 2022-06-08 16:34:01 · 210 阅读 · 0 评论 -
算法之迭代法求乘积值
author:onceday date:2022年6月8日这里支持double翻倍和halve折半运算。如何迭代计算a∗ba*ba∗b呢?令d+a∗b=a∗bd+a*b=a*bd+a∗b=a∗b,则d=0d=0d=0。一样分析,如果b为偶数,则:d+a∗b=d+2a∗(b/2)=d′+a′∗b′d′=d,a′=2a,b′=b/2d+a*b=d+2a*(b/2)=d'+a'*b'\\d'=d,a'=2a,b'=b/2d+a∗b=d+2a∗(b/2)=d′+a′∗b′d′=d,a′=2a,b′=b/2原创 2022-06-08 16:30:40 · 240 阅读 · 0 评论 -
算法之迭代法求幂运算值
author:onceday date:2022年6月8日当n是偶数时,有bn=(b2)n/2b^n=(b^2)^{n/2}bn=(b2)n/2。令其表示成(a=1):a∗bn=a(b2)n/2a*b^n=a(b^2)^{n/2}a∗bn=a(b2)n/2再令:a∗bn=a′(b′)n′,a′=a,b′=b2,n′=n/2a*b^n=a'(b')^{n'},a'=a,b'=b^2,n'=n/2a∗bn=a′(b′)n′,a′=a,b′=b2,n′=n/2当n是奇数时,有a∗bn=ab∗(b原创 2022-06-08 16:27:53 · 595 阅读 · 0 评论 -
算法之求正弦值
author:onceday date:2022年6月8日当角度(弧度)很小时,其正弦值可以用sinx≈xsinx\approx xsinx≈x表示。再利用以下公式就可以计算得sinxsinxsinx的近似值了。sinx=3sinx3−4sin3x3sinx =3 sin\frac{x}{3}-4sin^3\frac{x}{3}sinx=3sin3x−4sin33x其时间复杂度是对数复杂度。...原创 2022-06-08 16:23:10 · 659 阅读 · 0 评论 -
算法之牛顿法求平方根+立方根
author:onceday date:2022年6月8日牛顿法基于以下几步来求出平方根:将上面的步骤写成代码如下:如何判断猜测值是否足够好呢?可以根据猜测值的平方与被开方数之差小于某个固定值,如0.0001;但是,这对于较大的数来说,不错,因为0.0001相对10,10000等来说是很小的。但对于0.001来说,其精度就太低了。因此可以使用百分比来衡量是否足够好,即监视猜测值在从一次迭代到下一次迭代的变化情况,当改变值相对于猜测值的比率很小时就结束。在这个基础上还可以实现求立方根的算法:...原创 2022-06-08 16:20:10 · 676 阅读 · 0 评论 -
算法之整钱找零
author:onceday date:2022年6月8日使用递归法解决非常简单,但效率有点低。现金a换成n种硬币的方式,分成两种情况考虑:依次递归计算则可得到最终的现金a换成n种硬币的方式。原创 2022-06-08 16:15:51 · 417 阅读 · 0 评论