Skip to content

Commit 791ad2e

Browse files
committed
Merge remote-tracking branch 'origin/main' into main
2 parents 6b24ee7 + a4722fe commit 791ad2e

File tree

3 files changed

+120
-0
lines changed

3 files changed

+120
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.gatsby;
2+
3+
/**
4+
* @ClassName: _1103DistributeCandiesToPeople
5+
* @Description: leetcode 1103 分糖果II
6+
* @author: Gatsby
7+
* @date: 2022/7/18 16:40
8+
*/
9+
10+
public class _1103DistributeCandiesToPeople {
11+
public int[] distributeCandies(int candies, int num_people) {
12+
int[] distribution = new int[num_people];
13+
int pos = 0;
14+
int candy = 1;
15+
while (candies >= 0) {
16+
if (pos == num_people) pos = 0;
17+
if (candies >= candy) {
18+
distribution[pos] += candy;
19+
candies -= candy;
20+
pos++;
21+
candy++;
22+
}else {
23+
distribution[pos] += candies;
24+
return distribution;
25+
}
26+
}
27+
return distribution;
28+
}
29+
}
30+
31+
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package com.gatsby;
2+
3+
import java.util.ArrayList;
4+
import java.util.HashMap;
5+
import java.util.List;
6+
import java.util.Map;
7+
8+
/**
9+
* @ClassName: _2121IntervalsBetweenIdenticalElements
10+
* @Description: leetcode 2121 相同元素的间隔之和
11+
* @author: Gatsby
12+
* @date: 2022/7/18 16:55
13+
*/
14+
15+
public class _2121IntervalsBetweenIdenticalElements {
16+
public long[] getDistances(int[] arr) {
17+
Map<Integer, List<Integer>> map = new HashMap<>();
18+
for (int i = 0; i < arr.length; ++i) {
19+
List<Integer> indexes = map.getOrDefault(arr[i], new ArrayList<>());
20+
indexes.add(i);
21+
map.put(arr[i], indexes);
22+
}
23+
// for (int i = 0; i < arr.length; ++i) {
24+
// List<Integer> indexes = map.get(arr[i]);
25+
// long s = 0;
26+
// // 如果每次都要这么计算的话,数据量大的时候会TLE
27+
// for (int index: indexes) {
28+
// sum[i] += (long) Math.abs(i - index);
29+
// }
30+
// }
31+
long[] result = new long[arr.length];
32+
//遍历map的value
33+
for (List<Integer> list : map.values()) {
34+
//先计算出当前集合第一个元素所对应的间隔和,后续集合中的其它元素都可根据第一个间隔和推算出来
35+
for (int i : list) {
36+
result[list.get(0)] += i - list.get(0);
37+
}
38+
//遍历其它的相同元素,并根据第集合中第一个元素对应的间隔和推算出来
39+
for (int i = 1; i < list.size(); i++) {
40+
result[list.get(i)] = result[list.get(i - 1)] + (2L * i - list.size()) * (list.get(i) - list.get(i - 1));
41+
}
42+
}
43+
return result;
44+
}
45+
}
46+
47+
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.gatsby;
2+
3+
import java.util.Comparator;
4+
import java.util.PriorityQueue;
5+
6+
/**
7+
* @ClassName: _2208MinimumOperationsToHalveArraySum
8+
* @Description: leetcode 2208 将数组和减半的最少操作次数
9+
* @author: Gatsby
10+
* @date: 2022/7/19 13:17
11+
*/
12+
13+
public class _2208MinimumOperationsToHalveArraySum {
14+
public int halveArray(int[] nums) {
15+
long sum = 0;
16+
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(new Comparator<Integer>() {
17+
@Override
18+
public int compare(Integer o1, Integer o2) {
19+
return o2-o1;
20+
}
21+
});
22+
for (int num : nums) {
23+
priorityQueue.add(num);
24+
sum += num;
25+
}
26+
double half = (double) sum / 2;
27+
double currentSum = sum;
28+
int count = 0;
29+
System.out.println(sum);
30+
while (half < currentSum) {
31+
int max = priorityQueue.poll();
32+
max /= 2;
33+
currentSum -= max;
34+
priorityQueue.add(max);
35+
count++;
36+
System.out.println(currentSum);
37+
}
38+
return count;
39+
}
40+
}
41+
42+

0 commit comments

Comments
 (0)