T1https://leetcode-cn.com/contest/biweekly-contest-72/problems/count-equal-and-divisible-pairs-in-an-array/
class Solution {
public int countPairs(int[] nums, int k) {
int res=0;
for(int i=0;i<nums.length;i++){
for(int j=i+1;j<nums.length;j++){
if(nums[i]==nums[j]&&i*j%k==0){
res++;
}
}
}
return res;
}
}
数据量太小,O(n2)模拟即可
T2
找到和为给定整数的三个连续整数 - 力扣 (LeetCode) 竞赛 (leetcode-cn.com)
class Solution {
public long[] sumOfThree(long num) {
long mid=num/3;
long []res;
if(mid*3==num){
res=new long[3];
res[0]=mid-1;
res[1]=mid;
res[2]=mid+1;
return res;
}
return res=new long[]{};
}
}
简单模拟
T3
https://leetcode-cn.com/contest/biweekly-contest-72/problems/maximum-split-of-positive-even-integers/
class Solution {
List<Long>res=new LinkedList<>();
public List<Long> maximumEvenSplit(long finalSum) {
if(finalSum%2==1)return res;
HashSet<Long>set=new HashSet<>();
for (long i = 2; i <=finalSum&&finalSum>0; i+=2) {
if(!set.contains(i)){
res.add(i);
set.add(i);
finalSum-=i;
}
}
if(finalSum>0){
Long aLong = res.get(res.size() - 1);
res.set(res.size()-1,aLong+finalSum);
}
return res;
}
}
HashSet去重,贪心可知,多出来的那个元素必定无法生成多于目前已知长度的list,
一开始的错误想法是回溯,
static List<Long>res=new LinkedList<>();
public static List<Long> maximumEvenSplit(long finalSum) {
if(finalSum%2==1)return res;
dfs(finalSum,2,new HashSet<Long>(),new LinkedList<Long>());
return res;
}
private static void dfs(long finalSum,long i, HashSet<Long> set, LinkedList<Long> list) {
if(res.size()>0)return;
if(finalSum==0&&list.size()>res.size()){
res=new LinkedList<>(list);
return;
}
for (long j = i; j <=finalSum &&finalSum>=0; j+=2) {
if(set.contains(j)) {
dfs(finalSum,j+2,set,list);
set.remove(j);
list.remove(j);
finalSum+=j;
continue;
}
set.add(j);
list.add(j);
finalSum-=j;
dfs(finalSum,j+2,set,list);
list.remove(list.size()-1);
finalSum+=j;
set.remove(j);
}
}
}