-
leetcode
1.找出最具竞争力的子序列(单调栈+贪心)给你一个整数数组 nums 和一个正整数 k ,返回长度为 k 且最具 竞争力 的 nums 子序列。数组的子序列是从数组中删除一些元素(可能不删除元素)得到的序列。在子序列 a 和子序列 b 第一个不相同的位置上,如果 a 中的数字小于 b 中对应的数字,那么我们称子序列 a 比子序列 b(相同长度下)更具 竞争力 。 例如,[1,3,4] 比 [1,3,5] 更具竞争力,在第一个不相同的位置,也就是最后一个位置上, 4 小于 5 。示例 1:输...…
-
Redis基础
Redis简介Redis 是一个基于内存的 key-value 结构数据库(mysql 的数据是存放在磁盘上) 基于内存存储,读写性能高 适合存储热点数据(热点商品、咨询、新闻等访问量比较大的数据)Redis数据类型Redis 存储的是 key-value 结构的数据,其中 key 是字符串类型,value 有 5 种常用的类型。 5 种常用数据类型 字符串 string 哈希 hash 列表 list 集合 set 有序集合...…
-
前缀和与差分数组
前缀和区域和检索 - 数组不可变给定一个整数数组 nums,处理以下类型的多个查询: 计算索引 left 和 right (包含 left 和 right)之间的 nums 元素的 和 ,其中 left <= right实现 NumArray 类: NumArray(int[] nums) 使用数组 nums 初始化对象 int sumRange(int i, int j) 返回数组 nums 中索引 left 和 right 之间的元素的 总和 ,包含 left 和 rig...…
-
Lambda表达式在STL中的应用
C++中的Lambda表达式是一种简洁的方式来定义匿名函数,尤其在需要传递函数作为参数或局部定义函数时非常方便 Lambda表达式的语法格式如下: [capture](parameters) -> return_type { // function body}; capture:用于捕获外部变量,类似闭包。可以通过值传递或引用传递。 parameters:函数的参数列表(可以为空)。 return_t...…
-
STL容器——string成员函数
转载,原文链接:https://www.cnblogs.com/lynx-peng/p/16552710.html1.构造与析构构造string()//构造空字符串string(const char* s);//拷贝s所指向的字符串序列string(const char* s, size_t n);//拷贝s所指向的字符串序列的第n个到结尾的字符string(size_t n, char c);//将字符c复制n次string(const string& str);//拷贝构造函数...…
-
通过AOP和反射实现不同表的公共字段自动填充
项目问题场景当前端页面涉及到新增或更新数据操作时,在后端数据库中会有更新某些公共字段的需求,比如创建时间、更新时间、创建人等等。比如下面的 service 层代码:/** * 新增员工 * @param employeeDTO */public void save(EmployeeDTO employeeDTO) { System.out.println("当前线程的 id:" + Thread.currentThread().getId()); Employee employ...…
-
最大子数组和
对于最大子数组和的动态规划问题,一般这样思考:定义状态 f[i] 表示以 a[i] 结尾的最大子数组和,不和 i 左边拼起来就是 f[i] = a[i] ,和 i 左边拼起来就是 f[i] = f[i-1] + a[i] ,取最大值就得到了状态转移方程 f[i] = max(f[i-1], 0) + a[i] ,答案为 max(f) 。这种做法也称为 Kadane 算法。1.最大子数组和给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和...…
-
快速幂
算法流程如下代码实现时,注意 n=−2^31 的情况,取反后 n=2^31 超出 int 最大值。可以转成 64 位 int 解决。class Solution {public: double myPow(double x, int N) { double ans = 1; long long n = N; if (n < 0) { // x^-n = (1/x)^n n = -n; x = ...…
-
leetcode hot100
[TOC]1.两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4],...…
-
JavaWeb学习笔记
web前端1.Web标准 Web标准也称为网页标准,由一系列的标准组成 三个组成部分: HTML:负责网页的结构(页面元素和内容) CSS:负责网页的表现(页面元素的外观、位置等页面样式,如颜色、大小等) JavaScript:负责网页的行为(交互效果) 2.HTML、CSS什么是HTML、CSS? HTML(HyperText Markup Language):超文本标记语言 超文本:超越了文本的限制,比普通文本更强...…
-
动态规划-买卖股票问题
买卖股票的最佳时机给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 ...…
-
单调栈
什么是单调栈?单调栈是一种特殊的栈,在栈的「先进后出」规则基础上,要求「从 栈顶 到 栈底 的元素是单调递增(或者单调递减)」。其中满足从栈顶到栈底的元素是单调递增的栈,叫做「单调递增栈」。满足从栈顶到栈底的元素是单调递减的栈,叫做「单调递减栈」。单调栈的 push 和 pop比如我们现在有一组数:[10, 3, 7, 4, 12] ,如何将这组数放到一个单调递增栈中?我们从左到右遍历数组,根据以下条件判断进行何种操作: 如果栈空或当前遍历到的元素 cur 小于栈顶元素,则入栈; 如果...…
-
如何爬取厦大智慧教务签到码
前言本文是作者在学习计算机网络八股文的过程中做的小实践,仅供学习使用,请勿使用此方法逃避考勤。操作过程爬取签到码前需要准备什么? 一台可以联网并且安装有微信的电脑 一个可以抓取网络流量包的软件(我使用的是Proxyman)抓包过程使用电脑登陆微信,搜索厦大智慧教务小程序并打开点击课程签到,进入课程签到界面然后电脑打开 Proxyman,并打开监听之后回到小程序,点击“启动签到”,小程序会进入输入签到码并获取定位的界面,此时回到 Proxyman,找到 getXsQdInfo 这个包,打...…
-
大一随笔
前言我高考录取到的专业并不是计算机而是建筑,因此我的整个大一是在思明校区度过的。可能是从小和电脑打交道比较早(?),也可能是看到将来的就业前(钱)景,进入厦大后萌生出转专业到计算机的想法。我开始写这篇博客的时间是 2024年 7 月 25 日的 23:08,因此本篇记录的快乐大一时光大多基于我对手机上万张照片的回忆~~~(全都是流水账第二次抵达厦门其实我在初三毕业后就来过厦门,也参观过厦大,所以 2022 年那会刚到厦门给我一种熟悉又陌生的感觉个人()二维码(bushi从武汉天河机场出发啦...…
-
完全背包与多重背包
1.什么是完全背包?有 N 件物品和一个最多能背重量为 W 的背包,第 i 件物品的重量是 weight[i] ,得到的价值是 value[i] 。每件物品都有无限个(可以放入背包多次),求解将哪些物品装入背包里价值总和最大,最大价值是多少。2.和01背包的区别在哪里01背包和完全背包唯一的不同就是在遍历顺序上,我们先看01背包的核心代码:for (int i = 0; i < weight.size(); ++i) { // 遍历物品 for (int j = bagWeight;...…
-
01背包
1.概念有 n 件物品和一个最多能装重量为 w 的背包,第 i 件物品的重量是 weight[i], 该物品的价值是 value[i] ,每件物品只能用一次,求解将哪些物品装入背包里能得到最大价值。2.二维求解纯01背包问题 确定 dp 数组以及下标的含义 对于背包问题有一种二维数组的写法:dp[i][j] 表示从下标为 [0-i] 的物品里任意取,放进容量为 j 的背包,价值总和最大是多少 确定状态转移方程 我们需要根据 dp 数组以及...…
-
岛屿类问题的通用解法、DFS遍历框架
前言我们所熟悉的DFS问题通常是在树或者图结构上进行的。本文讨论的DFS问题是在一种「网格」结构中进行的。岛屿问题是这类网格DFS问题的典型代表。网格结构遍历起来要比二叉树更加复杂,如果没有掌握一定的方法,DFS代码容易写得冗杂。本文将以岛屿问题为例,展示网格类问题DFS通用思路,以及如何让代码变得简洁。网格类问题的DFS遍历方法基本概念我们首先明确一下岛屿问题中的网格结构是如何定义的,以方便我们后面的讨论。网格问题是由 m × n 个小方格组成一个网格,每个小方格与其上下左右四个方格认为...…
-
mysql常用指令
Ⅰ-DDL语句1.数据库操作1.登录指令:mysql -u root -p,密码:1234562.查询所有数据库SHOW DATABASES;3.查询当前数据库SELECT DATABASE();4.创建数据库CREATE DATABASE;5.删除数据库DROP DATABASE;6.使用(跳转到某数据库):USE 数据库名;2.表操作(1).表的创建相关操作1.创建表:CREATE TABLE 表名( 字段1 字段1类型[COMMENT 字段1注释], 字段2 ...…
-
Springboot框架学习笔记
SpringBoot概念与功能概念 SpringBoot提供一种快速使用Spring的方式 基于约定优于配置的思想 不必在配置与逻辑业务之间进行思维切换,全身心投入到逻辑业务的代码编写功能 自动配置:SpringBoot的自动配置是一个运行时(准确来说是程序启动时)的过程,这些过程均由SpringBoot自动完成 起步依赖:将具备某种功能的坐标打包到一起,并提供一些默认的功能 辅助功能:提供一些大型项目中的非功能性特性,如嵌入式服务器、安全、指标等SpringBoo...…
-
Spring框架学习笔记
IoC(Inversion of Control) 控制反转与DI(Dependency Injection)依赖注入 IoC(Inversion of Control) 控制反转 使用对象时,由主动new产生对象转换为由外部提供对象,此过程中对象创建控制权由程序转移到外部,此思想称为控制反转(降低程序的耦合度) Spring技术对IoC思想进行了实现 Spring提供了一个容器,称为IoC容器,用来充当思想中的“...…