头像

Oyasumi1024




离线:4小时前


最近来访(104)
用户头像
不许对我狗叫
用户头像
哥哥的真爱粉
用户头像
Grinder
用户头像
顽童
用户头像
CS10086
用户头像
noobcode091
用户头像
Amaryllis_
用户头像
lnyx
用户头像
dushucheng0901
用户头像
Caesar123
用户头像
拾一.
用户头像
种花家的傻逼
用户头像
L-China
用户头像
爱算法爱生活
用户头像
甜菜巨擘_3
用户头像
yxc的小迷妹
用户头像
将离_2
用户头像
我才不认识这个人
用户头像
Full_River_Red
用户头像
sadasfdsh


Oyasumi1024
4小时前



Oyasumi1024
4小时前
class Solution {
public:
    bool containsNearbyAlmostDuplicate(vector<int>& nums, int k, int t) {
        typedef long long LL;
        multiset<LL> S;
        S.insert(1e18), S.insert(-1e18);
        for (int i = 0, j = 0; i < nums.size(); i ++ )
        {
            if (i - j > k)
            {
                S.erase(S.find(nums[j]));
                j ++ ;
            }
            int x = nums[i];
            auto it = S.lower_bound(x);
            if (*it - x <= t)   return true;
            -- it;
            if (x - *it <= t)   return true;
            S.insert(x);
        }

        return false;
    }
};



Oyasumi1024
5小时前
class Solution {
public:
    bool containsNearbyDuplicate(vector<int>& nums, int k) {
        unordered_map<int, int> mp;
        for (int i = 0; i < nums.size(); i ++ )
        {
            int x = nums[i];
            if (mp.count(x) && abs(i - mp[x]) <= k )    return true;
            mp[x] = i; 
        }
        return false;
    }
};



Oyasumi1024
5小时前
class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        unordered_set<int> S;
        for (auto &x : nums)
        {
            // 说明x之前已经出现过   那么在此时又遍历到x  因此x至少出现了两次
            if (S.count(x) )    return true;
            S.insert(x); 
        }
        return false;
    }
};



Oyasumi1024
6小时前


活动打卡代码 LeetCode 518. 零钱兑换 II

Oyasumi1024
6小时前
class Solution {
public:
    int change(int amount, vector<int>& coins) {
        int n = coins.size(), m = amount;
        vector<int> f(m + 1);

        f[0] = 1;
        for (int i = 0; i < n; i ++ )   // 枚举物品
            for (int j = coins[i]; j <= m; j ++ )   // 枚举背包容量
                f[j] += f[j - coins[i]];

        return f[m];
    }
};



Oyasumi1024
6小时前


活动打卡代码 LeetCode 377. 组合总和 Ⅳ

Oyasumi1024
6小时前
class Solution {
public:
    int combinationSum4(vector<int>& nums, int target) {
        int n = nums.size(), m = target;
        vector<int> f(m + 1);

        f[0] = 1;
        for (int i = 0; i <= m; i ++ )      // 枚举背包容量
            for (int j = 0; j < n; j ++ )   // 枚举物品
                if (i >= nums[j] && f[i] < INT_MAX - f[i - nums[j]])
                    f[i] += f[i - nums[j]];

        return f[m];
    }
};



Oyasumi1024
7小时前


活动打卡代码 LeetCode 216. 组合总和 III

Oyasumi1024
7小时前
class Solution {
public:
    vector<vector<int>> res;
    vector<int> path;
    int n, k;

    void dfs(int start, int sum)
    {
        // 剪枝优化1
        if (path.size() + (9 - start + 1) < k)  return ;
        // 剪枝优化2
        if (sum > n)    return ;
        // 收集答案
        if (path.size() == k && sum == n)
        {
            res.push_back(path);
            return ;
        }

        for (int i = start; i <= 9; i ++ )
        {
            sum += i;
            path.push_back(i);

            dfs(i + 1, sum);

            sum -= i;
            path.pop_back();
        }
    }

    vector<vector<int>> combinationSum3(int _k, int _n) {
        k = _k, n = _n;
        dfs(1, 0);
        return res;
    }
};