Leetcode 179周赛小结

5352. 生成每种字符都是奇数个的字符串

给你一个整数 n,请你返回一个含 n 个字符的字符串,其中每种字符在该字符串中都恰好出现 奇数次 

返回的字符串必须只含小写英文字母。如果存在多个满足题目要求的字符串,则返回其中任意一个即可。

题解:奇数全填某个字符,偶数先填n-1个字符再填一个不同的字符就可以了。

5353. 灯泡开关 III

题解:顺序遍历题目给的开灯序列。定义两个指针,pos,max_open。pos指向的位置以及其之前的位置所有的灯都是开着的,max_open指向到目前为止,所有开着的灯的最大序号。

pos==max_open的时候,灯的颜色就可以变成蓝色。

AC代码:

  int numTimesAllBlue(vector<int>& light) {
        int Len = light.size();
        int flag[Len+10];
        for(int i = 0;i<=Len;i++) flag[i] = 0;
        int pos = 0;
        int ans= 0;
        int max_open = 0;
        for(int i =0;i<Len;i++)
        {
            max_open = max(max_open,light[i]);
            flag[light[i]] = 1;
            while(pos+1 <= Len && flag[pos+1] == 1) pos++;
            // updata pos
            if(pos >= max_open) ans++;
        }
        return ans;
    }

5354.  通知所有员工所需的时间

题解:根据manager数组建树,建好之后BFS,队列存节点和花费的时间。最终结果为所有能到达的叶子节点的最大花费。

AC代码:

int numOfMinutes(int n, int headID, vector<int>& manager, vector<int>& informTime) {
        int Len = manager.size();
        vector<int> edge[Len+10];
        int ans = INT_MIN;
        for(int i=0;i<Len;i++)
        {
            if(manager[i] == -1) continue;
            edge[manager[i]].push_back(i);
        }
        typedef pair<int,int> pii;
        queue<pii> que;
        que.push(make_pair(headID,0));
        while(!que.empty())
        {
            pii now = que.front();
            que.pop();
            int now_id = now.first;
            ans = max(ans,now.second);
            for(int i=0;i<edge[now_id].size();i++)
            {
                int cost = now.second+informTime[now_id];
                que.push(make_pair(edge[now_id][i],cost));
            }
        }
        return ans;
    }

5355.  T秒后青蛙的位置

题解:根据无向边建图,建图BFS更新概率。有两个点要注意:

1. 在更新到target点的时候,此时的层数小于t秒。如果target点不是叶子节点,那么t秒的时候青蛙无法在target点。  

2. 梳理清楚BFS层数和时间T的关系(可能这段时间玩太多了,比赛的时候不是很专注,这里WA了好几发)

AC代码:

double frogPosition(int n, vector<vector<int>>& edges, int t, int target) {
        vector<int> edge[110];
        int Len = edges.size();
        double dp[110];

        int vis[110];
        for(int i=0;i<=100;i++)
        {
            vis[i] = 0;
            dp[i] = 0.00;
        }
        for(int i=0;i<Len;i++)
        {
            edge[edges[i][0]].push_back(edges[i][1]);
            edge[edges[i][1]].push_back(edges[i][0]);
        }
        typedef pair<int,int> pii;
        queue<pii> que;
        que.push(make_pair(1,0));
        vis[1] = 1;
        dp[1] = 1.0000000;
        while(!que.empty())
        {
            pii now = que.front();
            que.pop();
           // cout << now.second <<endl;
            if(now.second >= t) break;
            int now_id = now.first;
            int Len = edge[now_id].size();
            int tmp_Len = 0;

            //ava leaf node
            for(int i=0;i<Len;i++) if(vis[edge[now_id][i]] == 0) tmp_Len++;
            // if(now_id == target)
            // {
            //     cout << now.second <<" " << tmp_Len << endl;
            // }
            if(now_id == target && now.second < t && tmp_Len != 0) return 0.0;
            for(int i=0;i<Len;i++)
            {
                if(vis[edge[now_id][i]] == 1) continue;
                vis[edge[now_id][i]] = 1;
                dp[edge[now_id][i]] = dp[now_id] * (1.0/(tmp_Len*1.0));
                que.push(make_pair(edge[now_id][i],now.second+1));
            }
        }
        cout << dp[target] << endl;
        return dp[target];
    }

一些感想:

近来状态确实不佳,也算开始调整了。

和室友聊了一聊,得知了他在家里的学习状态以及他周赛的成绩,反观自己,连基础题写的bug也有不少,写的时候注意力也不是很集中,也很容易想一些其他的事情。

想了想,我这一个时间段能做好的事情不多,也该压一压学习了。之前一天也就看个四五个小时的书,室友看8-9个小时,周赛打的不如意也正常,写的太少了平时写的时候也不能说

写的很专注,这点一定得改。平时都不够专注,别指望比赛的时候能够有多专注。

图和数据结构的一些算法也确实挺久没有复习了,所有写起来的时候磕磕绊绊的。后面的一周除了补一些题目之外,可以有针对的去写这方面的题目~

好了吃饭去了,稳定的阶段性收获是坚持的最大动力,浪费这么久时间了,也该有一个学生的样子了,愿不负韶华。

原文地址:https://www.cnblogs.com/z1141000271/p/12441945.html

时间: 2024-10-08 06:14:43

Leetcode 179周赛小结的相关文章

8.15 [LeetCode] 179 Largest Number

[LeetCode 179] Largest Number | COMMENTS Question link Given a list of non negative integers, arrange them such that they form the largest number. For example, given [3, 30, 34, 5, 9], the largest formed number is 9534330. Note: The result may be ver

LeetCode: 179. 最大数

LeetCode: 179. 最大数 给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数. 示例 1: 输入: [10,2] 输出: 210 示例?2: 示例 2: 输入: [3,30,34,5,9] 输出: 9534330 说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数. 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/largest-number 著作权归领扣网络所有.商业转载请联系官方授权,非商业转载请注明出处

LeetCode双周赛10

Leetcode双周赛10 5079.三个有序数组的交集 给出三个均为 严格递增排列 的整数数组 arr1,arr2 和 arr3. 返回一个由 仅 在这三个数组中 同时出现 的整数所构成的有序数组. 示例: 输入: arr1 = [1,2,3,4,5], arr2 = [1,2,5,7,9], arr3 = [1,3,4,5,8] 输出: [1,5] 解释: 只有 1 和 5 同时在这三个数组中出现. 提示: 1 <= arr1.length, arr2.length, arr3.length

leetCode 179. Largest Number 字符串排序 | Medium

179. Largest Number Given a list of non negative integers, arrange them such that they form the largest number. For example, given [3, 30, 34, 5, 9], the largest formed number is 9534330. Note: The result may be very large, so you need to return a st

[Lintcode]184. Largest Number/[Leetcode]179. Largest Number

184. Largest Number/179. Largest Number 本题难度: Medium Topic: Greedy Description Largest Number 中文English Given a list of non negative integers, arrange them such that they form the largest number. Example Given [1, 20, 23, 4, 8], the largest formed nu

[LeetCode] 179. Largest Number 解题思路

Given a list of non negative integers, arrange them such that they form the largest number. For example, given [3, 30, 34, 5, 9], the largest formed number is 9534330. Note: The result may be very large, so you need to return a string instead of an i

leetcode[179]Largest Number

Given a list of non negative integers, arrange them such that they form the largest number. For example, given [3, 30, 34, 5, 9], the largest formed number is 9534330. Note: The result may be very large, so you need to return a string instead of an i

Java for LeetCode 179 Largest Number

Given a list of non negative integers, arrange them such that they form the largest number. For example, given [3, 30, 34, 5, 9], the largest formed number is 9534330. Note: The result may be very large, so you need to return a string instead of an i

[LeetCode] 179. Largest Number Java

题目: Given a list of non negative integers, arrange them such that they form the largest number. For example, given [3, 30, 34, 5, 9], the largest formed number is 9534330. Note: The result may be very large, so you need to return a string instead of