@@ -53,12 +53,12 @@ class Solution:
53
53
n = len (citations)
54
54
left, right = 0 , n
55
55
while left < right:
56
- mid = (left + right) >> 1
57
- if citations[mid] >= n - mid:
58
- right = mid
56
+ mid = (left + right + 1 ) >> 1
57
+ if citations[n - mid] >= mid:
58
+ left = mid
59
59
else :
60
- left = mid + 1
61
- return n - left
60
+ right = mid - 1
61
+ return left
62
62
```
63
63
64
64
### ** Java**
@@ -69,14 +69,14 @@ class Solution {
69
69
int n = citations. length;
70
70
int left = 0 , right = n;
71
71
while (left < right) {
72
- int mid = (left + right) > >> 1 ;
73
- if (citations[mid] >= n - mid) {
74
- right = mid;
72
+ int mid = (left + right + 1 ) >> 1 ;
73
+ if (citations[n - mid] >= mid) {
74
+ left = mid;
75
75
} else {
76
- left = mid + 1 ;
76
+ right = mid - 1 ;
77
77
}
78
78
}
79
- return n - left;
79
+ return left;
80
80
}
81
81
}
82
82
```
@@ -89,15 +89,13 @@ public:
89
89
int hIndex(vector<int >& citations) {
90
90
int n = citations.size();
91
91
int left = 0, right = n;
92
- while (left < right) {
93
- int mid = left + right >> 1;
94
- if (citations[ mid] >= n - mid) {
95
- right = mid;
96
- } else {
97
- left = mid + 1;
98
- }
92
+ while (left < right)
93
+ {
94
+ int mid = (left + right + 1) >> 1;
95
+ if (citations[ n - mid] >= mid) left = mid;
96
+ else right = mid - 1;
99
97
}
100
- return n - left;
98
+ return left;
101
99
}
102
100
};
103
101
```
@@ -109,14 +107,33 @@ func hIndex(citations []int) int {
109
107
n := len(citations)
110
108
left, right := 0, n
111
109
for left < right {
112
- mid := (left + right) >> 1
113
- if citations[mid] >= n- mid {
114
- right = mid
110
+ mid := (left + right + 1 ) >> 1
111
+ if citations[n- mid] >= mid {
112
+ left = mid
115
113
} else {
116
- left = mid + 1
114
+ right = mid - 1
117
115
}
118
116
}
119
- return n - left
117
+ return left
118
+ }
119
+ ```
120
+
121
+ ### ** TypeScript**
122
+
123
+ ``` ts
124
+ function hIndex(citations : number []): number {
125
+ const n = citations .length ;
126
+ let left = 0 ,
127
+ right = n ;
128
+ while (left < right ) {
129
+ const mid = (left + right + 1 ) >> 1 ;
130
+ if (citations [n - mid ] >= mid ) {
131
+ left = mid ;
132
+ } else {
133
+ right = mid - 1 ;
134
+ }
135
+ }
136
+ return left ;
120
137
}
121
138
```
122
139
0 commit comments