被动收入
什么是被动收入 被动收入(Passive...
日常锻炼计划
1. 力量训练 体重训练:俯卧撑、引体向上(如果可能的话)、深蹲跳、平板支撑、仰卧起坐/卷腹。 2. 速度与爆发力 短跑冲刺:在安全的场地或跑步机上进行50米冲刺练习。 跳跃训练:立定跳远、箱跳(如果没有箱子可以做原地跳跃)、高抬腿跑。 3. 柔韧性和拉伸 静态拉伸:针对全身各大肌群,每个动作保持20-30秒。 动态拉伸:例如腿部摆动、肩部绕环等,适合用作热身活动。 瑜伽或普拉提:有助于提升整体柔韧性和核心稳定性。 4. 敏捷性 障碍跑:设置一些小障碍物(如书本),进行穿梭跑。 梯形跑:如果没有敏捷梯,可以在地面想象线条进行前后左右移动训练。 5. 心肺耐力 有氧运动:长跑、快走、原地高抬腿跑、登山者式(类似爬山的动作)。 高强度间歇训练(HIIT):短时间内高强度运动(如快速跳绳或原地跑步)与低强度恢复期交替进行。 6. 平衡能力 单腿站立:闭眼增加难度。 瑜伽姿势:如树式、战士三式等需要良好平衡感的动作。 猫牛式:瑜伽中的一个基本姿势,有助于脊柱灵活性和平衡感。 7....
3
...
3.01
教你透彻了解红黑树 二叉查找树 由于红黑树本质上就是一棵二叉查找树,所以在了解红黑树之前,咱们先来看下二叉查找树。 二叉查找树(Binary Search Tree),也称有序二叉树(ordered binary tree),排序二叉树(sorted binary tree),是指一棵空树或者具有下列性质的二叉树: 若任意结点的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若任意结点的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 任意结点的左、右子树也分别为二叉查找树。 没有键值相等的结点(no duplicate nodes)。 因为,一棵由n个结点,随机构造的二叉查找树的高度为lgn,所以顺理成章,一般操作的执行时间为O(lgn).(至于n个结点的二叉树高度为lgn的证明,可参考算法导论 第12章 二叉查找树...
3.02
B树 1.前言: 动态查找树主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search Tree),红黑树(Red-Black Tree ),B-tree/B±tree/ B*-tree (B~Tree)。前三者是典型的二叉查找树结构,其查找的时间复杂度O(log2N)与树的深度相关,那么降低树的深度自然会提高查找效率。 但是咱们有面对这样一个实际问题:就是大规模数据存储中,实现索引查询这样一个实际背景下,树节点存储的元素数量是有限的(如果元素数量非常多的话,查找就退化成节点内部的线性查找了),这样导致二叉查找树结构由于树的深度过大而造成磁盘I/O读写过于频繁,进而导致查询效率低下,因此我们该想办法降低树的深度,从而减少磁盘查找存取的次数。一个基本的想法就是:采用多叉树结构(由于树节点元素数量是有限的,自然该节点的子树数量也就是有限的)。 这样我们就提出了一个新的查找树结构——平衡多路查找树,即B-tree(B-tree树即B树*,B即Balanced,平衡的意思**)**,这棵神奇的树是在Rudolf Bayer,...
3.03
最近公共祖先LCA问题 问题描述 求有根树的任意两个节点的最近公共祖先。 分析与解法 解答这个问题之前,咱们得先搞清楚到底什么是最近公共祖先。最近公共祖先简称LCA(Lowest Common Ancestor),所谓LCA,是当给定一个有根树T时,对于任意两个结点u、v,找到一个离根最远的结点x,使得x同时是u和v的祖先,x 便是u、v的最近公共祖先。(参见:http://en.wikipedia.org/wiki/Lowest_common_ancestor )原问题涵盖一般性的有根树,本文为了简化,多使用二叉树来讨论。 举个例子,如针对下图所示的一棵普通的二叉树来讲: 结点3和结点4的最近公共祖先是结点2,即LCA(3 4)=2 。在此,需要注意到当两个结点在同一棵子树上的情况,如结点3和结点2的最近公共祖先为2,即...
3.05
R树:处理空间存储问题 R树简介 984年,加州大学伯克利分校的Guttman发表了一篇题为“R-trees: a dynamic index structure for spatial...
二叉树与图的经典算法问题集锦
本章堆栈树图相关的习题 1、附近地点搜索 找一个点集中与给定点距离最近的点,同时,给定的二维点集都是固定的,查询可能有很多次,例如,坐标(39.91, 116.37)附近500米内有什么餐馆,那么让你来设计,该怎么做? 提示:可以建立R树进行二维搜索,或使用GeoHash算法解决。 2、最小操作数 给定一个单词集合Dict,其中每个单词的长度都相同。现从此单词集合Dict中抽取两个单词A、B,我们希望通过若干次操作把单词A变成单词B,每次操作可以改变单词的一个字母,同时,新产生的单词必须是在给定的单词集合Dict中。求所有行得通步数最少的修改方法。 举个例子如下: Given: A = “hit” B = “cog” Dict = [“hot”,“dot”,“dog”,“lot”,“log”] Return [ [“hit”,“hot”,“dot”,“dog”,“cog”], [“hit”,“hot”,“lot”,“log”,“cog”] ] 即把字符串A = "hit"转变成字符串B = “cog”,有以下两种可能: “hit” -> “hot”...
4.01
有序数组的查找 题目描述 给定一个有序的数组,查找某个数是否在数组中,请编程实现。 分析与解法 一看到数组本身已经有序,我想你可能反应出了要用二分查找,毕竟二分查找的适用条件就是有序的。那什么是二分查找呢? 二分查找可以解决(预排序数组的查找)问题:只要数组中包含T(即要查找的值),那么通过不断缩小包含T的范围,最终就可以找到它。其算法流程如下: 一开始,范围覆盖整个数组。 将数组的中间项与T进行比较,如果T比数组的中间项要小,则到数组的前半部分继续查找,反之,则到数组的后半部分继续查找。 如此,每次查找可以排除一半元素,范围缩小一半。就这样反复比较,反复缩小范围,最终就会在数组中找到T,或者确定原以为T所在的范围实际为空。 对于包含N个元素的表,整个查找过程大约要经过log(2)N次比较。 此时,可能有不少读者心里嘀咕,不就二分查找么,太简单了。 然《编程珠玑》的作者Jon...
行列递增矩阵的查找
...