随便卡几个周赛198第4题的暴力
3438
2020.07.19
发布于 未知归属地

首先我很菜,第三题想错了卡了很久,比赛里没做出来第四题,结束后才写完。
然后我又因为不小心把一个vector放在循环里分配导致卡了常数,TLE*n。
然后我就决定来报社卡掉几个暴力,让lc看看自己的数据到底是什么水准。

暴力1. https://leetcode.cn/circle/article/nikyaJ/
无法通过的数据:arr = [7,6,5,4] * 25000, target = 3

暴力2. 来自题目评论区

class Solution {
public:
    int closestToTarget(vector<int>& arr, int target) {
        int n = arr.size(), res = abs(target - 1000000);
        for (int i = 1; i < n; ++i) {
            res = min(res, abs(target - arr[i]));
            res = min(res, abs(target - (arr[0] & arr[i])));
        }
        return res;
    }
};

无法通过的数据:arr = [3,2,1] * 33333, target = 0;

暴力3. 来自竞赛评论区,排名252选手的代码

class Solution:
    def closestToTarget(self, arr: List[int], target: int) -> int:
        a = []
        for i in range(len(arr)):
            if arr[i] not in a:
                a.append(arr[i])
        arr = a
        min = 1000000000000000000000000000000
        for i in range(len(arr)):
            ans = arr[i]
            for j in range(i,len(arr)):
                ans = ans & arr[j]
                if min > abs(ans - target):
                    min = abs(ans - target)
                #print(ans,min)
        return min

无法通过的数据:arr = list(range(100000)), target随意。

看了下还有很多代码基本上不是这几种暴力就是这几种暴力的排列组合,基本上都能卡掉。
我觉得不更新测试数据的话hack机制刻不容缓了……

评论 (8)