【每日算法Day 63】LeetCode 第 179 场周赛题解

简介: 生成每种字符都是奇数个的字符串

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


题目链接


https://leetcode-cn.com/problems/generate-a-string-with-characters-that-have-odd-counts/

题解


image.png

代码(python)

classSolution:  
defgenerateTheString(self, n: int) ->str:    
ifn%2==0:    
return"a"+"b"*(n-1)    
return"a"*n

LeetCode 5353. 灯泡开关 III

题目链接


https://leetcode-cn.com/problems/bulb-switcher-iii/

题解


如果某一个时刻灯都是蓝色的,等价于所有的亮灯都连续排列在数组最左边,没有间断。所以只需要判断当前时刻亮灯的最大编号是否等于亮灯的数量就行了。

比赛的时候傻 x 了,第一个想到的竟然是树状数组,于是直接把模板套过来过了。

代码(c++)

classSolution {
public:  
intnumTimesAllBlue(vector<int>&light) { 
intres=0, maxx=0; 
for (inti=0, sz=light.size(); i<sz; ++i)
                    {        
maxx=max(maxx, light[i]);     
if (maxx==i+1) res++;  
                    }      
returnres; 
                }
};

树状数组:

classSolution {
public: 
staticconstintMAXN=50010; 
intbit[MAXN];     
intnumTimesAllBlue(vector<int>&light)
    {  
memset(bit, 0, sizeofbit);  
intmaxx=0, res=0;    
for (inti=0, sz=light.size(); i<sz; ++i)
        {  
add(light[i], 1);   
maxx=max(maxx, light[i]);  
if (sum(maxx) ==maxx) res++;  
        }       
returnres;   
    }    
intlowbit(intx) 
    { 
returnx&(-x); 
    }
voidadd(inti, intx)
    {   
while (i<MAXN)
        {      
bit[i] +=x;     
i+=lowbit(i);    
        }   
    }
voidsub(inti, intx)
    {   
while (i<MAXN) 
        {    
bit[i] -=x;   
i+=lowbit(i);     
        }  
    }
intsum(inti) {   
ints=0;    
while (i>0)
        {  
s+=bit[i];      
i-=lowbit(i);  
        }        
returns;  
    }
};

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


题目链接


https://leetcode-cn.com/problems/time-needed-to-inform-all-employees/

题解


image.png

代码(c++)

classSolution {
public:  
staticconstintN=100010; 
vector<int>G[N];   
intnumOfMinutes(intn, intheadID, vector<int>&manager, 
vector<int>&informTime) {   
for (inti=0; i<n; ++i) 
        {    
if (manager[i] !=-1) 
            {   
G[manager[i]].push_back(i);    
            }    
        }      
returnf(headID, informTime); 
    }       
intf(intheadID, vector<int>&informTime)
    {        if (!informTime[headID]) return0;  
intmaxx=0;   
for (inti=0, sz=G[headID].size(); i<sz; ++i)
     {       
maxx=max(maxx, f(G[headID][i], informTime));  
     }   
returnmaxx+informTime[headID]; 
    }
};

LeetCode 5355. T 秒后青蛙的位置


题目链接

https://leetcode-cn.com/problems/frog-position-after-t-seconds/

题解


image.png

代码(c++)


classSolution {
public:   
doublefrogPosition(intn, vector<vector<int>>&edges, intt, 
inttarget) {  
if (n==1) return1.0;    
vector<vector<int>>G(110); 
for (inti=0; i<n-1; ++i) 
        {            intu=edges[i][0], v=edges[i][1];   
G[u].push_back(v);   
G[v].push_back(u);   
        }       
returndfs(1, 0, t, target, G); 
    }       
doubledfs(intu, intfa, intt, inttarget,
vector<vector<int>>&G) {   
intsz=G[u].size();   
if (!t|| (fa&&sz==1)) {   
if (u==target) return1;  
elsereturn0;     
        }         
doublep=1.0/ (fa?sz-1 : sz), maxx=0;
for (inti=0, sz=G[u].size(); i<sz; ++i) {  
intv=G[u][i];     
if (v==fa) continue;   
maxx=max(maxx, dfs(v, u, t-1, target, G)); 
        }      
returnp*maxx;  
    }
};

image.png

作者简介:godweiyang知乎同名华东师范大学计算机系硕士在读,方向自然语言处理与深度学习喜欢与人分享技术与知识,期待与你的进一步交流~

相关文章
|
1月前
|
存储 人工智能 算法
从零掌握贪心算法Java版:LeetCode 10题实战解析(上)
在算法世界里,有一种思想如同生活中的"见好就收"——每次做出当前看来最优的选择,寄希望于通过局部最优达成全局最优。这种思想就是贪心算法,它以其简洁高效的特点,成为解决最优问题的利器。今天我们就来系统学习贪心算法的核心思想,并通过10道LeetCode经典题目实战演练,带你掌握这种"步步为营"的解题思维。
|
算法
Leetcode 初级算法 --- 数组篇
Leetcode 初级算法 --- 数组篇
134 0
|
存储 算法 Java
leetcode算法题-有效的括号(简单)
【11月更文挑战第5天】本文介绍了 LeetCode 上“有效的括号”这道题的解法。题目要求判断一个只包含括号字符的字符串是否有效。有效字符串需满足左括号必须用相同类型的右括号闭合,并且左括号必须以正确的顺序闭合。解题思路是使用栈数据结构,遍历字符串时将左括号压入栈中,遇到右括号时检查栈顶元素是否匹配。最后根据栈是否为空来判断字符串中的括号是否有效。示例代码包括 Python 和 Java 版本。
275 4
|
算法
每日一道算法题(Leetcode 20)
每日一道算法题(Leetcode 20)
157 2
|
算法 Java
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
173 6
|
人工智能 算法 Java
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
179 1
|
存储 算法 Java
LeetCode经典算法题:预测赢家+香槟塔java解法
LeetCode经典算法题:预测赢家+香槟塔java解法
195 1
|
算法
刷算法Leetcode---9(二叉树篇Ⅲ)
刷算法Leetcode---9(二叉树篇Ⅲ)
125 3
|
算法 Java
[Java·算法·简单] LeetCode 283. 移动零
[Java·算法·简单] LeetCode 283. 移动零
122 2
|
算法 Java
[Java·算法·中等] LeetCode21. 合并两个有序链表
[Java·算法·中等] LeetCode21. 合并两个有序链表
236 2

热门文章

最新文章