查看: 1393| 回复: 2
跳转到指定楼层
上一主题 下一主题
收起左侧

[Leetcode] 刷题总是数组下标易搞混/不熟

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
刷了几百题了,现在又回来做最开始的200题,发现一些常见的heap/hashTable/dfs/bfs的题还好。就是一些基本的数组操作上面总是下标取多少要想很久,还要举例子想。。

比如中位数的下标(奇数or偶数),数组里计算元素的个数、距离,while循环的次数等等,要举例子想蛮久,还容易弄错。。感觉在interview的时候很容易懵掉啊。。
大家有没啥建议啊?感谢!!

评分

参与人数 1大米 +2 收起 理由
14417335 + 2 给你点个赞!

查看全部评分


上一篇:LeetCode,NeetCode和LintCode该刷哪个好?
下一篇:如何提升Python技术
推荐
goldsail 2023-4-19 12:38:49 | 只看该作者
全局:
遵照C++语言迭代器(iterator)的约定就好理解了。表达范围时,begin迭代器(首指针)永远指向第0个元素的位置,end迭代器(尾指针)永远指向最后一个元素的下一个位置。这样的好处有:
  • end - begin 永远等于元素的个数;
  • 元素的下标永远是 「大于等于begin」 且 「小于end」;
  • 不用特别处理0个和1个的特殊情况;
  • 中位数永远等于 (end + begin) / 2 和 (end + begin+1) / 2,当偶数个元素时这两个值正好相等,当奇数个元素时这两个值正好相差1,因此奇偶数的情况也可以统一处理,不必单独处理;
  • 写递归算法时,边界条件很绕,不如稍微放宽一点。与其考虑 if (end - begin < 1) 还是 if (end - begin < 2),不如统一放宽到 if (end - begin < 5) ,永远错不了。


补充内容 (2023-04-19 12:43 +8:00):
个人觉得,这种 0-based indexing 的做法(尾指针指向末元素的下一个位置),相比于把尾指针指向末元素本身,在数学上更有美感,且在实际写代码的过程中,也极大简化了思维负担。你可以把「尾指针指向末元素的下一个位置」等价理解成「假如我要新插入一个元素,尾指针指向新插入的位置」。

评分

参与人数 4大米 +9 收起 理由
Midoriii + 1 很有用的信息!
14417335 + 6 很有用的信息!
STAT1C + 1 谢谢分享!
日耕一万三千亩 + 1 赞一个

查看全部评分

回复

使用道具 举报

全局:
我曾经也有过,但最后发现其实就是理解的不透彻,一知半解那种,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表