LeetCode Contest 166
第一次知道LeetCode 也有比赛。
很久没有打过这种线上的比赛,很激动。
直接写题解吧
很弱智
class Solution {
public:
int subtractProductAndSum(int n) {
int num1=0;
int num2=1;
while(n)
{
int x = n%10;
num1+=x;
num2*=x;
n/=10;
}
return num2-num1;
}
};
第二题
也很简单的,我先排个序。
但是在用c++的快排的时候,被坑了,我一直的习惯是写自定义比较函数,没有写运算符重载,不知道为什么一直RE,浪费了挺多时间
struct Node
{
int value;
int index;
Node(){}
Node(int value,int index)
{
this->value = value;
this->index = index;
}
bool operator <(const Node &x)const
{
return value<x.value;
}
};
class Solution {
public:
int vis[1005];
Node a[1005];
vector<vector<int>> groupThePeople(vector<int>& groupSizes) {
int len = groupSizes.size();
for(int i=0;i<len;i++)
{
a[i] = Node(groupSizes[i],i);
}
sort(a,a+len);
vector<vector<int>> ans;
vector<int> res;
res.push_back(a[0].index);
int num=0;
for(int i=1;i<len;i++)
{
if(a[i].value==a[i-1].value)
{
if(res.size()==a[i].value)
{
ans.push_back(res);
res.clear();
res.push_back(a[i].index);
continue;
}
res.push_back(a[i].index);
}
else
{
ans.push_back(res);
res.clear();
res.push_back(a[i].index);
}
}
if(res.size()!=0)
{
ans.push_back(res);
}
return ans;
}
};
二分,一次过,没有怎么浪费时间
class Solution {
public:
int smallestDivisor(vector<int>& nums, int threshold) {
int num=0;
for(int i=0;i<nums.size();i++)
{
num=max(num,nums[i]);
}
int start = 1;
int end = num;
while(start<=end)
{
int mid = (start+end)/2;
int sum=0;
for(int i=0;i<nums.size();i++)
{
int x;
if(nums[i]%mid==0)
x = nums[i]/mid;
else
x = nums[i]/mid +1;
sum+=x;
}
if(sum > threshold)
{
start = mid + 1;
continue;
}
if(sum <= threshold)
{
end = mid - 1;
continue;
}
}
return start;
}
};
看着挺唬人的,我一开始纠结是不是DP,但是一看数据,最多只有3啊,暴力搜索,用位运算保存矩阵的状态,然后注意剪枝就过了。但是因为在第二题上耽误了一些时间,导致比赛结束后,才过了第四题,哎。。
class Solution {
public:
int vis[10005];
int ans[10005];
int map[10][10];
int n,m;
int result;
int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
int minFlips(vector<vector<int>>& mat) {
int len = mat.size();
n=len;
m=mat[0].size();
for(int i=0;i<mat.size();i++)
{
for(int j=mat[i].size()-1;j>=0;j--)
{
map[i][j] = mat[i][j];
}
}
result = 9999999;
int x = compute();
if(x==0)
return 0;
vis[x]=1;
ans[x]=0;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
fun(i,j,1);
map[i][j] ^= 1;
for(int k=0;k<4;k++)
{
int xx = i+dir[k][0];
int yy = j+dir[k][1];
if(xx>=0&&xx<n&&yy>=0&&yy<m)
map[xx][yy] ^=1;
}
}
}
if(result == 9999999 )
result =-1;
return result;
}
void fun(int x,int y,int res)
{
map[x][y] ^= 1;
for(int i=0;i<4;i++)
{
int xx = x+dir[i][0];
int yy = y+dir[i][1];
if(xx>=0&&xx<n&&yy>=0&&yy<m)
map[xx][yy] ^=1;
}
int v = compute();
if(vis[v]==1)
{
if(res>=ans[v])
{
return;
}
else
{
ans[v]=res;
}
}
if(v==0)
{
result=min(result,res);
return;
}
vis[v]=1;
ans[v]=res;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
fun(i,j,res+1);
map[i][j] ^= 1;
for(int k=0;k<4;k++)
{
int xx = i+dir[k][0];
int yy = j+dir[k][1];
if(xx>=0&&xx<n&&yy>=0&&yy<m)
map[xx][yy] ^=1;
}
}
}
}
int compute()
{
int x=0;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
x <<= 1;
x |= map[i][j];
}
}
return x;
}
};
LeetCode Contest 166的更多相关文章
- 【LeetCode】166. Fraction to Recurring Decimal 解题报告(Python)
[LeetCode]166. Fraction to Recurring Decimal 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingz ...
- leetcode contest 20
Q1: 520. Detect Capital Given a word, you need to judge whether the usage of capitals in it is right ...
- LeetCode No.166,167,168
No.166 FractionToDecimal 分数到小数 题目 给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数. 如果小数部分为循环小数 ...
- 【LeetCode】166. Fraction to Recurring Decimal
Fraction to Recurring Decimal Given two integers representing the numerator and denominator of a fra ...
- LeetCode(166) Fraction to Recurring Decimal
题目 Given two integers representing the numerator and denominator of a fraction, return the fraction ...
- Atcoder Beginner Contest 166
VP赛况如下: 前言:感觉这一场题目难度还是比较贴近新生的,我一个codeforces小蓝名一小时居然AK了,F题数据有点水(?)暴力dfs居然都能过... A:A?C 题意:给你字符串,如果字符串是 ...
- 230th Weekly Leetcode Contest
题目二 题目描述 5690. 最接近目标价格的甜点成本 难度:中等-中等 题解 解法一:三进制状态压缩 考虑到baseCosts.toppingCosts的长度最多都为10,每一种辅料都有加0.1. ...
- 【刷题-LeetCode】166 Fraction to Recurring Decimal
Fraction to Recurring Decimal Given two integers representing the numerator and denominator of a fra ...
- leetcode bugfree note
463. Island Perimeterhttps://leetcode.com/problems/island-perimeter/就是逐一遍历所有的cell,用分离的cell总的的边数减去重叠的 ...
随机推荐
- java基础(18):集合、Iterator迭代器、增强for循环、泛型
1. 集合 1.1 集合介绍 集合,集合是java中提供的一种容器,可以用来存储多个数据. 在前面的学习中,我们知道数据多了,可以使用数组存放或者使用ArrayList集合进行存放数据.那么,集合和数 ...
- SpringBoot(二):SpringBoot 热部署
1.配置pom: <dependency> <groupId>org.springframework.boot</groupId> <artifactId&g ...
- QP编码详解
- 原理 QP编码是一种使用可打印的ASCII字符 (如字母.数字与"=")表示各种编码格式下的字符.其方法是将一个8bit的字符表示成两个16进制数,并在前面加一个"= ...
- iOS----------苹果警告
Dear Developer, We identified one or more issues with a recent delivery for your app, "私募排排网-连接 ...
- 搭建RTMP直播流服务器
最近项目比较紧张,所以没什么时间写博客,正好这几天没什么事,赶紧记录下自己最近所学. 环境配置 服务器选用 服务器我选择的是小鸟云 ,原因很简单,他的个人用户有3个月免费使用时间. 服务器环境 Win ...
- 使用maven-compiler-plugin以及maven-shade-plugin完成maven项目打包
最近负责一个纯maven项目(项目需求尽量轻量化),需要自己完成打包工作. 因此,基于maven-compiler-plugin以及maven-shade-plugin完成项目的打包工作. 其中: m ...
- 基于Spark.NET和ML.NET Automated ML (自动学习)进行餐厅等级的检查预测
简介 Apache Spark是一个开源.分布式.通用的分析引擎.多年来,它一直是大数据生态系统中对大型数据集进行批量和实时处理的主要工具.尽管对该平台的本地支持仅限于JVM语言集,但其他通常用于数据 ...
- Java重定向标准输入/输出
在System类中提供了三个重定向标准输入/输出的方法static void setErr(PrintStream err) 重定向“标准”错误输出流static void setIn(InputSt ...
- c# 第22节 c#四大方法 静态方法、实例方法、虚方法、重新方法
本节内容: 1:静态方法和实例方法什么 2:虚方法是什么 3:重写方法 4:禁止重写方法 1:静态方法和实例方法是什么 静态方法,一般是类的常用方法,允许在不创建类的实例的情况下,直接调用. 静态方法 ...
- 攻防世界Web-bug
一直误以为是二次注入,看了别人wp,自己梳理了一遍 首先打开题目页面 先注册一个账号 注册成功(注意这个UID) 然后注意下包,发现cookie中的user很可疑,是一串md5值,我们可以推测是我们注 ...