leetcode刷题(一)_数组类_4:二维数组及滚动数组

二维数组及滚动数组

涉及题目

118-杨辉三角-简单119-杨辉三角II-简单661-图片平滑器-简单598-范围求和II-简单419-甲板上的战舰-中等

总结

  1. 这一部分的题目,倾向于寻找一定的规律去解答,有一部分使用暴力法是会超出题目限制的;另外,在操作数组的过程中,一定要把数组边界的问题考虑到位,避免出现数组越界的低级错误。
  2. 对于杨辉三角,有一个规律总结:第k行的数字可以由第k-1行的数字与第k-1行的数字向后错一位求和得到。还有一个公式:排列公式,推导为递推公式为,k+1位置的值为k位置值的(n-k)/(k+1)倍。
  3. 对于119,题解中有提到,由于只需要提供第k行的list,因此,可以结合递推公式的思路,通过公用List,减少空间利用。
  4. 需要注意,在以上使用递推公式的时候,需要将第k-1行的数据强转为long类型。
  5. 对于598,如果暴力的话,是会超出内存限制的,因此,需要去寻找规律:根据题意,最大的一组数字一定是集中在左上角的,那么只需要确定在op操作数组的最小操作范围即可。
  6. 对于419,题目本身就有一定的理解难度。给出的矩阵中’X’可以看作是战舰的一部分组件,根据给出的矩阵,计算这些组件可以组成满足以下条件的战舰数目:
    1. 形成一艘战舰的组件必须来自1列n行或者1行n列
    2. 隶属于不同战舰的组件之间一定要有间隔(空位,即’.’)。另外需要注意的是,题目说明,不会给出错误用例,也就是说隶属于不同战舰的组件之间是一定存在空位的。
      因此,直接去判断处于’X’位置的右侧或者下侧是否有与其连接的’X’,如果有的话,认为它们来自同一搜战舰,改为空位,只计数一次。

Java补充

  1. list的add方法,虽然可以指定index,但是index必须是处在list的size范围内,相当于此时的add方法是一个插入操作。比如:一个空的list,list.add(0,1)之后,list.add(2,5),这样是错误的使用方法,因为目前list的size仅为1。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值