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 ...
随机推荐
- python异常
Std 异常 异常名 描述 1 Exception 所有的异常 2 StopIteration 迭代器的next()方法不指向任何对象 3 SystemExit sys.exit() 函数执行 4 S ...
- 3.Docker - 镜像管理
一.使用容器生成镜像 1.进入容器,安装软件包(任意包) 1 2 3 4 5 6 7 bash-3.2# docker ps -a CONTAINER ID IMAGE ...
- python脚本实现自动保留ctime最近的几个文件
使用了给字典排序的sorted方法 #!/usr/bin/env python # coding:utf-8 import os def rm_backup(rm_path,days): files_ ...
- 初识JNI
需要用到NDK Android 平台从诞生起,就已经支持 C.C++开发.众所周知,Android 的 SDK 基于 Java 实现,这意味着基于 Android SDK 进行开发的第三方应用都必须使 ...
- nginx有关.htaccess小结
可能很多朋友都常用nginx不支持.htaccess,只有apache才支持.htaccess文件,其实这是错误的看法nginx也是支持.hatccess的哦. 其实nginx和.htaccess一点 ...
- delphi 安装.dpk;package
打开.dpk,若要将包直接安装在delphi的默认安装目录下(D:\Program Files (x86)\Borland\Delphi7\Projects\Bpl), 可清除,点击options打开 ...
- linux centos6.5 ftp网页vsftpd配置
安装命令centos下 yum install vsftpd 出现“Complete!”时意味着安装完成.Linux中,系统对于大小写严格区分,比如abc和ABC是完全不相同的字符,要特别注意.配置V ...
- css3 @font-face
很长时间,web设计师总是得用一些“web-safe”字体,英文用body{font-family:"corbel", Arial, Sans-serif; }中文用body{f ...
- [转]backbone.js template()函数
本文转自:http://book.2cto.com/201406/43974.html 本文所属图书 > Backbone.js实战 资深Web开发专家根据Backbone js最新版本撰写,对 ...
- Java中的单例模式
单例模式: public class Person{ public static Person per; //定义一个静态变量,用来存储当前类的对象 private Person() //构造一个私有 ...