- 博客(28)
- 收藏
- 关注
原创 leetcode. 最大加号标志
思路们可以事先计算好每个点 (i, j) 左边最长的连续 1 的格子数,用 dp[i][j] 表示。然后 dp 矩阵中的最大值就是结果。同理,这道题就是将一个方向转化为了上下左右四个方向。所以我们只需要事先计算好 up, down, left, right 这四个矩阵就可以了。那么点 (i, j) 能组成的最大的加号阶数就是这四个方向的最小值
2022-11-09 18:31:20 180
原创 leetcode.模糊坐标
如果字符串第一个数不是 0 但最后一个数是 0,则它不能加小数点,因为会产生多余的 0。如果字符串第一个数和最后一个数都是 0,则它必不合法。如果字符串有前导 0,则它只能以 0. 开头。如果只有一个数,则不能加小数点,返回它本身。
2022-11-07 12:14:36 78
原创 Leetcode .解析布尔表达式
用一个栈存储表达式中除了逗号和 ‘)’ 的其余字符。当我们遇到一个 ‘)’ 时,就将它与前面最近的 ‘(’ 之间的所有数存入数组。然后再使用 ‘(’ 前的运算符对数组中的数进行运算。最后将运算结果重新压入栈中。由于我们的数组中只有 f 和 t 两种元素且它们表示的是布尔值,所以我们不需要用数组存储,只需要用两个变两记录他们出现的次数即可。
2022-11-05 12:55:04 111
原创 leetcode到达终点数字
对于从1开始连续相加的自然数,如果将其中某个数(例如k)前面的+号换成-号,总和会减少2k;因此,我们先找到一个连续相加次数n,使得总和刚好>=target,若两者差值为d,若d为偶数,那么只需把d/2前的+号换成-号即可,次数是不变的;若d为奇数,那么看下一次相加的数的奇偶性:若下一个数为奇数,加上它会让总和与target的差值为偶数,次数n+1即可;若下一个数为偶数,那么为了让差值为偶数,我们再加一次即可,即n+2。
2022-11-04 13:00:32 114
原创 leetcode. 神奇字符串
字符 ‘1’ 变 ‘2’,‘2’ 变 ‘1’ 可以用「异或 3」来实现。‘1’ 的 ASCII 码为 49,‘2’ 的 ASCII 码为 50。转换为二进制就是 ‘1’ = 0011 0001,‘2’ = 0011 0010。可以看到只有最后两位是不同的,而 0 变 1,1 变 0 可以用「异或 1 」来实现。所以 01 ^ 11 = 10,10 ^ 11 = 01。
2022-10-31 16:08:40 102
原创 字母大小写全排列
DFS 回溯 看到题目要求组合或者集合,马上想到可以用回溯法:回溯法本来是说对于每个元素都先考虑放它的情况,再考虑不放它的情况;放在这道题的背景里就是,对于每个字母,先考虑放它,再考虑放它的另一种大小写形式。
2022-10-30 13:36:41 83
原创 leetcode.统计匹配检索规则的物品数量
可以利用哈希表把输入 \textit{ruleKey}ruleKey 转换为 \textit{items}[i]items[i] 的下标,然后再遍历一遍 \textit{items}items,找出符合条件的物品数量。
2022-10-29 12:16:08 389
原创 Leetcode.和至少为 K 的最短子数组
记P存放A的累计求和列表(P[x+1] = P[x] + A[x])找到在满足P[y]-P[x] >= K情况下使y-x最小的y-x。
2022-10-26 10:33:49 90
原创 Leetcode数组
用一个二维数组记录情况,记录分组里面子数组各自和的最大值最小的值。dp[i][j]表示将输入数组的前j个数分为i 组。其中有dp[0][0]=0。dp[i-1][k]表示将k个数分为i-1组,j-k个数单独分为一组。那么刚好合起来就是i组。转变为找所有分组里面子数组和的最大值。在这些最大值里面找到最小的值。
2022-10-24 10:47:13 69
原创 串的基本操作和KMP算法(优化版求nextval数组)模式匹配 数据结构完整C代码
数据结构 串的基本操作和KMP算法匹配 C语言版串的创建,赋值,复制,判空,比较,求子串,串连接,输出,以及求nextval数组和用kmp算法进行匹配C代码#include<stdio.h>#include<string.h>typedef int Status;#define Maxsize 255typedef char String[Maxsize+1]; // 0号单元存放串的长度Status Strassign(String T,char *c
2020-07-20 09:03:20 469
原创 数据结构 队列的链式存储结构 c语言版
数据结构 队列的链式存储结构 c语言版链队的创建,入队,出队,查看队首数据,遍历输出,销毁等操作C代码#include <stdio.h>#include<stdlib.h>#define Maxsize 50typedef int ElemType;typedef struct LinkNode{ //结点结构 ElemType data; struct LinkNode *next;}Linknode,*QueuePtr;typedef s
2020-07-14 19:51:24 291
原创 数据结构 队列的顺序存储结构 c语言版
数据结构 队列的顺序存储结构 c语言版顺序队列的创建,入队,出队,查看队首数据,遍历输出,清空等操作C代码#include <stdio.h>#define Maxsize 50typedef int ElemType;typedef struct{ ElemType data[Maxsize]; int front,rear;}SqQueue;void initqueue(SqQueue &q);bool enqueue(SqQueue &q,i
2020-07-12 09:51:13 300
原创 数据结构 栈的链式存储结构 c语言版
数据结构 栈的链式存储结构 c语言版链栈的初始化,创建,压入数据,取出数据,遍历输出,销毁等操作C代码#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct StackNode{ ElemType data; //数据域 struct StackNode *next; //指针域}StackNode,*Listackp;typedef str
2020-07-10 09:42:03 171
原创 数据结构 栈的顺序存储结构 c语言版
数据结构 栈的顺序存储结构 c语言版顺序栈的初始化,创建,压入数据,取出数据,删除,遍历输出,销毁等操作C代码#include<stdio.h>#include<stdlib.h>#define Maxsize 10typedef int ElemType;typedef struct { int top; ElemType data[Maxsize];}stack,*Sqstack;initstack(Sqstack &S);push
2020-07-08 11:05:52 385
原创 数据结构线性表的链式存储结构c语言版
数据结构线性表的链式存储结构c语言版链表的头插法创建,尾插法创建,输入,输出,插入,删除,按值查找,按位查找,删除,销毁操作C代码#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode{ //定义单链表结点类型 ElemType data; struct LNode *next;}LNode, *LinkList; ListHeadInsert
2020-06-30 11:47:52 420 1
原创 数据结构线性表的顺序存储结构c语言版
数据结构线性表的顺序存储结构c语言版顺序表的创建,输入,输出,插入,删除,按值查找,按位查找操作C代码#include<stdio.h>#define Maxsize 50typedef int ElemType;typedef struct{ ElemType data[Maxsize]; int length;}Sqlist; //顺序表类型定义void listcreat(Sqlist *L);void listinsert(Sqlist *L, in
2020-06-24 17:47:48 504
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人