【LeetCode】一周中的第几天+ 一年中的第几天
2023-12-30
文章目录
- 一周中的第几天
- 方法一:模拟
- 思路
- 步骤
- 方法二:调用库函数
- 方法三:调用库函数
- [1154. 一年中的第几天](https://leetcode.cn/problems/day-of-the-year/)
- 方法一:直接计算
- 思路:
- 方法二:调用库函数
- 思路
一周中的第几天

- 提示:给出的日期一定是在
1971到2100年之间的有效日期。
方法一:模拟
思路
-
1.可以根据1970年的最后一天(周四),计算出和输入日期间隔了几天(ans+之前的年份天数和+当前的月份天数和+输日的天数)
-
2.求出具体的天数之后进行取模,得到具体的星期
步骤
1.定义一个字符串类型的数组,大小为7,记录星期字典
定义一个int类型的数组,大小为12,记录12个月份分别对应的天数(闰年进行判断)
2.定义一个初始天数ans=4(从周四开始)
3.从1971年开始遍历,直到输入的年份,判断当前年是否为闰年,初始值加上对应的天数
4.遍历月份直到输入月份,二月的情况根据是否是闰年来加上额外的一天
5.最后加上输入的天数,所求之和取模
static String[] week =new String[] {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};//每周对应的星期static int[] nums = new int[]{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//每个月对应的天数public String dayOfTheWeek(int day, int month, int year) {int ans = 4;//初始值为4,从周四开始for (int i = 1971; i < year; i++) {boolean isLeapYear = (i % 4 == 0 && i % 100 != 0) || i % 400 == 0;//判断是否为闰年ans += isLeapYear ? 366 : 365;//是闰年加366,不是加355}for (int i = 1; i < month; i++) {ans += nums[i - 1];//之前的月份数之和if (i == 2 && ((year % 4 == 0 && year% 100 != 0) || year % 400 == 0)){ans++;//如果当前是闰年,单独加1}}ans += day;//加上输入的天数return week[ans % 7];//求模返回对应星期}
方法二:调用库函数
1.使用LocalDate.of(year, month, day)创建了一个LocalDate对象date,表示给定的日期。LocalDate是Java 8中新增的日期类,用于处理日期相关操作。(Java8新增)
2.通过调用date.getDayOfWeek()方法获取该日期的星期几信息,getDayOfWeek()返回的是一个DayOfWeek枚举类型,表示星期几。
3.最后,通过调用getDisplayName(TextStyle.FULL_STANDALONE, Locale.ENGLISH)方法,将星期几信息以全名的形式返回,使用英语的地区设置。
import java.time.LocalDate;
import java.time.format.TextStyle;
import java.util.*;class Solution {public String dayOfTheWeek2(int day, int month, int year) {LocalDate date = LocalDate.of(year, month, day);//创建了一个`LocalDate`对象`date`,表示给定的日期return date.getDayOfWeek().getDisplayName(TextStyle.FULL_STANDALONE, Locale.ENGLISH);//方法获取该日期的星期几信息//将星期几信息以全名的形式返回,使用英语的地区设置}
方法三:调用库函数
1.首先声明了一个私有的静态变量calendar,并调用其静态方法getInstance()获取一个默认时区的Calendar实例。然后声明了一个私有的静态变量weekFormat,它是一个SimpleDateFormat对象,用于格式化星期几信息。
2.使用set(year, month - 1, day)方法将calendar设置为给定日期。由于Calendar中的月份从0开始,所以需要将传入的month减去1
3.使用weekFormat.format(calendar.getTime())方法将calendar中的时间格式化为星期几的字符串,其中weekFormat是一个SimpleDateFormat对象,通过设置格式为"EEEE"来表示星期几的全名形式
private static final Calendar calendar = Calendar.getInstance();
//获取一个默认时区的`Calendar`实例private static final SimpleDateFormat weekFormat = new SimpleDateFormat("EEEE");
//格式化星期几信息public String dayOfTheWeek3(int day, int month, int year) {calendar.set(year, month - 1, day);// 将`calendar`设置为给定日期return weekFormat.format(calendar.getTime());//`calendar`中的时间格式化为星期几的字符串}
1154. 一年中的第几天

方法一:直接计算
思路:
1.根据所给的字符串,分别截取出年月日的信息,转化成整数
2.根据当前年份,判断是否为闰年,是闰年:二月加1
3.之前月份天数之和,最后加上天数的信息
public int dayOfYear(String date) {int year = Integer.parseInt(date.substring(0, 4));int month = Integer.parseInt(date.substring(5, 7));int day = Integer.parseInt(date.substring(8));//调用substring分别截取出年月日的信息,转化为整数int[] monthes = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//每个月份的天数if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {++monthes[1];}//如果当前的闰年,二月加1天(直接改变月份字典中的数)int ans = 0;for (int i = 0; i < month - 1; ++i) {ans += monthes[i];//每个月天数之和}return ans + day;}
方法二:调用库函数
思路
1.指定日期字符串的格式
2.解析为 LocalDate 对象
3.返回该日期在其所属年份中的天数
private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
//定义了一个 DateTimeFormatter 对象,它指定了日期字符串的格式为 "yyyy-MM-dd"public int dayOfYear2(String date) {return LocalDate.parse(date, formatter).getDayOfYear();//LocalDate.parse() 方法将日期字符串解析为 LocalDate 对象//getDayOfYear() 方法则返回该日期在其所属年份中的天数}
点击移步博客主页,欢迎光临~

相关文章:
【LeetCode】一周中的第几天+ 一年中的第几天
2023-12-30 文章目录 一周中的第几天方法一:模拟思路步骤 方法二:调用库函数方法三:调用库函数 [1154. 一年中的第几天](https://leetcode.cn/problems/day-of-the-year/)方法一:直接计算思路: 方法二:调用…...
深度学习 精选笔记(10)简单案例:房价预测
学习参考: 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增),以达到集多方教程的精华于一文的目的。 ③非常推荐上面(学习参考&#x…...
DBGridEh 的排序
DBGridEh 可以点列抬头使得记录按该列排序 不需要写代码,只需要设置好,它就能排序。 网上的文章一般写了如何设置。但一般都少说了一条。 先说如何设置: 1. OptionsEh.AutoSortMarking 设置为 True,如果是设计期属性面板&…...
spring-boot-starter-parent和spring-boot-dependencies介绍
springboot项目的pom文件中,我们经常看见这样(下图)两种springboot的版本依赖管理方式;图片中的这两种依赖声明方式任意用其中一种都可以。文章后面会简单阐述一下区别和使用场景。 事例中完整的pom文件 <?xml version"1.0" encoding&quo…...
缓存穿透解决方案之布隆过滤器
布隆过滤器可以快速判断数据是否存在,避免从数据库中查询数据是否存在,减轻数据库的压力 布隆过滤器是由一个初值为0的bit数组和N个哈希函数,可以用来快速的判断某个数据是否存在 当我们想要标记某个数据是否存在时,布隆过滤器会…...
pptx和ppt有什么区别?了解两者之间的微妙差异
在现代办公和学习环境中,PowerPoint已成为我们生活中不可或缺的一部分。随着技术的不断进步,PowerPoint的格式也在不断更新。对于许多初学者,可能会对PPT和PPTX这两种格式感到困惑。本文旨在深入探讨PPTX与PPT之间的主要差异,帮助…...
LabVIEW水下温盐深数据一体化采集与分析
LabVIEW水下温盐深数据一体化采集与分析 开发一个基于LabVIEW的水下温盐深数据一体化采集与分析系统,实现海洋环境监测的自动化和精确化。通过集成温度、盐度和深度传感器,结合USB数据采集卡,利用LabVIEW软件开发的图形化界面,实…...
适配器模式 详解 设计模式
适配器模式 适配器模式是一种结构型设计模式,其主要作用是解决两个不兼容接口之间的兼容性问题。适配器模式通过引入一个适配器来将一个类的接口转换成客户端所期望的另一个接口,从而让原本由于接口不匹配而无法协同工作的类能够协同工作。 结构 适配…...
探索rsync远程同步和SSH免密登录的奥秘
目录 集群分发脚本xsyncscp(secure copy)安全拷贝rsync 远程同步工具集群分发脚本 SSH免密登录免密登录原理SSH免密登录配置生成公钥和私钥授权测试 在现代科技飞速发展的时代,数据的备份和迁移成为了一个重要的课题。其中,rsync远…...
JavaScript new、apply call 方法
new、apply、call、bind JavaScript 中的 apply、call和 bind 方法是前端代码开发中相当重要的概念,并且与 this 的指向密切相关 new new 关键词的主要作用 就是执行一个构造函数、返回一个实例对象 根据构造函数的情况,来确定是否可以接受参数的传递…...
助力智能化农田作物除草,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建农田作物场景下玉米苗、杂草检测识别分析系统
在我们前面的系列博文中,关于田间作物场景下的作物、杂草检测已经有过相关的开发实践了,结合智能化的设备可以实现只能除草等操作,玉米作物场景下的杂草检测我们则少有涉及,这里本文的主要目的就是想要基于DETR模型来开发构建玉米…...
O(1)转移线性dpLeetCode 2369. 检查数组是否存在有效划分
一、题目 1、题目描述 给你一个下标从 0 开始的整数数组 nums ,你必须将数组划分为一个或多个 连续 子数组。 如果获得的这些子数组中每个都能满足下述条件 之一 ,则可以称其为数组的一种 有效 划分: 子数组 恰 由 2 个相等元素组成…...
【力扣hot100】刷题笔记Day17
前言 今天竟然不用开组会!天大的好消息,安心刷题了 46. 全排列 - 力扣(LeetCode) 回溯(排列) class Solution:def permute(self, nums: List[int]) -> List[List[int]]:# 回溯def backtrack():if len(…...
leetcode日记(34)通配符匹配
这道题做了很久很久……一开始我想用的方法是使用双指针,分别指向两数组,然后依次按照题目中的规则遍历,做了很久发现时间超限了!这是我最后超时的代码! class Solution { public:bool isMatch(string s, string p) {…...
一张图读懂人工智能
一、生成人工智能的概念和应用,以及如何使用大型语言模型进行聊天和创造原创内容。这项技术将会对人类和企业产生深远影响。 计算机获得学习、思考和交流的能力,被称为生成人工智能。生成人工智能可以立即获得人类所有知识的总和,并回答任何…...
5.37 BCC工具之uflow.py解读
一,工具简介 uflow工具用于跟踪方法的进入和退出事件,并打印一个可视化的流程图,显示方法是如何进入和退出的,类似于带有断点的跟踪调试器。这对于理解Java、Perl、PHP、Python、Ruby和Tcl等高级语言中的程序流非常有用,这些语言为方法调用提供了USDT探测。 二,代码示例…...
R语言简介,R语言开发环境搭建步骤,R基础语法以及注释详解
R语言是一种用于统计计算与绘图的编程语言,由新西兰奥克兰大学的统计学家罗斯伊哈卡和罗伯特杰特曼于1993年发明。R语言是一种自由、免费、源代码开放的软件,属于GNU系统的一个分支,如今被广泛地应用于统计分析、数据挖掘等领域。 R语言的特…...
【Django】执行查询—检索对象
检索对象 以下述模型为基础,讨论检索对象的方式方法: from datetime import datefrom django.db import modelsclass Blog(models.Model):name models.CharField(max_length100)tagline models.TextField()def __str__(self):return self.nameclass …...
Python:练习:编写一个程序,写入一个美金数量,然后显示出如何用最少的20美元、10美元、5美元和1美元来付款
案例: python编写一个程序,写入一个美金数量,然后显示出如何用最少的20美元、10美元、5美元和1美元来付款: Enter a dollar amout:93 $20 bills: 4 $10 bills: 1 $5 bills:0 $1 bills:3 思考: 写入一个美金数量&…...
模板方法模式 详解 设计模式
模板方法模式 模板方法模式是一种行为型设计模式,它定义了一个算法的骨架,将一些步骤延迟到子类中实现。这种模式允许子类在不改变算法结构的情况下重新定义算法的某些步骤。 结构 抽象类(Abstract Class):负责给出一…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
