LeetCode Weekly Contest 8
LeetCode Weekly Contest 8
415. Add Strings
- User Accepted: 765
- User Tried: 822
- Total Accepted: 789
- Total Submissions: 1844
- Difficulty: Easy
Given two non-negative numbers num1 and num2 represented as string, return the sum of num1 and num2.
Note:
- The length of both num1 and num2 is < 5100.
- Both num1 and num2 contains only digits 0-9.
- Both num1 and num2 does not contain any leading zero.
- You must not use any built-in BigInteger library or convert the inputs to integer directly.
简单的模拟题。
class Solution {
public:
string addStrings(string num1, string num2) {
int len1 = num1.length(), len2 = num2.length();
int t = 0, c = 0, i = len1-1, j = len2-1;
string ret = "";
while(i>=0 && j>=0){
c = (t + (num1[i]-'0') + (num2[j]-'0'))%10;
t = (t + (num1[i]-'0') + (num2[j]-'0'))/10;
ret.insert(ret.begin(), char('0' + c));
--i; --j;
}
while(i>=0){
c = (t + (num1[i]-'0'))%10;
t = (t + (num1[i]-'0'))/10;
ret.insert(ret.begin(), char('0' + c));
--i;
}
while(j>=0){
c = (t + (num2[j]-'0'))%10;
t = (t + (num2[j]-'0'))/10;
ret.insert(ret.begin(), char('0' + c));
--j;
}
if(t != 0){
ret.insert(ret.begin(), char('0' + t));
}
return ret;
}
};
416. Partition Equal Subset Sum
- User Accepted: 488
- User Tried: 670
- Total Accepted: 506
- Total Submissions: 1689
- Difficulty: Medium
Given a non-empty array containing only positive integers, find if the array can be partitioned into two subsets such that the sum of elements in both subsets is equal.
Note:
Both the array size and each of the array element will not exceed 100.
Example 1:
Input: [1, 5, 11, 5]
Output: true
Explanation: The array can be partitioned as [1, 5, 5] and [11].
Example 2:
Input: [1, 2, 3, 5]
Output: false
Explanation: The array cannot be partitioned into equal sum subsets.
简单的单重背包问题
class Solution {
public:
bool canPartition(vector<int>& nums) {
int sum = 0, len = nums.size();
for(int i=0; i<len; ++i){
sum += nums[i];
}
if(sum%2 != 0){
return false;
}
int* dp = new int[sum/2 + 1];
for(int i=sum/2; i>=1; --i){
dp[i] = 0;
}
dp[0] = 1;
for(int i=0; i<len; ++i){
for(int j=sum/2; j>=nums[i]; --j){
if(dp[j-nums[i]]){
dp[j] = 1;
}
}
}
bool flag = (dp[sum/2]==1);
delete[] dp;
return flag;
}
};
417. Pacific Atlantic Water Flow
- User
Accepted: 259 - User
Tried: 403 - Total
Accepted: 265 - Total
Submissions: 1217 - Difficulty: Medium
Given an m x n matrix of non-negative integers representing the height of each unit cell
in a continent, the "Pacific ocean" touches the left and top edges of
the matrix and the "Atlantic ocean" touches the right and bottom
edges.
Water can only flow in four directions (up,
down, left, or right) from a cell to another one with height equal or lower.
Find the list of grid coordinates where
water can flow to both the Pacific and Atlantic ocean.
Note:
- The order of returned grid coordinates does
not matter. - Both m and n are less than 150.
Example:
Given the following 5x5 matrix:
Pacific ~ ~
~ ~ ~
~ 1
2 2 3 (5)
*
~ 3
2 3 (4) (4) *
~ 2
4 (5) 3 1 *
~ (6) (7) 1
4 5 *
~ (5) 1
1 2 4 *
* *
* * * Atlantic
Return:
[[0, 4], [1, 3], [1, 4], [2, 2], [3, 0], [3, 1], [4, 0]] (positions with
parentheses in above matrix).
双重bfs,
要注意不能重复采集到顶点。
class Solution {
public:
int dx[4] = {0, 0, -1, 1};
int dy[4] = {-1, 1, 0, 0};
vector<pair<int, int>> pacificAtlantic(vector<vector<int>>& matrix) {
vector<pair<int,int>> ret;
int m = matrix.size();
if(m == 0){ return ret; }
int n = matrix[0].size();
if(n == 0){ return ret; }
vector<vector<int>> cnt(m, vector<int>(n, 0));
vector<vector<int>> vis(m, vector<int>(n, 0));
int tmp, cur_x, cur_y, tmp_x, tmp_y, i = 0, j = 0;
queue<pair<int, int>> qt;
for(int i=0; i<m; ++i){
qt.push(make_pair(i, 0));
cnt[i][0] += 1;
vis[i][0] = 1;
}
for(int i=1; i<n; ++i){
qt.push(make_pair(0, i));
cnt[0][i] += 1;
vis[0][i] = 1;
}
while(!qt.empty()){
cur_x = qt.front().first; cur_y = qt.front().second;
tmp = matrix[cur_x][cur_y];
qt.pop();
for(int i=0; i<4; ++i){
tmp_x = cur_x + dx[i]; tmp_y = cur_y + dy[i];
if(tmp_x>=0 && tmp_x<m && tmp_y>=0 && tmp_y<n && !vis[tmp_x][tmp_y] && matrix[tmp_x][tmp_y]>=tmp){
qt.push(make_pair(tmp_x, tmp_y));
cnt[tmp_x][tmp_y] += 1;
vis[tmp_x][tmp_y] = 1;
}
}
}
for(int i=0; i<m; ++i){
for(int j=0; j<n; ++j){
vis[i][j] = 0;
}
}
for(int i=0; i<m; ++i){
qt.push(make_pair(i, n-1));
cnt[i][n-1] += 1;
vis[i][n-1] = 1;
}
for(int i=0; i<n-1; ++i){
qt.push(make_pair(m-1, i));
cnt[m-1][i] += 1;
vis[m-1][i] = 1;
}
while(!qt.empty()){
cur_x = qt.front().first; cur_y = qt.front().second;
tmp = matrix[cur_x][cur_y];
qt.pop();
for(int i=0; i<4; ++i){
tmp_x = cur_x + dx[i]; tmp_y = cur_y + dy[i];
if(tmp_x>=0 && tmp_x<m && tmp_y>=0 && tmp_y<n && !vis[tmp_x][tmp_y] && matrix[tmp_x][tmp_y]>=tmp){
qt.push(make_pair(tmp_x, tmp_y));
cnt[tmp_x][tmp_y] += 1;
vis[tmp_x][tmp_y] = 1;
}
}
}
for(int i=0; i<m; ++i){
for(int j=0; j<n; ++j){
if(cnt[i][j] == 2){
ret.push_back(make_pair(i, j));
}
}
}
return ret;
}
};
LeetCode Weekly Contest 8的更多相关文章
- leetcode weekly contest 43
leetcode weekly contest 43 leetcode649. Dota2 Senate leetcode649.Dota2 Senate 思路: 模拟规则round by round ...
- LeetCode Weekly Contest 23
LeetCode Weekly Contest 23 1. Reverse String II Given a string and an integer k, you need to reverse ...
- Leetcode Weekly Contest 86
Weekly Contest 86 A:840. 矩阵中的幻方 3 x 3 的幻方是一个填充有从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等. 给定一个 ...
- LeetCode Weekly Contest
链接:https://leetcode.com/contest/leetcode-weekly-contest-33/ A.Longest Harmonious Subsequence 思路:hash ...
- 【LeetCode Weekly Contest 26 Q4】Split Array with Equal Sum
[题目链接]:https://leetcode.com/contest/leetcode-weekly-contest-26/problems/split-array-with-equal-sum/ ...
- 【LeetCode Weekly Contest 26 Q3】Friend Circles
[题目链接]:https://leetcode.com/contest/leetcode-weekly-contest-26/problems/friend-circles/ [题意] 告诉你任意两个 ...
- 【LeetCode Weekly Contest 26 Q2】Longest Uncommon Subsequence II
[题目链接]:https://leetcode.com/contest/leetcode-weekly-contest-26/problems/longest-uncommon-subsequence ...
- 【LeetCode Weekly Contest 26 Q1】Longest Uncommon Subsequence I
[题目链接]:https://leetcode.com/contest/leetcode-weekly-contest-26/problems/longest-uncommon-subsequence ...
- LeetCode Weekly Contest 47
闲着无聊参加了这个比赛,我刚加入战场的时候时间已经过了三分多钟,这个时候已经有20多个大佬做出了4分题,我一脸懵逼地打开第一道题 665. Non-decreasing Array My Submis ...
随机推荐
- 烂泥:apache性能测试工具ab的应用
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 网站性能压力测试是服务器网站性能调优过程中必不可缺少的一环.只有让服务器处在高压情况下,才能真正体现出软件.硬件等各种设置不当所暴露出的问题. 性能测试 ...
- ssh升级
Openssh升级操作步骤(此方法仅供参考) 1 .开启telnet服务 未避免openssh升级失败,导致ssh无法连接,在升级前首先开启telnet服务. 首先要确定是否安装了telnet 修改配 ...
- [转]ASP.Net篇之Session与Cookie
本文转自:http://www.cnblogs.com/japanbbq/archive/2011/08/31/2160494.html Session: Session是“会话”的意思,然而,因为h ...
- 【2016-10-12】【坚持学习】【Day3】【命令模式】
今天学习了第二个模式,命令模式 例子: 开关==>发送者 电线==>命令传输 电灯==>接受者 一个开关可以通过不同电线控制不同电器, 结构: 发送者类, 抽象命令类 具体命令类:继 ...
- 【转】【收藏】LINQ学习心得分享--------(二)LINQ语法详解
原地址:http://blog.csdn.net/xuemoyao/article/details/8053444 通过上一章节的学习,相信大家已经掌握了学习LINQ的前期的准备知识.在这一节里, ...
- BZOJ1015[JSOI2008]星球大战starwar[并查集]
1015: [JSOI2008]星球大战starwar Time Limit: 3 Sec Memory Limit: 162 MBSubmit: 5253 Solved: 2395[Submit ...
- jmeter 监控服务器的内存,cpu等内容
1.需要下载一个jar包,放入到lib /ext文件中 JMeterPlugins-Standard.jar 2.在服务器上安装 perfmon server agent 这里监控内存我们使用的是: ...
- 如何用patch打补丁
patch -p1 < *.patch -p1代表忽略第一层目录(patch文件中的).
- [No00002D] “大学生还不如农民工”背后的“身份教育”困境
日前,北京大学市场与媒介研究中心与赶集网联合发布了<90后毕业生饭碗报告>.而这份来自35万余份有效问卷的报告显示,今年应届毕业生平均起薪每月2443元,仅够买半部苹果手机,其中北京地区平 ...
- SQLite 增、删、改、查
1.iOS中实现SQLite的增.删.改.查 http://www.jianshu.com/p/0b9b78e704a4. 2.用数据库实现收藏功能 http://www.jianshu.com/p ...