Skip to content

Commit 62ba164

Browse files
committed
update
1 parent 690608d commit 62ba164

File tree

3 files changed

+67
-0
lines changed

3 files changed

+67
-0
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// Runtime 38 ms Beats 63.24%
2+
// Memory 56.93 MB Beats 82.65%
3+
// Prefix sum & tricky.
4+
// T:O(n), S:O(n)
5+
//
6+
class Solution {
7+
public long countBadPairs(int[] nums) {
8+
HashMap<Integer, Integer> diffCount = new HashMap<>();
9+
int len = nums.length;
10+
long ret = 0;
11+
for (int i = 0; i < len; i++) {
12+
diffCount.merge(nums[i] - i, 1, Integer::sum);
13+
}
14+
for (int i = 0; i < len; i++) {
15+
ret += len - diffCount.get(nums[i] - i);
16+
}
17+
18+
return ret / 2;
19+
}
20+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// Runtime 5 ms Beats 98.43%
2+
// Memory 40.90 MB Beats 82.76%
3+
// Recursion & some tricky.
4+
// T:O(n * (2^logn)), S:O(1)
5+
//
6+
class Solution {
7+
public int punishmentNumber(int n) {
8+
int ret = 0;
9+
for (int i = 1; i <= n; i++) {
10+
if (canPart(i * i, i)) {
11+
ret += i * i;
12+
}
13+
}
14+
15+
return ret;
16+
}
17+
18+
private boolean canPart(int square, int i) {
19+
if (i < 0 || square < i) {
20+
return false;
21+
}
22+
if (square == i) {
23+
return true;
24+
}
25+
26+
return canPart(square / 10, i - (square % 10)) || canPart(square / 100, i - (square % 100))
27+
|| canPart(square / 1000, i - (square % 1000));
28+
}
29+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// Runtime 1 ms Beats 100.00%
2+
// Memory 44.11 MB Beats 100.00%
3+
// .
4+
// T:O(n), S:O(1)
5+
//
6+
class Solution {
7+
public int sumOfGoodNumbers(int[] nums, int k) {
8+
int len = nums.length, ret = 0;
9+
for (int i = 0; i < len; i++) {
10+
if ((i - k < 0 || (i - k >= 0 && nums[i] > nums[i - k])) &&
11+
(i + k >= len || (i + k < len && nums[i] > nums[i + k]))) {
12+
ret += nums[i];
13+
}
14+
}
15+
16+
return ret;
17+
}
18+
}

0 commit comments

Comments
 (0)