【每日算法Day 77】LeetCode 第 181 场周赛题解

简介: 第 181 场周赛题解

周赛链接


https://leetcode-cn.com/contest/weekly-contest-181

LeetCode 5364. 按既定顺序创建目标数组


题目链接

https://leetcode-cn.com/problems/create-target-array-in-the-given-order/

题解


c++ vector 自带 insert 函数,直接用就行了。

代码(c++)

classSolution {
public: 
vector<int>createTargetArray(vector<int>&nums, vector<int>&index) {     
intn=nums.size();  
vector<int>target;    
for (inti=0; i<n; ++i) {    
target.insert(target.begin()+index[i], nums[i]);      
        }        returntarget;  
    }
};

LeetCode 5178. 四因数


题目链接


https://leetcode-cn.com/problems/four-divisors/

题解


image.png

代码(c++)

classSolution {
public:
intsumFourDivisors(vector<int>&nums) {   
intres=0;     
for (autox : nums) {      
intcnt=0, sum=0;  
for (inti=1; i*i<=x; ++i) {   
if (i*i==x) {       
cnt++;        
break;      
                }       
if (x%i==0) {   
cnt+=2;      
sum+=i+x/i; 
                }           
if (cnt>4) break;  
            }         
if (cnt==4) res+=sum;
        }     
returnres; 
    }
};

LeetCode 5366. 检查网格中是否存在有效路径

题目链接


https://leetcode-cn.com/problems/check-if-there-is-a-valid-path-in-a-grid/

题解



image.png

代码(c++)

classSolution {
public:   
intlink(inta, intb, intd) {  
if (d==1||d==3) {     
d--;    
swap(a, b);  
        }     
if (d==0) return (a==1||a==4||a==6)&&(b==1||b==3||b==5); 
if (d==2) return (a==2||a==3||a==4)&&(b==2||b==5||b==6); 
returnfalse; 
    }     
boolhasValidPath(vector<vector<int>>&grid) {  
intn=grid.size(), m=grid[0].size();
intdx[4] = {0, 0, 1, -1}; 
intdy[4] = {1, -1, 0, 0};   
vector<vector<int>>vis(n, vector<int>(m, 0)); 
queue<pair<int, int>>Q;    
Q.push({0, 0});    
vis[0][0] =1;   
while (!Q.empty()) {     
pair<int, int>p=Q.front();  
Q.pop();       
intx=p.first, y=p.second;   
if (x==n-1&&y==m-1) returntrue; 
for (inti=0; i<4; ++i) {      
intnx=x+dx[i], ny=y+dy[i]; 
if (0<=nx&&nx<n&&0<=ny&&ny<m&&!vis[nx][ny] &&link(grid[x][y], grid[nx][ny], 
i)) {    
vis[nx][ny] =1;    
Q.push({nx, ny});  
                }        
            }      
        }      
returnfalse; 
    }
};

LeetCode 5367. 最长快乐前缀


题目链接


https://leetcode-cn.com/problems/longest-happy-prefix/

题解


image.png

代码(c++)

classSolution {
public: 
voidgetNext(strings, vector<int>&next) {    
intn=s.size();     
next[0] =0;    
for (intq=1, k=0; q<n; ++q) { 
while (k>0&&s[q] !=s[k])    
k=next[k-1];      
if (s[q] ==s[k]) k++;            next[q] =k;     
        }   
    }  
stringlongestPrefix(strings) {   
intn=s.size();     
vector<int>next(n);     
getNext(s, next);    
returns.substr(0, next[n-1]); 
    }
};

image.png

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


相关文章
|
3天前
|
存储
Leetcode第382场周赛
```markdown 给定字符串`s`,计算按键变更次数,即使用不同键的次数,不考虑大小写差异。例如,`&quot;aAbBcC&quot;`变更了2次。函数`countKeyChanges`实现此功能。另外,求满足特定模式子集最大元素数,`maximumLength`函数使用`TreeMap`统计次数,枚举并构建子集,返回最大长度。最后,Alice和Bob玩鲜花游戏,Alice要赢需满足鲜花总数奇数、顺时针在[1,n]、逆时针在[1,m],返回满足条件的(x, y)对数,可通过奇偶性分类讨论求解。 ```
13 1
|
11月前
|
算法 机器人
LeetCode 周赛 351(2023/06/25)T2 有点意思
> **本文已收录到 [AndroidFamily](https://github.com/pengxurui/AndroidFamily),技术和职场问题,请关注公众号 \[彭旭锐] 和 \[BaguTree Pro] 知识星球提问。**
57 0
|
11月前
|
算法 Perl
力扣266场周赛
力扣266场周赛
68 0
|
11月前
|
测试技术
LeetCode283场周赛
LeetCode283场周赛
56 0
|
12月前
|
算法 C++
【每日算法Day 77】LeetCode 第 181 场周赛题解
【每日算法Day 77】LeetCode 第 181 场周赛题解
|
12月前
|
算法 C++ Python
【每日算法Day 63】LeetCode 第 179 场周赛题解
起床打开 leetcode,准备看看今天搞点啥题目水一水的,突然发现周赛还剩 1 小时整。看了眼题目也都挺简单的,就把 4 道题都做掉了。
力扣第291场周赛题解
**比赛地址 第一题:** 给你一个表示某个正
64 0
力扣第290场周赛
第一题: 给你一个二维整数数组 nums ,其中 nums[i] 是由 不同 正整数组成的一个非空数组,按 升序排列 返回一个数组,数组中 的每个元素在 nums 所有数组 中都出现过。
57 0