leetcode & AcWing
文章平均质量分 68
.
fff_421
笔记存档分享
展开
-
十月每日打卡
就是如果是降序比如5 4 1这样的,就是已经是最大的了,不会再有下一个排列了。这个题也是将数组中的值和下标映射起来,比如[4,3,2,7,8,2,3,1],nums[0] = 4,则将4对应的nums[4] = 8换成-8代表有4了,重复的已经成为负数的就不变,最后值为正的下标就是消失的数字。我们对于每个s[i]有在之前情况上再进行选和不选两种情况,首先不选的情况就是上一次s[i - 1]的那些字符串,选就是在s[i - 1]那些字符串上加上a后缀,然后再加上一个以s[i]为单独子序列的字符串。原创 2023-04-09 16:15:16 · 512 阅读 · 0 评论 -
十一月每日一题打卡
...原创 2022-11-12 15:01:46 · 468 阅读 · 0 评论 -
十月每日一题打卡
...原创 2022-11-12 14:57:17 · 687 阅读 · 0 评论 -
剑指offer
! 面试题11:旋转数组中最小数字yxc:二分不一定要有单调性,二分的本质是寻找某种性质的分界点。只要可以找到某种性质,使得区间的前半部分满足,后半部分不满足,那么就可以用二分把这个分界点找到。本题中最重要的就是前段升序序列大于等于nums[0],后段升序序列应该小于nums[0],但是存在等于的,可以提前处理掉。由于需要处理后面这个相等的平台,导致时间复杂度为O(n),但如果不存在这种情况时间复杂度为O(nlogn)。AcWing 22. 旋转数组的最小数字 - AcWing[外链图片转存失败,源原创 2021-11-20 19:20:28 · 562 阅读 · 0 评论 -
#Leetcode:每日一题,持续更新
到处刷题,随便刷刷!我就不信我坚持不下来!坚持一周,喝一杯奶茶坚持一个月,shopping买一件最喜欢的东西!704:二分查找 //21.9.6模板题,二分查找,时间复杂度O(logn)。y总模板yyds!//模板一:左区间右端点class Solution {public: int search(vector<int>& nums, int target) { int l = 0, r = nums.size() - 1; wh原创 2021-09-10 10:47:44 · 153 阅读 · 0 评论 -
(持续更新)一些简单模板
1 图1.1 并查集class UF{ private: vector<int> father; public: UF(int n) { for(int i = 0; i <= n; i++) father.push_back(i); } int Find(int x) { while(1)原创 2021-04-05 21:47:03 · 204 阅读 · 1 评论 -
#PAT甲级:做题汇总,不再更新啦!
1001 A + B formata加b然后按照千分位三个一组输出。#include<iostream>#include<vector>using namespace std;int main(){ int a, b, c; bool s = false; cin >> a >> b; c = a + b; vector<int> v; if(c < 0) {原创 2021-08-27 10:50:52 · 336 阅读 · 0 评论 -
#AcWing:数学系列
这个信安数学基础很多都讲过,应该过起来很快,争取这周看完!主要包括数论、组合计数、高斯消元以及简单博弈论1 质数试除法判定质数d|n, (n/d)|n,因此只枚举d <= (n/d)即可,也即是d <= sqrt(n)即可#include<iostream>using namespace std;int n, x;bool isPrime(int x){ if(x < 2) return false; for(int i = 2; i原创 2021-08-19 22:08:29 · 91 阅读 · 0 评论 -
#AcWing:搜索与图论系列
DFSBFS树与图的DFS树与图的BFS原创 2021-08-17 21:33:45 · 161 阅读 · 0 评论 -
#AcWing:数组模拟链表、邻接表、栈、队列
单链表ne即next指针数组,e即存储的数值,idx当前未分配的数组下标,head为头节点指向的数组下标#include<bits/stdc++.h>using namespace std;const int M = 100010;int ne[M], e[M], idx, head;void init(){ idx = 0; head = -1;}void add_from_head(int x){ e[idx] = x; ne[idx原创 2021-08-13 11:05:01 · 255 阅读 · 2 评论 -
#AcWing:DP系列
好气啊,每次遇到DP我就无可奈何了!听别人讲觉得好神奇,自己就不会做!行!那我今天就不干啥了(除了数据库PPT)就学这个DP,算是一个周末福利吧!原创 2021-05-30 15:51:11 · 183 阅读 · 0 评论 -
#LC5757:矩阵中最大的三个菱形和
又是前缀和,不过这次不一样,是斜前缀和,值得记录一下!btw,y总太强了,讲得太清晰了!LC5757:矩阵中最大的三个菱形和const int N = 110;class Solution {public: int s1[N][N]; int s2[N][N]; vector<int> getBiggestThree(vector<vector<int>>& g) { int m = g.size();原创 2021-05-30 15:20:18 · 126 阅读 · 0 评论 -
#LC 1074 363:二维前缀和应用
不知道为啥,最近都是二维前缀和。1074 元素和为目标值的子矩阵数量363 矩形区域不超过 K 的最大数值和原创 2021-05-29 16:11:39 · 100 阅读 · 0 评论 -
#AcWing:前缀和的应用
终于稳定复习了,继续更新…前缀和和前缀乘积很简单了,现在都会了,现在我们看怎么构造这个区间。不是双重遍历左右区间,我们固定右区间变成查表。1 乘积数量#include<bits/stdc++.h>using namespace std;typedef long long LL;int main(){ int n; LL z = 0, f = 0; scanf("%d", &n); int s = 1, sz = 1, sf = 0;原创 2021-05-29 00:16:35 · 101 阅读 · 0 评论 -
#LC872:树遍历合集
LC872:叶子相似的树定义相似:叶节点序列相同/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullp原创 2021-05-10 08:55:49 · 65 阅读 · 0 评论 -
#LC1011、LC875、 LC1723、LC1482:二分查找
爱吃香蕉的珂珂https://leetcode-cn.com/problems/koko-eating-bananas/完成所有工作的最短时间https://leetcode-cn.com/problems/find-minimum-time-to-finish-all-jobs/在 D 天内送达包裹的能力https://leetcode-cn.com/problems/capacity-to-ship-packages-within-d-days/制作 m 束花所需的最少天数https://leet原创 2021-05-09 19:54:33 · 174 阅读 · 0 评论 -
ALG:高精度加减乘除
1 高精度加法原创 2021-04-23 17:38:06 · 78 阅读 · 0 评论 -
ALG:KMP
在这里插入代码片原创 2021-04-23 15:22:10 · 52 阅读 · 0 评论 -
ALG:前缀和与差分
1 一维前缀和si = a1 + a2 + ... + ai;[l, r] sum = s[r] - s[l - 1];//求一维前缀和#include<bits/stdc++.h>using namespace std;const int N = 100010;int s[N];//全局变量初始化为0int main(){ int n, m, l, r, tmp; scanf("%d %d", &n, &m); for(int i原创 2021-04-22 21:55:28 · 247 阅读 · 0 评论 -
#LC208/211/421:实现Trie(前缀树)
这一篇刷的主要是前缀树,LC208、LC211、LC421较好的理解Trie Tree。较清晰的blog前缀树、字典树、Trie树,是一种多叉树,一般是26个叉的,节点类型是一个isend判断是否是单词结尾,在叶节点为true,其他节点为false。还有个子节点数组。主要操作有三个:建树(插入)、查询、前缀。建树(插入)就是给一个word,建立一条路径。从根节点的子节点开始和word字符串的每一个字符匹配,如果匹配上了就变到下一级,没匹配上就在当前char的next数组中建立一个节点,继续下一级原创 2021-04-19 22:31:46 · 116 阅读 · 0 评论 -
#LC860:柠檬水找零
题目挺简单的,感觉不用什么算法就能写,是个模拟题,但是上面写的贪心,看了题解发现贪心是贪在这里。5块 five++;10块 ten–; five–;20块有两种:five–;ten–; 和 five -= 3;贪心在于5块既能找10块又能找20块,但是10块只能找20,所以我们给20找零的时候优先选择10块。class Solution {public: bool lemonadeChange(vector<int>& bills) { vecto原创 2021-04-14 20:39:28 · 47 阅读 · 0 评论 -
#LC179:最大数
废话俺又回来了,在开学刷了一百多题的leetcode之后,临时抱佛脚做了一些CSP认证的题,就去参加认证了,备受打击,继续回到leetcode!题目我一开始以为字典序逆序就可以了,结果还有3、30这样的,就不太行。其实,这道题的核心思路是:相同长度的数字字符串(”330“ > “303”)的大小和原来数字(330 > 303)大小等价,注意是相同长度。然后题目就简单了,只需要重写sort函数按照两数拼接比较大小得出谁在前谁在后class Solution {public:原创 2021-04-12 17:29:44 · 110 阅读 · 0 评论 -
#LC15 :三数之和
废话这道题累死我了看看我的提交记录,不是变量手误写错了,就是思路不清晰,有些东西没有考虑到这是我第一次用我的surface和vscode来做,就这样55555555题目描述传送门给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。题...原创 2020-04-17 21:24:18 · 80 阅读 · 0 评论 -
#LC11: 盛最多水的容器
0.废话自己太菜了,每道题感觉都没有什么很好的想法,就只会暴力破解,然而…,这一次他失败了,毕竟是一道medium的题。。。1.题目描述传送门给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说...原创 2020-04-12 21:02:25 · 92 阅读 · 0 评论 -
#LC4 :寻找两个有序数组的中位数
0.废话这个题要求时间复杂度,这二分我也没啥思路,第一次做就合并有序数组然后找中位数,暴力破解,然后leetcode也让我过了??1.题目描述传送门给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。2.题目思路看了官方题解...原创 2020-04-12 18:23:10 · 91 阅读 · 0 评论 -
#LC94 : 二叉树的中序遍历
废话又迎来了一次狗生辉煌不过脑子犯抽抽了题目描述就是中序遍历传送门题目思路先是递归,但我发现这个参数没法递归,就选择了迭代。看了评论区的,可以重新写一个函数递归。然后我的迭代就是规规矩矩的把根节点入栈迭代,时间消耗有点大,看到评论区的什么颜色标记那个,其实就是设置一个标记,在第一次的时候都不输出,按照输出反序入栈,再输出。效率杠杠的其核心思想如下:标记节点的状态,新节点为0,已...原创 2020-04-05 17:49:13 · 99 阅读 · 0 评论 -
#LC100 :相同的树
废话不想写数据库了,在家里效率太低了…这道题是我的狗生巅峰了哈哈哈哈哈哈哈哈哈哈哈哈(猖狂)题目描述传送门给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。题目思路说实话,我对递归真的是不知道从何入手,这道题也是思路在纸上划着划着就出来了(虽然很简单)首先给定pq 是按照前序遍历给出的,我们得先判断pq是否相等,再...原创 2020-04-05 16:07:02 · 64 阅读 · 0 评论 -
C++循环链表之约瑟夫问题
前天学了循环链表,一直再没管,今天来应用一下,感觉自己写麻烦了…循环链表与单链表的区别就在于表尾指针不是NULL,而是等于first。这就产生了一个好处就是可以从任何节点开始访问到所有节点。代码#include<iostream>using namespace std;struct People{ int data; People* link=NULL;};cla...原创 2020-02-21 23:24:33 · 209 阅读 · 0 评论 -
#LC21:合并两个有序链表
我以为这个题是常见的有序链表的合并!就在刚刚我还写了数据结构老师布置的作业,里面有一个就是这样!完全没有想到用递归!!!题目描述将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4思路害!居然也没有...原创 2020-02-20 21:57:42 · 226 阅读 · 0 评论 -
#LC66:加一
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/plus-one著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。...原创 2020-02-20 20:45:26 · 113 阅读 · 0 评论 -
#LC35:搜索插入位置
举手举手!!!这题我会!看见题解里面好多用二分查找的,确实想起来了,有序考虑二分查找,将时间复杂度从O(n)降到了O(logn)。1.题目要求给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。2.题目思路我的思路就是最简单的遍历,遇到等于或者大于直接返回当前下标。3.代码class...原创 2020-02-19 16:08:39 · 112 阅读 · 0 评论 -
#LC27:移除元素
传送门做完这道题,说明我真的是不会迁移啊,明明刚刚的26题是这样的思路,还偏偏自己又用了原来的思路1.题目要求Given an array nums and a value val, remove all instances of that value in-place and return the new length.Do not allocate extra space for a...原创 2020-02-19 15:19:32 · 79 阅读 · 0 评论 -
#LC26:移除有序数组的冗余项
传送门哎!我可真是太菜了!tcllllllllllllllllllllll第一次做这个LeetCode,刚学数据结构,就学了个顺序表,想来练练,还找了一个简单题,我也不会。看别人的题解还要看好久才看明白,可真是太菜了。不过也怪我,上学期一学期没写c++了,没来就学的半吊子,还不勤加练习!昨天还写了ds老师布置的作业removeMore()看着差不多才选这个题,结果这个不一样,没给删除哪个数啊...原创 2020-02-17 21:28:52 · 174 阅读 · 0 评论 -
#LC16 : 最接近的三数之和
题目描述传送门给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).思路和第十五个差不多,不过...原创 2020-04-19 16:54:29 · 91 阅读 · 0 评论 -
#LC18:四数相加
就是在三数相加基础上再加一套循环遍历但是每次都因为一些小错误提交失败,就很难受…传送门class Solution{public: vector<vector<int>> fourSum(vector<int> &nums, int target) { sort(nums.begin(), nums.end())...原创 2020-04-19 00:13:09 · 86 阅读 · 0 评论 -
#LC20:有效的括号
这题做的我心累,太蠢了我。今天刚学了数据结构的栈,其实上学期汇编也学了(上课就没听。。),比这个更清晰一些。然后我就来应用栈待会一一道来我的蠢!!!传送门1. 题目描述给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。2....原创 2020-02-21 21:41:25 · 154 阅读 · 0 评论 -
leetcode刷题:Week1
0 废话这周集中刷了点题,准备每周总结一下,先占个坑。周末主要任务是 写完上周作业 搞明白没懂的知识 周六晚参加一下双周赛 周日上午参加这周的周赛 概率论感觉没有复习的那么透,做点题? 总结这周题型和知识点那么周日晚上见啦 !...原创 2021-03-06 10:13:15 · 122 阅读 · 0 评论