分类: 代码

6 篇文章

【感受算法魅力T05】北湖深坑
思路分享 对于本题,某一横坐标处存在积水的条件是该点位于两个比他更高的坐标之间,且该坐标处的积水高度等于其两侧的第二高的高度与该点高度之差。 由此可见,我们只需要从左至右将所有点的积水高度相加即可。 解题步骤 要确定某一点是“制高点”还是“积水点”或其他点,我们需要知道该点两侧的高度信息。 我们可以声明两个数组,分别用于记录某一点(含该点)左侧以及…
【感受算法魅力T04】【可视化简单易懂】北湖挖坑
思路分享 本题中,我们需要让挖坑的次数最少,因此我们需要统计出不同高度层可以连续挖掘的区块个数。 这是一个正确的思路,但是如果我们根据不同高度层来遍历,在庞大的数据体量下必然会有TLE的风险,因此我们需要对这个算法进行优化。 注意到,当我们从左侧向右侧进行遍历时,我们可以根据高度的变化来计算需要挖掘的次数: 1. 当高度不变或上升时,我们…
【感受算法魅力T03】达拉崩吧的酒宴
思路分享 对于一只小白鼠,喝完酒后只会有【死 / 活】两种情况,这与二进制中的01相似。在本道题目中,我们同样可以用二进制来表示酒桶。每一只小鼠喝酒桶对应二进制编号中某一位为1的所有酒。我们可以将每一位上小白鼠的存亡用01来表示。最终得到的数便是有毒酒桶对应的二进制编号。 换而言之,我们只需要知道酒桶最多需要几位二进制数来表示,即可得出所需小鼠的数…
【感受算法魅力T02】摘桃子
思路分享 本题需要我们计算出能摘取到的桃子的最大值。解题策略如下: 先摘取昨日剩下的桃子; 其次摘取今天的新桃子。 这个思路其实很容易看懂。我们要让摘得的桃子数量最大化,必然要尽可能不让桃子过期。今日的桃子不摘明天还能摘,但是昨天的桃子不摘明天就摘不了了。 技巧 对于本道题目,我们不需要关注桃子在哪棵树上,只需要关注每天产出的桃子的总数,因此我们在…
【感受算法魅力T01】猜数字看人品
思路分析 本题需要我们判断Tom的回答是否合理。直观地,我们可以根据Tom的回答来确定数轴上的一条线段: 通过Tom的几轮回答,我们可以不断更新它的左右边界,即: 1. 当Tom回答"too low"时,更新左侧边界; 2. 当Tom回答"too high"时,更新右侧边界; 3. 当Tom回答"right on"时,更新目标点。 由此,我们可以轻…