链表,栈,队列

目录

  1. 一些算法题
    1.1 问题1:系统数数
    1.2 问题2:战平即可出线
    1.3 问题3:逻辑推理
    1.4 问题4:天平与假币
  2. 链表
    2.1 链表相加
    2.2 链表的部分翻转
  3. 堆,栈
  4. 队列

1.一些算法题

算法包罗万象

  • 推理,逻辑,“机智“
  • 演绎,归纳,类比
  • 严格归纳

以上任何一种能力,都要用到,而且用熟,
如果合理利用,可以非常便利得减少时间复杂度和空间复杂度。

看几个问题:

1.1 问题1:系统数数

横纵棋盘由19条线组成,问这些线能组成多少个正方形?

  1. 思路1:从边长的角度思考,边长为1的有18*18个,边长为2的有17*17个, ,加起来即可
  2. 思路2:从点的角度思考。以每一个点为右下角各有多少个正方形,加起来就OK了。

因此,经过总结,可以建模:当长度为i时,有 (20i)2 个正方形,为了方便扩展,写成: (19+1i)2
对应的python程序为:

def countSqure(num):
    squreSum = 0
    for i in range(1,num + 1):
        squreSum += (num + 1 -i)**2
    return squreSum
num = countSqure(19)
print num
2470

1.2 问题2:战平即可出线

足球比赛,一个小组有八支球队进行单循环赛,胜者积3分,平则各积1分,负则不积分,规定积分最高的四只球队出线,问:至少需要多少分出线?未出线最多可能有多少分?

战况分析1:

  • 出线的四支球队中,第四支球队的分数应该是最少的,它至少要多少分才能出线呢?
  • 八支球队,我们分成三支强队和五支弱队,三支强队各自战胜五支弱队,而五支弱队之间全部战平,则五支弱队的积分都是4,可以通过抽签等方式决定第四支出线的队伍。

战况分析2:

  • 未出线的第5支强队的分,应该是最高的。
  • 假设有五支强队,他们都分别战胜了其他三支弱队,五支强队之间均按照顺序战胜了自己前后的两支强队,所以五支强队间都是胜5场,负2场。然后再通过抽签的方式来绝对第五支强队出线。这种情况下,第五支强队为出线,且分数最高,为15分。

事实上,这就是用了贪心法,或者说使用了临界点的极端情况。因为是选择4支球队,所以第五支和第三支就是我们的关注点。

思维模式:从题目中充分挖掘关键信息;选择极端条件;

1.3 问题3:逻辑推理

皇帝不是穷人,在守财奴中也有穷人,所以有一些_____不是_____

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值