力扣刷题(数组篇)

日期类

#pragma once#include <iostream>
#include <assert.h>
using namespace std;class Date
{
public:// 构造会频繁调用,所以直接放在类里面(类里面的成员函数默认为内联)Date(int year = 1, int month = 1, int day = 1)//构造{_year = year;_month = month;_day = day;//if (!CheckDate())//{//	Print();//	cout << "刚构造的日期非法" << endl;//}assert(CheckDate());}void Print() const;  // 打印int GetMonthDay(int year, int month)// 获取某年某月的天数{static int days[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };int day = days[month];if (month == 2&& ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))){day += 1;}return day;}bool CheckDate()// 检查日期是否合法{if (_year >= 1&& _month > 0 && _month < 13&& _day > 0 && _day <= GetMonthDay(_year, _month)){return true;}else{return false;}}bool operator==(const Date& d) const;bool operator>(const Date& d) const;bool operator!=(const Date& d) const;bool operator>=(const Date& d) const;bool operator<(const Date& d) const;bool operator<=(const Date& d) const;Date& operator+=(int day);Date operator+(int day) const;Date& operator-=(int day);Date operator-(int day) const;// 特殊处理,使用重载区分,后置++重载增加一个int参数跟前置构成函数重载进行区分Date& operator++(); // 前置Date operator++(int); // 后置Date& operator--();// 前置Date operator--(int);// 后置int operator-(const Date& d) const; //日期减日期void PrintWeekDay() const; //返回*this是星期几private:int _year;int _month;int _day;
};#include "Date.h"// void Date::Print(const Date* const this)
void Date::Print() const
{cout << _year << "年" << _month << "月" << _day << "日" << endl;
}// 任何一个类,只需要写一个> == 或者 < ==重载 剩下比较运算符重载复用即可
bool Date::operator== (const Date& d) const
{return _year == d._year&& _month == d._month&& _day == d._day;
}bool Date::operator>(const Date& d) const
{if ((_year > d._year)|| (_year == d._year && _month > d._month)|| (_year == d._year && _month == d._month && _day > d._day)){return true;}else{return false;}
}bool Date::operator!=(const Date& d) const
{return !(*this == d);
}bool Date::operator>=(const Date& d) const
{return (*this > d) || (*this == d);
}bool Date::operator<(const Date& d) const
{return !(*this >= d);
}bool Date::operator<=(const Date& d) const
{return !(*this > d);
}Date& Date::operator+=(int day)
{if (day < 0){return *this -= -day;}_day += day;while (_day > GetMonthDay(_year, _month)){_day -= GetMonthDay(_year, _month);_month++;if (_month == 13){_year++;_month = 1;}}return *this;
}Date Date::operator+(int day) const
{Date ret = *this; ret += day;return ret;// 出了作用域ret对象就不在了,所以不能用引用返回
}Date& Date::operator-=(int day)
{if (day < 0){return *this += -day;}_day -= day;while (_day <= 0){_month--;if (_month == 0){_year--;_month = 12;}_day += GetMonthDay(_year, _month);}return *this;
}Date Date::operator-(int day) const
{Date ret = *this;ret -= day;// ret.operator-=(day);return ret;// 和 + 一样,出了作用域ret对象就不在了,所以不能用引用返回
}Date& Date::operator++() // 前置
{return 	*this += 1;
}
Date Date::operator++(int) // 后置
{Date ret = *this;*this += 1;return ret;
}Date& Date::operator--() // 前置
{return *this -= 1;
}
Date Date::operator--(int) // 后置
{Date ret = *this;*this -= 1;return ret;
}int Date::operator-(const Date& d) const
{int ret = 0;int flag = -1;Date min = *this;//默认第一个小,返回的时候乘上 -1Date max = d;if (*this > d)//默认错误,把小和大重置,返回时乘上 1{flag = 1;min = d;max = *this;}while (min != max){++min;++ret;}return ret * flag;
}void Date::PrintWeekDay() const //打印*this是星期几
{const char* Week[] = { "星期一","星期二" ,"星期三" , "星期四" ,"星期五" , "星期六" , "星期天" };Date flag(1900, 1, 1); //1900年1月1日是星期一,自己减自己为0,对应下标0cout << Week[(*this - flag) % 7] << endl;
}#include "Date.h"void TestDate7()
{Date d1(2023, 5, 5);Date d2(2023, 6, 7);d1.Print();d1.PrintWeekDay();d2.Print();d2.PrintWeekDay();Date d3(1900, 1, 7);Date d4(2050, 6, 7);d3.Print();d3.PrintWeekDay();d4.Print();d4.PrintWeekDay();
}int main()
{TestDate7();return 0;
}
485. 最大连续 1 的个数 - 力扣(LeetCode)
剑指 Offer 04. 二维数组中的查找11111111

二维数组中的查找_牛客题霸_牛客网 (nowcoder.com)

剑指 Offer 11. 旋转数组的最小数字11111111

旋转数组的最小数字_牛客题霸_牛客网 (nowcoder.com)

剑指 Offer 21. 调整数组顺序使奇数位于偶数前面111111111

调整数组顺序使奇数位于偶数前面__牛客网 (nowcoder.com)

剑指 Offer 39. 数组中出现次数超过一半的数字11111111111

数组中出现次数超过一半的数字_牛客题霸_牛客网 (nowcoder.com)

剑指 Offer 05. 替换空格111111111

替换空格_牛客题霸_牛客网 (nowcoder.com)

剑指 Offer 06. 从尾到头打印链表

从尾到头打印链表_牛客题霸_牛客网 (nowcoder.com)

剑指 Offer 07. 重建二叉树

重建二叉树_牛客题霸_牛客网 (nowcoder.com)


动态规划:

剑指 Offer 42. 连续子数组的最大和111111111111111

连续子数组的最大和_牛客题霸_牛客网 (nowcoder.com)

hash

排序算法的特殊理解

剑指 Offer 52. 两个链表的第一个公共节点

两个链表的第一个公共结点_牛客题霸_牛客网 (nowcoder.com)

7 算法公开课

动态规划

剑指 Offer 10- I. 斐波那契数列

剑指 Offer II 098. 路径的数目11111111111
剑指 Offer II 099. 最小路径之和

背包问题

背包问题_哔哩哔哩笔试题_牛客网 (nowcoder.com)

剑指 Offer II 094. 最少回文分割
剑指 Offer II 086. 分割回文子字符串
72. 编辑距离
115. 不同的子序列

贪心算法

栗子:选择排序

1221. 分割平衡字符串111111111111111

122. 买卖股票的最佳时机 II1111111111111

55. 跳跃游戏11111111111

435. 无重叠区间1111111000000

回溯算法

深度优先 : DFS

栗子 : 排列组合

690. 员工的重要性

733. 图像渲染
733相似:463. 岛屿的周长

130. 被围绕的区域
130相似:剑指 Offer II 105. 岛屿的最大面积

17. 电话号码的字母组合11111111
17相似:401. 二进制手表

39. 组合总和

1079. 活字印刷

51. N 皇后
51相似:52. N 皇后 II

广度优先: BFS

栗子:迷宫问题

429. N 叉树的层序遍历

994. 腐烂的橘子

127. 单词接龙
127相似433. 最小基因变化

752. 打开转盘锁

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/73386.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【通缩螺旋的深度解析与科技破局路径】

通缩螺旋的深度解析与科技破局路径 一、通缩螺旋的形成机制与恶性循环 通缩螺旋&#xff08;Deflationary Spiral&#xff09;是经济学中描述价格持续下跌与经济衰退相互强化的动态过程&#xff0c;其核心逻辑可拆解为以下链条&#xff1a; 需求端萎缩&#xff1a;居民消费信…

单一责任原则在Java设计模式中的深度解析

在软件开发中&#xff0c;设计模式提供了一种解决特定问题的思路。在众多的设计原则中&#xff0c;单一责任原则&#xff08;Single Responsibility Principle&#xff0c;SRP&#xff09;是一个非常重要的概念。它主要强调一个类应该只有一个责任&#xff0c;也就是说&#xf…

开源后台管理系统推荐

前言 在当今数字化时代&#xff0c;企业和组织对于管理和运营资源的需求日益增加。开源后台管理系统应运而生&#xff0c;为用户提供了一个灵活、可定制化的管理平台。本文将介绍开源后台管理系统的概念和优势&#xff0c;探讨常见的开源后台管理系统&#xff0c;以及如何选择…

原生微信小程序实现导航漫游(Tour)

效果&#xff1a; 小程序实现导航漫游 1、组件 miniprogram/components/tour/index.wxml <!--wxml--> <view class"guide" wx:if"{{showGuide}}"><view style"{{guideStyle}}" class"guide-box"><view class&quo…

Docker容器命令速查表

这是 Docker 的快速参考备忘单。 你可以在这里找到最常见的 Docker 命令。 安装 curl -sSL https://get.docker.com/ | sh sudo chmod 777 /var/run/docker.sock在后台创建和运行容器 $ docker run -d -p 80:80 docker/getting-started-d - 以分离&#xff08;后台&#xff0…

Qt QML实现鼠标自由选择不规则区域进行截图

背景 不规则区域进行截图是一种常见的应用场景&#xff0c;通常用于程序截图工具或者图像处理软件中。主要是为了让用户可以自由选择任意形状的区域进行截图&#xff0c;而不仅仅局限于矩形区域。这样用户可以更灵活地进行截图操作&#xff0c;特别是对于需要截取特定形状区域…

SpringDataRedis存储Redis的数据序列化

在使用Spring Data Redis存储数据至Redis时&#xff0c;选择合适的序列化策略至关重要。它不仅影响数据存储的效率和空间利用率&#xff0c;还关系到跨语言兼容性和系统的扩展性。适当的序列化方式可以确保数据正确无误地被存储和读取&#xff0c;提升系统的稳定性和维护性&…

交易系统【三】网关

第二章本来是要讲消息总线&#xff0c;审核说是过度宣传&#xff0c;就放弃了&#xff0c;不纠结&#xff0c;先跳过。 网关和消息总线的底层技术都和网络相关&#xff0c;两者也有很重要的差别。消息总线主要用于内网&#xff0c;受交换机和网卡影响比较大&#xff0c;网络状…

eNSP中路由器的CON/AUX接口、GE Combo接口、Mini USB接口、USB接口、WAN侧uplink接口、FE接口、GE接口介绍

路由器常见接口的详细介绍及其应用示例&#xff1a; 1. CON/AUX 接口 全称&#xff1a;Console/Auxiliary&#xff08;控制台/辅助接口&#xff09;作用&#xff1a; CON&#xff08;Console&#xff09;&#xff1a;通过命令行界面&#xff08;CLI&#xff09;直接配置路由器…

iOS底层原理系列04-并发编程

在移动应用开发中&#xff0c;流畅的用户体验至关重要&#xff0c;而并发编程是实现这一目标的关键技术。本文将深入探讨iOS平台上的并发编程和多线程架构&#xff0c;帮助你构建高性能、响应迅速的应用程序。 1. iOS线程调度机制 1.1 线程本质和iOS线程调度机制 线程是操作…

Vmware下的openEuler

1.下载openEuler操作系统镜像 https://repo.openeuler.org/openEuler-20.03-LTS/ISO/ 2.在VM新建虚拟机 3.虚拟机联网 我是出现了没有网络&#xff0c;ping不通的问题 参考&#xff1a;https://blog.csdn.net/FHY26828/article/details/140941234 修改文件&#xff1a; 在…

带宽管理配置实验

一、实验拓扑 配置流程&#xff1a; 1、带宽通道&#xff1a;整体带宽、每个用户带宽、连接数、优先级信息 2、带宽策略 3、策略通道&#xff0c;引用 4、配置接口出入带宽 二、实验需求和配置 1、基础配置 接口配置 [dianxin]interface GigabitEthernet 0/0/0 [dianxin-G…

【STM32】从新建一个工程开始:STM32 新建工程的详细步骤

STM32 开发通常使用 Keil MDK、STM32CubeMX、IAR 等工具来创建和管理工程。此处是 使用 Keil MDK5 STM32CubeMX 创建 STM32 工程的详细步骤。 新建的标准库工程文件已上传至资源中&#xff0c;下载后即可直接使用。 标准库新建 STM32 工程的基本目录结构&#xff1a;STD_STM…

探索 Trossen AI:从 Aloha到智能机器人平台的进化之路

在人工智能与机器人技术快速发展的当下&#xff0c;科研硬件的性能与成本成为影响行业创新的重要因素。Trossen Robotic为在机器人领域二十余年的知名企业&#xff0c;近日推出的 Trossen AI 系列产品&#xff0c;为科研机构与开发者提供了高性能、高性价比的解决方案。 Trosse…

C语言:5.20程序练习题

打印一个菱形图案。程序分为两部分&#xff1a;上半部分和下半部分。上半部分打印一个逐渐增大的星号图案&#xff0c;下半部分打印一个逐渐缩小的星号图案。 #include<stdio.h> int main() {int row 5;//定义行数int t 2;for (int i row; 0 < i; i--){for (int k…

一些docker命令

一、基础命令 查看 Docker 版本 docker --version 或 docker version&#xff1a;显示 Docker 客户端和服务器的版本信息。 查看 Docker 系统信息 docker info&#xff1a;显示 Docker 系统的详细信息&#xff0c;包括镜像、容器数量、存储驱动类型等。 Docker 服务管理 s…

C语言内容

C语言是一门经典且广泛应用的编程语言&#xff0c;具有以下基础要点&#xff1a; 基本数据类型 包括整型&#xff08;如 int &#xff09;、字符型&#xff08; char &#xff09;、浮点型&#xff08; float 和 double &#xff09;等&#xff0c;用于定义不同类型的变量来…

Python----数据可视化(Pyecharts一:介绍安装,全局配置,系列配置)

一、PyEcharts介绍 1.1、概况 Echarts 是一个由百度开源的数据可视化&#xff0c;凭借着良好的交互性&#xff0c;精巧的图表设计&#xff0c;得到了众多开发者的认可。而 Python 是一门富有表达力的语言&#xff0c;很适合用于数据处理。当数据分析遇上数据可视化时&#xff…

dockerfile 编写入门

Dockerfile编写指南 Dockerfile是一个文本文件&#xff0c;其中包含了一系列的指令和参数&#xff0c;用于定义如何构建Docker镜像。一个良好编写的Dockerfile不仅可以确保镜像的构建过程高效、可靠&#xff0c;还可以使得镜像更加安全和易于维护。 1. Dockerfile基本结构和语…

Git 本地常见快捷操作

Git 本地常见快捷操作 &#x1f4cc; 1. 基本操作 操作命令初始化 Git 仓库git init查看 Git 状态git status添加所有文件到暂存区git add .添加指定文件git add <file>提交更改git commit -m "提交信息"修改最后一次提交信息git commit --amend -m "新…