LeetCodeWeeklyContest-177

2024-01-01 06:48
文章标签 177 leetcodeweeklycontest

本文主要是介绍LeetCodeWeeklyContest-177,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第 177 场周赛
rank:1381 / 2985
AC: 1/4

日期之间隔几天

给定两个yyyy-MM-DD格式的字符串,计算两者之间差多少天

java日期类之前写的很少,想起来用然后导了半天的包,还得抛异常…还是不熟

import java.util.Date;
import java.text.SimpleDateFormat;class Solution {public int daysBetweenDates(String date1, String date2) {SimpleDateFormat sdf = new  SimpleDateFormat("yyyy-MM-dd");try{long days = Math.abs(sdf.parse(date1).getTime() - sdf.parse(date2).getTime()) ;return (int)(days/ (1000*3600*24));}catch(Exception e){return 0;}}
};

验证二叉树

  • 解法1:dfs,利用vis统计多次访问的,返回false,有不止一个连通分量的返回false
int vis[100005];
bool dfs(int x,vector<int>& l, vector<int>& r){if(x==-1) return true;if(vis[x]) return false;vis[x]=1;return  dfs(l[x],l,r) && dfs(r[x],l,r);
}
class Solution {
public:bool validateBinaryTreeNodes(int n, vector<int>& l, vector<int>& r) {memset(vis,0,sizeof(vis));if(!dfs(0,l,r)) return false;for(int i=0;i<n;i++) {if(!vis[i]) return false;}return true;}
};
  • 解法2: 利用图论的知识,-1的个数等于结点个数加1时为二叉树
class Solution {
public:bool validateBinaryTreeNodes(int n, vector<int>& l, vector<int>& r) {int count = 0;for(int i=0;i<n;i++){if(l[i]==-1) count ++;if(r[i]==-1) count ++;}return count==n+1;}
};

最接近的因数

直接从sqrt(num+2)到0进行遍历,然后判断

class Solution {
public:vector<int> closestDivisors(int num) {vector<int> v;int sq = (int)sqrt(num+2);int mind = 1000000000;for(int i=sq;i>0;i--){int j1 = (num+1)/i,j2 = (num+2)/i;if(i*j1==num+1){if(abs(i-j1)<mind){mind = abs(i-j1);v.clear();v.push_back(i);v.push_back(j1);}}else if(i*j2==num+2){if(abs(i-j1)<mind){mind = abs(i-j2);v.clear();v.push_back(i);v.push_back(j2);}}}return v;}  
};

形成三的最大倍数

参考: c++ 去掉最小值 8ms

能被三整除的数,它的各个位上的数加起来的和sum也能被三整除,如果sum%3==1,那可以删去一个对三取余为1的数,也可以删去两个对三取余为2的数.如果sum%3==2,那可以删去一个对三取余为2的数,也可以删去两个对三取余为1的数.删除的时候要从小往大删,这里面体现了贪心的思想.

class Solution {int cnt[10];string res="";int del(int x){for(int i=x;i<=9;i+=3) if(cnt[i]) {cnt[i]--;return 1;}return 0;}
public:string largestMultipleOfThree(vector<int>& digits) {memset(cnt,0,sizeof(cnt));int n = digits.size(),sum=0;for(int i=0;i<n;i++){cnt[digits[i]]++;sum += digits[i];}if(cnt[0]==n) return "0";if(sum%3==1)  if(!del(1)) {del(2);del(2);}if(sum%3==2) if(!del(2)) {del(1);del(1);}for(int i=9;i>=0;i--){while(cnt[i]--) res += i+'0';}return res;}
};

这篇关于LeetCodeWeeklyContest-177的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/558437

相关文章

Codeforces Round #177 (Div. 1) B. Polo the Penguin and Houses (组合数学)

题目地址:http://codeforces.com/contest/288/problem/B 首先,前面的k个与后面的n-k个是没关系的,后面的n-k个显然是(n-k)^(n-k),所以只需看前k个,而由于2-k都可以到达1,所以1放1-k都可以,所以这时只研究2-k个。      由于都要到达1,所以2-k必须有1,这时候讨论有多少个1,如果有x个1,则此时是C(k-1,x),然后再讨论

177.二叉树:从前序与中序遍历序列构造二叉树(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(in

[机缘参悟-177] /[创业之路-110] :不同公司选人的标准,体现公司发展的阶段、制度成熟度以及与自己的紧密度

目录 前言:选人的标准与顺序关系 1. 过命(深厚的友情或伙伴关系) 2. 背靠背(相互信任和支持) 3. 信任(人际关系中的关键要素) 4. 善良本性(人的天性之一) 5. 做人做事靠谱(后天形成的性格特质) 6. 三观(世界观、人生观、价值观) 1. 世界观 2. 人生观 3. 价值观 评估方法 7. 理念、理想、愿景(基于三观的未来规划) 理念 理想 愿景 评

AtCoder Regular Contest 177

A - Excange 题意 用这些零钱能否不找零地买这些物品 思路 因为 500 = 5 × 100 = 10 × 50 = 50 × 10 = 500 × 1 500=5\times 100=10\times 50=50\times 10=500\times 1 500=5×100=10×50=50×10=500×1。 所以说,我们这道题可以采用贪心算法,优先取大的减去目前零钱最大

177种216阶群

陈松良的《关于216阶群的完全分类》一文证明G216共有177种互不同构的类型,并获得了G的全部构造。 gap> NumberSmallGroups(216); 177 gap> for n in [1..177] do G:=SmallGroup(216,n);idn:=IdGroup(G);Print(idn);Print(":");L:=List(Elements(G),Order);;M:

【领扣leetcode数据库】177. 第N高的薪水 难度 中等

题目描述 编写一个 SQL 查询,获取 Employee 表中第 n 高的薪水(Salary)。 +----+--------+| Id | Salary |+----+--------+| 1 | 100 || 2 | 200 || 3 | 300 |+----+--------+ 例如上述 Employee 表,n = 2 时,应返回第二高的薪水 2

【MATLAB源码-第177期】基于matlab的蜘蛛蜂优化算法(SWO)无人机三维路径规划,输出做短路径图和适应度曲线

操作环境: MATLAB 2022a 1、算法描述 蜘蛛蜂优化算法(Spider Wasp Optimization, SWO)是一种启发式算法,它受到自然界中蜘蛛和蜂这两种生物的行为模式启发而开发。这一算法主要模拟了蜘蛛捕食与蜂群社会行为之间的相互作用,用以解决优化问题。算法设计灵感来源于蜘蛛的捕食技巧和蜂群的社会结构,通过模拟这些自然界中的行为,SWO算法能有效地寻找到问题的全局最优解或

LeetCode 第177场周赛

1.日期之间隔几天 【思路】计算两个日期和1970-1-1之间相隔的天数,然后相减即可。需要注意闰年闰月的判断。 int getday(int *d1){int month[12]={31,28,31,30,31,30,31,31,30,31,30,31};int day1=0,i;for(i=1970;i<d1[0];i++){if(i%400==0||(i%100!=0&&i%4==0))

【177期】抛开硬实力,如何写简历才能帮你更快争取到面试机会?

程序员的成长之路 互联网/程序员/技术/资料共享  关注 阅读本文大概需要 6 分钟。 来自:www.cnblogs.com/lixuwu/p/8469037.html 背景:进入第一家公司已经工作将近两年了,其中闲了一年,在准备自己的简历的时候,有种江郎才尽的感觉,不知道怎么写,看来平时还是要多积累多熟悉。 ps:这里面的分享看完还是很受用的。 简历看得比较认真的,也不会多于30秒

java多线程的爬虫撸177图片~~

#来个多线程的 主程序package cn.fu.threadimage;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import org.jsoup.select.Elements;import java.io.File;import java.io.IOE