自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(103)
  • 收藏
  • 关注

原创 常用的二进制运算

公式:x = x & (x - 1)例子:10010100进行该操作后变成10010000。

2024-07-24 14:22:00 334 2

原创 LeetCode:2409. 统计共同度过的日子数

int(a[:2]) - 1])表示先取a字符串的前两个字符获取月份,由于前面可能会有0,所以int()转换为整数,又由于数组开始下表为0,即days[1]表示的是2月,所以要减一。sum(days[:int(a[:2]) - 1]) + int(a[3:])表示先将days前几个月相加再加上最后一个月呆着的日期即为该日期是该年的第几天。int(a[3:])表示取a字符串第三个之后的字符串,即该月的日期。首先days数组为:提前打好的关于每个月有多少日期的表。

2023-04-17 19:04:26 321

原创 Python:关于时间日期的第三方库及其函数使用方法

datetime.date:表示日期的类,常用的属性有year, month, daydatetime.timedelta:表示时间间隔,即两个时间点的间隔。在日期上做天days,小时hour,分钟,秒,毫秒,微妙的时间计算。

2023-03-28 16:43:11 1011

原创 LeetCode:1616. 分割两个字符串得到回文串

LeetCode:1616. 分割两个字符串得到回文串,双指针

2023-03-18 11:18:30 294

原创 CSS属性书写顺序

这里是对各个布局属性的介绍,包含哪些属性值。及其排序

2023-03-15 19:26:57 173

原创 LeetCode:2383.赢得比赛需要的最少训练时长

精力:由于精力是不断减小,所以只需要将需要的总精力值算出,如果比initialEnergy大,则表示需要在精力方面进行训练,时间为m-initialenergy+1。由于最开始没有看清楚题目,所以处了精力这一部分,在经验方面想的办法是类似于操作系统死锁安全检测,银行家算法来尝试解决。后来发现是按照顺序一个一个进行比赛,所以精力这一部分不发生改变,而经验只需要进行遍历模拟即可。经验:一个一个比,大于加上去,训练时间不变,小于则先加训练时长,为差值+1,在将原本经验更新。

2023-03-13 13:32:36 140

原创 LeetCode:剑指 Offer 63. 股票的最大利润

假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?

2023-03-04 10:55:03 299

原创 蓝桥杯:乘法表

题目看起来是普通乘法表的基础上不断进行进制变换,其实没有那么麻烦,由于前面乘数都是在个位上的,所以保证了乘法表中所有结果最多也只是二位,不会超过两位,那么这时就可以另外取巧了。假设题目为P进制,由于是两位所以对计算结果,十位上的数字可以通过整除P获得,个位上的结果可以通过取余获得。请注意,乘法表中两个数相乘的顺序必须为样例中所示的顺序,不能随意交换两个乘数。给定P,请输出P进制下的乘法表。在不同进制数下,需要不同的乘法表。P进制中大于等于1010的数字用大写字母A、B、C、··· 表示。

2023-03-03 10:41:41 256

原创 LeetCode:1487. 保证文件名唯一

当重复出现第二次时,会在后面+(1),但是如果刚好我后面一个是前面加了后缀(1)后一样的,那就是在前面的基础上在加(1),可能说的不是很清楚,自己看例子很好理解,所以在解决时需要将加入后缀后的情况也加入哈希表中,避免上述例子的特殊情况的出现。哈希表中存在"gta":1、"gta(1)":1。两种情况结果类似,但添加过程不一样。很明显的哈希表,关键在于哈希表该如何去设计,题目要求出现过的文件名需要进行处理,在其文件名后加上后缀以满足条件,所以需要记录这个文件名是否出现过,出现过几次,或者说新的后缀应该加几?

2023-03-03 09:52:13 181

原创 LeetCode:1247. 交换字符使得字符串相同

有两个长度相同的字符串 s1 和 s2,且它们其中 只含有 字符 "x" 和 "y",你需要通过「交换字符」的方式使这两个字符串相同。每次「交换字符」的时候,你都可以在两个字符串中各选一个字符进行交换。交换只能发生在两个不同的字符串之间,绝对不能发生在同一个字符串内部。也就是说,我们可以交换 s1[i] 和 s2[j],但不能交换 s1[i] 和 s1[j]。最后,请你返回使 s1 和 s2 相同的最小交换次数,如果没有方法能够使得这两个字符串相同,则返回 -1。

2023-02-25 13:09:57 137

原创 蓝桥杯:纯质数

如果一个正整数只有 11 和它本身两个约数,则称为一个质数(又称素数)。前几个质数是:2,3,5,7,11,13,17,19,23,29,31,37,⋅⋅⋅2,3,5,7,11,13,17,19,23,29,31,37,⋅⋅⋅。如果一个质数的所有十进制数位都是质数,我们称它为纯质数。例如:2,3,5,7,23,372,3,5,7,23,37 都是纯质数,而 11,13,17,19,29,3111,13,17,19,29,31 不是纯质数。当然 1,4,351,4,35 也不是纯质数。

2023-02-22 11:53:07 214

原创 LeetCode:1817. 查找用户活跃分钟数

请你统计用户活跃分钟数的分布情况,统计结果是一个长度为 k 且 下标从 1 开始计数 的数组 answer ,对于每个 j(1

2023-01-20 18:14:59 1005

原创 LeetCode:2185. 统计包含给定前缀的字符串

给你一个字符串数组 words 和一个字符串 pref。返回 words 中以 pref 作为 前缀 的字符串的数目。字符串 s 的 前缀 就是 s 的任一前导连续字符串。很简单的模拟,遍历words数组,对于数组的每一个字符串,对其和pref进行比对,并判断其是不是前缀,并计数器计数。

2023-01-08 18:29:52 125

原创 LeetCode:1658. 将 x 减到 0 的最小操作数

给你一个整数数组 nums 和一个整数 x。每一次操作时,你应当移除数组 nums 最左边或最右边的元素,然后从 x 中减去该元素的值。请注意,需要 修改 数组以供接下来的操作使用。如果可以将 x 恰好 减到 0 ,返回 最小操作数;否则,返回 -1。

2023-01-07 15:07:03 250

原创 LeetCode:2180. 统计各位数字之和为偶数的整数个数

给你一个正整数 num ,请你统计并返回 小于或等于 num 且各位数字之和为 偶数 的正整数的数目。正整数的 各位数字之和 是其所有位上的对应数字相加的结果。提示:1

2023-01-06 14:57:23 241 1

原创 LeetCode:2037. 使每位学生都有座位的最少移动次数

应该可以很明显的想到并不是首先确定位置,再去找离他最近的学生进行匹配,因为这会导致可能有前面的学生需要跨过该位置去到后面的椅子导致虽然局部最佳却导致整体的移动次数增多。这里最好的办法其实是第一个学生去一个位置,第二个学生去第二个位置,这样不会存在跨越的情况,所以我们只需将两个数组进行排序和一一配对即可。同时给你一个长度为 n 的数组 students ,其中students[j]是第 j 位学生的位置。请你返回使所有学生都有座位坐的最少移动次数,并确保没有两位学生的座位相同。所以如何进行匹配呢?

2022-12-31 14:26:48 128

原创 LeetCode:2032. 至少在两个数组中出现的值

【代码】LeetCode:2032. 至少在两个数组中出现的值。

2022-12-29 12:11:51 120

原创 LeetCode:1750. 删除字符串两端相同字符后的最短长度

选择前缀 "aa" 和后缀 "a" 并删除它们,得到 s = "bccabb"。- 选择前缀 "c" 和后缀 "c" 并删除它们,得到 s = "abaaba"。- 选择前缀 "a" 和后缀 "a" 并删除它们,得到 s = "baab"。- 选择前缀 "b" 和后缀 "bb" 并删除它们,得到 s = "cca"。- 选择前缀 "b" 和后缀 "b" 并删除它们,得到 s = "aa"。- 选择前缀 "a" 和后缀 "a" 并删除它们,得到 s = ""。输入:s = "ca"

2022-12-28 11:20:45 339

原创 蓝桥杯:等差数列

第二行包含 NN 个整数 A1​,A2​,⋅⋅⋅,AN​。注意:其中在计算前需要考虑公差为0的情况,0不能除数,会报错。需要将公差为0的情况特殊处理一下,此时直接输出项数n即可。样例说明: 包含 2、6、4、10、20 的最短的等差数列是 2、4、6、8、10、12、14、16、 18、20。但是粗心的小明忘记了一 部分的数列,只记得其中 NN 个整数。现在给出这 NN 个整数,小明想知道包含这 NN 个整数的最短的等差数列有几项?其中,2≤N≤105,0≤Ai​≤109。输入的第一行包含一个整数 NN。

2022-12-27 18:10:18 221

原创 蓝桥杯:小朋友崇拜圈

题目描述班里NN个小朋友,每个人都有自己最崇拜的一个小朋友(也可以是自己)。在一个游戏中,需要小朋友坐一个圈,每个小朋友都有自己最崇拜的小朋友在他的右手边。求满足条件的圈最大多少人?

2022-12-25 20:09:01 115

原创 蓝桥杯:跳越

蓝桥杯:跳越,动态规划,python如何一行一行的获取输入并存入双重列表中,而不用双重循环

2022-12-23 16:40:41 1151

原创 LeetCode:2011.执行操作后的变量值

【代码】LeetCode:2011.执行操作后的变量值。

2022-12-23 12:12:36 120

原创 LeetCode:1769. 移动所有球到每个盒子所需的最小操作数

模拟(双重循环):简单的遍历数组,第一重循环用于确定目的地,第二重循环用于判断长度,移动距离就是每个元素到目的地之间距离之和。很好算看题解知可以用前一个盒子的操作数得到下一个盒子的操作数,先统计该盒子左边(包括自己)的1的个数和右边1的个数,每次向右移的时候左边的加一右边的减一即可,当然首先得把第一个的值给统计出来,同时在移动的过程中需要维护左边和右边的个数,即当移到一个有球的盒子时,计算完后,将左边加一,右边减一即可.

2022-12-22 17:26:04 126

原创 LeetCode:1753. 移除石子的最大得分

解题思路:最直接的想法:每次移除石子的时候都判断一下三堆石子那两堆较大,从较大的两堆中各移除一个,如果有两个石子堆的数量==0,则循环退出,输出循环次数即可贪心+数学推导:假设a

2022-12-21 21:24:21 165

原创 LeetCode:1760. 袋子里最少数目的球

解题思路:看了很久也不知道该怎么下手,果断转去题解看答案,所实话官方的题解说的有些抽象,先买那是我自己看了别人的博客和思考后的一些思路:

2022-12-20 21:55:49 328

原创 刷题积累的一些函数用法

刷题积累的函数,包括vector,unordered_map等。。。。。

2022-12-20 21:22:40 131

原创 蓝桥杯:排列距离

小蓝最近迷上了全排列, 现在他有一个长度为 17 的排列, 里面包含的元素 有: abcdefghijklnopqr, 即 a 至rr中除了mm以外的所有小写字母, 这 17 个字母在任何一个排列中都恰好出现一次。

2022-12-18 22:02:34 889 1

原创 python基础语法

python基础语法

2022-11-03 10:40:37 64

原创 LeetCode:1652. 拆炸弹

关于力扣1652题自己编写的思路和过程

2022-09-24 15:18:50 161

原创 LeetCode:13.罗马数字转整数

解题思路:哈希表,将所有字符放入哈希表haxi中,<string, int>从左往右一个一个字符计算,对于每一个字符,判断其和后一个字符所对应的数字数值大小,大于则加,小于则减。C++:class Solution {public: int romanToInt(string s) { unordered_map<char, int> haxi = { {'I', 1}, {'V', 5},

2022-04-20 14:32:06 228

原创 LeetCode:155.最小栈

解题思路:使用辅助栈,一个正常栈的操作,另一个栈用于存最小值。对于辅助栈:push:因为要始终保证辅助栈的栈顶元素为最小值,所以入栈的时候比较入栈元素和栈顶元素(原本栈里的最小值),然后将较小的值入栈,来确保栈顶元素始终为栈的正常栈里的最小值 pop:与正常栈同步,双方同时pop即可,去掉了双方都去掉了栈顶元素,即相当于返回上一步,两个栈保持同步,既可以保证辅助栈的栈顶依旧可以保证功能C++:class MinStack { stack<int> x_stack;

2022-04-18 11:42:05 360

原创 LeetCode:357.统计各位数字都不同的数字个数

解题思路:哈希表,遍历每一个数字,将每一个数字的每一位放入哈希表中<int(出现的数字),int(出现的次数)>,遍历哈希表,如果有出现两次的数字,跳过,若没有,计数器加一。优化:更新哈希表的同时就判断若大于等于2,就可以直接跳出循环,不必继续运行,降低时间复杂度。想法很古板,依旧是模拟,说实话时间复杂度很高,不是一个好解法 官方题解: 当n = 0的时候,只有一个数字0,返回1 当n = 1的时候,有10个数字0~9,返回10 当n > 1时候,比如说,n = 2,则第一位数

2022-04-11 18:14:23 260

原创 LeetCode:728.自除数

解题思路:模拟:从left到right遍历每一个数字,每次用while循环取每一位的数字,分别区域,若其中有一个取余不为0,则return false。代码:class Solution {public: vector<int> selfDividingNumbers(int left, int right) { vector<int> ans; for (int i = left; i <= right; ++i) {

2022-03-31 11:12:25 699

原创 LeetCode:141.环形链表

解题思路:笑拉了,看了半天题目都没有看懂,没明白这个pos是什么意思,怎么确定环,直至看来题解,原来与pos没有关系, 对于官方给的题解,个人会比较喜欢哈希表来解决,感觉快慢指针跟哈希比属于是节省空间,而哈希的话则节省时间 哈希表很简单,就将每一个遍历过的结点存入哈希表中,每次next的时候count一下哈希表,如果说发现存在,则表示又环形链表 快慢链表的话就是指一个走两步,一个走一步,如果存在环形链表的话,则都会进入链表中,若快指针等于的慢指针的话接可以确定存在环形链表。代码:/**

2022-03-30 13:33:39 495

原创 LeetCode:3.无重复字符的最长字串

解题思路:模拟,分别便利两个数组,将数字提取出来,再相加,最后得出的数字再转化为链表 创建链表,算一个建一个结点,指针向后遍历一位,模拟十进制算法即可代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) :

2022-03-29 14:38:56 154

原创 LeetCode:2.两数相加

解题思路:模拟,分别便利两个数组,将数字提取出来,再相加,最后得出的数字再转化为链表 创建链表,算一个建一个结点,指针向后遍历一位,模拟十进制算法即可代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) :

2022-03-20 23:10:15 501

原创 LeetCode:606.根据二叉树创建字符串

解题思路:在前序遍历的基础上增加了一些步骤,分3个情况无左右子树 无左子树,又右子树 有左子树无右子树 同时具有左右子树对于每个情况,只需根据题意再各个地方加上括号即可,这里2、4为一种情况,同样处理即可,3得情况可以无需考虑右子树的情况。代码:C++:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * Tree..

2022-03-19 14:22:03 959

原创 蓝桥杯:空间

简单的进制转换,1GB = 1024MB = 1024^2KB = 1024^3B = 1024^3*8bit一个二进制数占1bit,所以一个32位的二进制数占4B的空间,换算一下即可。#include <iostream>using namespace std;int main(){ // 请在此输入您的代码 // 32位二进制数就是4B,256MB=256*1024KB=256*1024*1024B, // 结果就是256*1024*1024%4 prin..

2022-03-15 11:04:13 1636 1

原创 LeetCode:121.买卖股票的最佳时机

解题思路:有利润的情况肯定是从小的开始,向上增加,记录即可,同时特别i情况,后面出现了更小的值,此时有两种情况, 1、后面的增率很小,小于前面出现的maxprice,那么maxprice依旧是前面的那个高一点的天投入获得的最大利润 2、后面增率很大,差值超过了前面的,那就更不用看了,就是没分情况之前的代码:C++:class Solution {public: int maxProfit(vector<int>& prices) { in

2022-03-15 10:53:13 5397

原创 蓝桥杯:卡片

1~99中,除了0,应该是出现次数一样多的,那么最先消耗完的无疑会是1,所以只需找到1什么时候出现2021次即可代码:#include <iostream>using namespace std;int main(){ // 请在此输入您的代码 // 把1消耗完就行 int i, t, sum = 0; for (int i = 1; ; ++i) { for(t = i; t != 0; t/=10) { if (t % 10 == 1)..

2022-03-14 15:51:10 498 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除