0
点赞
收藏
分享

微信扫一扫

2022-02-19双周赛

一脸伟人痣 2022-02-20 阅读 39
leetcode

 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);
                


            }
    }

}
举报

相关推荐

0 条评论