You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python按位取反运算符'~'在LeetCode275的hIndex代码中如何工作?

解释LeetCode 275题hIndex代码中的按位取反~

1. ~运算符的本质

在Python中,按位取反~对整数m的计算规则是:~m = -(m + 1)。比如:

  • ~0 = -1
  • ~1 = -2
  • ~2 = -3
    本质是对整数的二进制补码进行取反操作,最终映射成对应的负整数。

2. 在数组索引中的实际作用

LeetCode 275题的输入citations是升序排列的数组。Python支持数组负索引,citations[-k]表示从数组末尾往前数第k个元素。所以citations[~m]等价于citations[-(m+1)],也就是取数组中倒数第m+1个元素。

举个实际例子:假设数组长度为5,当m=0时,~0=-1对应数组最后一个元素;m=1时,~1=-2对应倒数第二个元素,完全匹配从后往前的索引逻辑。

3. 结合二分逻辑理解为什么用~

h指数的核心定义是:研究者有h篇论文被引用至少h次。这段代码用二分法快速定位这个h值:

  • 当citations[~m] > m时:因为数组是升序的,从citations[~m]到数组末尾的所有元素(共m+1篇)都大于m,说明至少有m+1篇论文被引次数超过m,h指数可以更大,所以将左边界l更新为m+1。
  • 否则:说明当前m已经是h指数的候选上限,将右边界r更新为m。
    最终返回的l就是满足条件的最大h指数。

内容的提问来源于stack exchange,提问作者Nefarious

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 08:08:32