自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(99)
  • 资源 (2)
  • 收藏
  • 关注

原创 【无标题】

没啥

2022-11-12 14:13:57 222

原创 2021PAT春季赛 试做

题1题意:求在给定上界范围内,公差最大的且都为素数的,等差数列。#include<bits/stdc++.h>using namespace std;const int N = 1e5+10;int n, m;bool isPrime[N];vector<int> primes, ans;bool is_prime(int x){ if(x<2){ return false; } for(int i = 2;i&lt

2022-03-06 10:32:31 623

原创 PAT 2021年秋季 试做

C++ code#include<bits/stdc++.h>using namespace std;struct Array{ int beg, length;}; vector<Array> vec;int last = 1;int main(){ int n, k; cin>>n>>k; for(int i = 0;i<n;++i){ int a

2022-03-05 08:36:13 644

原创 PAT 算法笔记P271 DFS 不可分割背包问题 P273 DFS 选择K个数

P271 DFS 不可分割背包问题题目描述:有n件物品,每件物品的重量为w[i], 价值为c[i]。现在需要选出若干件物品放入一个容量为v的背包中,使得在选入背包的物品重量和不超过容量v的前提下,让背包中物品的价格之和最大,求最大价值。示例:输入:5 8 //5件物品,背包容量为83 5 1 2 2 //物品重量4 5 2 1 3 //物品价值 输出:10code/*算法笔记P272 不可分割背包问题 * */#include <vector>#include

2022-02-14 18:42:49 152

原创 HDU - 2527 (哈夫曼树 + 优先队列)

问题描述:哈夫曼编码(Huffman Coding);一个字母的权值等于该字母在字符串中出现的频率。所以Javac++ 想让你帮忙,给你安全数值和一串字符串,并让你判断这个字符串是否是安全的?Input:输入有多组case,首先是一个数字n表示有n组数据,然后每一组数据是有一个数值m(integer),和一串字符串没有空格只有包含小写字母组成!Input:如果字符串的编码值小于等于给定的值则输出yes,否则输出no。SampleInput:212helloworld66ithinkyo

2022-02-12 21:46:27 467

原创 常用四大二分法查找变形

常用二分法查找变形二分法新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入二分法二分法你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,

2022-01-14 13:45:37 600

原创 天勤 数据结构 P80 T10

题目试编写一个算法,检查一个程序中的花括号、方括号和圆括号是否配对,若全部配对,则返回1,否则返回0。对于程序中出现的一对单引号或者双引号内的字符不进行括号配对检查。39为单引号ASCII值,34为双引号的ASCII值。单引号和双引号如果出现则成对出现。int bracketsCheck(char f[]){// 对由字符数组f所存字符中的文本进行括号匹配检查 stack S, char ch; char *p = f; while(*p!='\0'){// 顺序扫描串中的每一个字符

2021-08-14 16:46:54 161

原创 十进制转二进制 (栈

C++ Codeclass Solution {public: string toHex(int num) { if(num==0) return "0"; //0-15映射成字符 string num2char = "0123456789abcdef"; //转化为非符号数,就可以用>>移位 unsigned int n = num; string res = ""

2021-08-13 23:54:04 156

原创 2021-07-17 算法笔记 二分法 分割木棒|凸多边形

问题1:分割木棒算法二分法Code问题2:凸多边形#include<cstdio>#include<cmath>const double PI = acos(-1.0);const double eps = 1e-5; //比较精度//求圆心角之和double totalCornerAngles(double edges[],int n,doule r){ double sum = 0.0; for(int i = 0;i<n;++i){

2021-07-18 23:36:27 115

原创 全排列 《算法笔记》P117

#include<cstdio>const int maxn = 11;//P为当前排列,hashTable记录整数x是否已经在P中int n,P[maxn],hashTable[maxn] = {false};//当前处理排列的第index号位void generateP(int index){ if(index == n+1){//递归边界,已经处理完排列的1-n位 for(int i=1;i<=n;++i){ printf("%d",P[i]); //输出.

2021-06-07 13:39:45 85

原创 leetcode 2021.6.2 每日一题523. 连续的子数组和

523. 连续的子数组和参考题解弄一个变量r = 0来寄存累加和的余数:把数组里的每个数依次加到r上,然后每加一个就当场取个模,根据刚才的规律,多取几次模不影响累加和的余数。

2021-06-03 11:40:02 92

原创 2021-05-21 1035. Uncrossed Lines (dp,动态规划)

关键词:转为公共子序列1035. 不相交的线参考题解:动态规划,转化为最长公共子序列。典型的二维动态规划问题。为了统一方便,数组从0开始一直到n+1.状态转移方程:class Solution {public: int maxUncrossedLines(vector<int>& A, vector<int>& B) { vector<vector<int>> dp(A.size()+1,ve

2021-05-31 12:07:41 101

原创 leetcode 每日一题 5.19 1738. 找出第 K 大的异或坐标值(二维异或) 215. 数组中的第K个最大元素(kth-element)

1738. 找出第 K 大的异或坐标值解法参考1.前置异或2.kth-element问题:手撸快排;手撸堆排序;sort排序或者优先队列。前置题215. 数组中的第K个最大元素/*堆排序*/class Solution {public: //i:从0开始,标号值要加1 void maxHeapify(vector<int>& a,int i,int heapsize){ //l:右子节点,r:l的右边的一个节点 ...

2021-05-24 21:32:25 117

原创 leetcode 字典树 每日一题 2021.5.16 208. 实现 Trie (前缀树)(字典树)

前置题目208. 实现 Trie (前缀树)前缀树的介绍:参考代码实现:C++class Trie {private: bool isEnd; Trie* next[26];public: /** Initialize your data structure here. */ Trie() { isEnd = false; memset(next,0,sizeof(next)); } /**

2021-05-21 10:49:39 94

原创 leetcode 每日一题 2021.5.5 740. 删除并获得点数

前置题目198. 打家劫舍方法:如果房屋数量大于两间,应该如何计算能够偷窃到的最高总金额呢?对于第 k(k>2) 间房屋,有两个选项:偷窃第 k间房屋,那么就不能偷窃第 k-1间房屋,偷窃总金额为前 k−2 间房屋的最高总金额与第 k间房屋的金额之和。 不偷窃第 k 间房屋,偷窃总金额为前 k-1间房屋的最高总金额。因此推出状态转移方程:Codeclass Solution {public: int rob(vector<int>&a...

2021-05-07 15:19:52 92

原创 leetcode 第239场周赛

5746. 到目标元素的最小距离张晴川的代码模板#pragma comment(linker, "/stack:200000000")#pragma GCC optimize("Ofast")//#pragma GCC optimize(3)//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")//#pragma GCC target("sse3","sse2","sse")//#pr

2021-05-02 15:23:43 164

原创 Leetocde 数组题 39. 组合总和 (回溯,剪枝)

39. 组合总和medium方法一:回溯(不剪枝)class Solution {public: void dfs(vector<int>& candidates,int target,vector<vector<int>>& ans,vector<int>& combine,int idx){ if(idx==candidates.size()){ return;

2021-05-01 10:20:44 138

原创 leetcode 31 next permutation

31. Next Permutation解法总结:1.从后往前找到第一个破坏单调递增性质的位置(x,y)2.将array[x]与array[y,n)中比array[x]大的最小的数字交换(注意是靠后的)3.将array[y,n)反过来4.别忘了特殊处理整个array本身就是单调递减的情况Codeclass Solution {public: void nextPermutation(vector<int>& nums) { int

2021-04-26 22:10:51 90

原创 leetcode 每日一题4.24 377. 组合总和 Ⅳ DP

动态规划参考题解如果给定的数组中含有负数,则会导致出现无限长度的排列。如果允许负数出现,则必须限制排列的最大长度,避免出现无限长度的排列,才能计算排列数。需要dp[i - num] < INT_MAX - dp[i]题目标准“答案”是32位整数,但是不保证递归过程中别的数字爆int( c++。...

2021-04-24 13:42:32 107

原创 leetcode 每日一题 4.23 368. 最大整除子集

368. 最大整除子集参考题解

2021-04-24 13:09:57 100

原创 leetcode 每日4.22 363. 矩形区域不超过 K 的最大数值和

363. 矩形区域不超过 K 的最大数值和hard题解参考链接前置题目:二维前缀和303. 区域和检索 - 数组不可变参考题解关键公式class NumArray {public: vector<int> sums; //全局变量,初始化为0 NumArray(vector<int>& nums) { int n = nums.size(); sums.resize(n+1); ...

2021-04-24 13:03:18 76

原创 1□2□3□4□5□6□7□8□9=110

题目1□2□3□4□5□6□7□8□9=110要求在中间的8个空中填写+,-,或不填。构成的表达式判断是不是正确,正确则输出。。。。(如果空格的中没有填写符号,则这几个数组成一个新的N位数,比如1□2,可以是1+2,也可以是12)Code#include<bits/stdc++.h>using namespace std;int n; //层次int result = 0; //存储结果int symbol[9] = {-1}; //记录符号(第一个不用,从 symb

2021-04-01 21:15:43 316

原创 力扣78 子集

求数组的所有子集比如有数组[1, 2, 3],其元素数量n = 3,将那么其子集为[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]算法(1)使用二叉树来构建含有子集的叶子节点,然后使用中序遍历思路每一层代表一个元素,左子树代表不使用该节点,右子树代表使用该节点,使用中序遍历来获得全部叶子节点,那么获得该数组的子集。void getArr(vector<int> List,

2020-12-28 14:52:39 120

原创 编程之美 3.10 分层遍历二叉树 扩展问题

扩展问题如果要求按深度从下到上访问图3-23中的二叉树,每层的访问顺序仍然是从左到右:比较容易想到的方法是先按照层序弄好一个待遍历数组,层与层之间考虑用一个标识NULL作为分割,这样只需要反向遍历这个数组就行了,不过要注意的是弄这个遍历数组一定要先压入右节点,再压入左节点。代码void printNodeByLevel(Node *root){ vector<Node*> vec; int cur , last;//设定该层的起始点和结束点 vec.push_back(root)

2020-09-08 11:27:41 120

原创 编程之美 3.9 重建二叉树 扩展问题

扩展问题1如果前序和中序遍历的字母有重复的,那么怎么构造所有可能的解呢?搜索所有可能的情况,并调用扩展问题2的解决方案,判断此情况是否合理(剪枝操作),如果合法,则构造解.扩展问题2如何判断给定的前序遍历和中序遍历的结果是合理的?递归算法实现,分别遍历左右子树,递归中迭代查找左右子树的长度,类似于书中的方法。代码,可判断给定前序遍历和中序遍历是否合理?#include <iostream>#include <string>using namespace std;

2020-09-08 09:46:04 155

原创 Leetcode 数组题合集 18.FourSum

文章目录Difficulty:MediumDescription算法总结实现双指针实现时间复杂度空间复杂度哈希表实现时间复杂度空间复杂度Difficulty:MediumDescriptionGiven an array nums of n integers and an integer target, are there elements a, b, c, and d in nums such that a + b + c + d = target? Find all unique quadrupl

2020-06-25 09:16:24 206

原创 恩格玛密码机的工作原理

主要组成部分:1.键盘:输入明文2.灯盘:在键盘上输入一个字母,会有相应的字母亮起来,代表被加密后的字母3.转子:加密的核心,后边会详细讲4.插线板:为提高安全性增加的装置,后边会讲加密核心:转子转子有两面,分别有26个点对应26个字母,转子两边的26个点用了26条导线连接起来,但是左边的A不和右边的A相连,上图中右边的杂乱的导线实现了这种对应关系,我们可以将其看作是我们最开始提到...

2020-06-21 21:35:29 8844

原创 字、半字、字节到底多长

总结:字节永远都是8bit,字的大小依赖于平台(可以通过sizeof()函数进行查看),但是可以确定的是,字是多少位,半字永远是字的一半,双字永远是字的2倍大小字定义字是根据处理器的特性决定的。首先ARM是32bit处理器,所以它的字是32bit的。半字自然就是16bit;如果在MSP430上,由于它是16bit处理器,所以它的字是16bit的。半字=字节=8bit。CPU按照其处理信息的字长可以分为:八位微处理器、十六位微处理器、三十二位微处理器以及六十四位微处理器等。CPU最大能查找多大范

2020-06-21 15:48:20 1303

原创 Leetcode 数组题集合 9222.按奇偶排序数组II

文章目录难度:简单题目算法法一:双指针C++代码时间复杂度:空间复杂度:运行情况法二:改进双指针思路: 不需要额外空间算法Java代码时间复杂度:0(N)空间复杂度: O(1)运行情况法三:两次遍历思路Java代码时间复杂度空间复杂度运行情况:Tips难度:简单题目给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。你可以返回任何满足上述条件的数组作为答案。示例:输入:[4,2,5,

2020-06-19 21:05:51 199

原创 Leetcode BFS 图 126.单词接龙II

题目126.单词接龙II难度:困难给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列。转换需遵循如下规则:1.每次转换只能改变一个字母。2.转换后得到的单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回一个空列表。所有单词具有相同的长度。所有单词只由小写字母组成。字典中不存在重复的单词。你可以假设 beginWord 和 endWord 是非空的,且二者不相同。示例 1:

2020-06-13 21:32:20 219

原创 Leetcode DFS 112.路径总和

题目给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1算法java代码/** * Definition fo

2020-06-12 23:02:37 252

原创 Leetcode 图遍历题合集 DFS 508.N叉树的最大深度

题目给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。例如,给定一个 3叉树 :我们应返回其最大深度,3。说明:树的深度不会超过 1000。树的节点总不会超过 5000。算法DFSPython3代码class Solution: def maxDepth(self, root: 'Node') -> int: def DFS(root): ls = [] #记录除root之外,以各节

2020-06-12 22:52:18 230

原创 Python在for循环中使用索引修改列表元素值

Python在for循环中使用索引修改列表元素值像line9中使用索引即可例2 for index in range(len(word_dict)): word_dict[index] = word_dict[index].replace("\n","")

2020-06-10 08:44:15 1876

原创 Leetcode 数组 1160. 拼写单词

题目给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。注意:每次拼写(指拼写词汇表中的一个单词)时,chars 中的每个字母都只能用一次。返回词汇表 words 中你掌握的所有单词的 长度之和。示例 1:输入:words = ["cat","bt","hat","tree"], chars = "atach"输出:6解释: 可以形

2020-06-07 14:40:07 237

原创 Leetcode 数组 88. 合并两个有序数组

题目给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5, 并且原

2020-06-05 12:26:41 108

原创 Leetcode 数组 674.最长连续递增序列

难度:简单题目:给定一个未经排序的整数数组,找到最长且连续的的递增序列。示例 1:输入: [1,3,5,4,7]输出: 3解释: 最长连续递增序列是 [1,3,5], 长度为3。尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为5和7在原数组里被4隔开。 示例2:输入: [2,2,2,2,2]输出: 1解释: 最长连续递增序列是 [2], 长度为1。限制:数组长度不会超过10000。算法与C代码法一:一次遍历基本思想:一次遍历,判断是否和后续元素发生逆序

2020-06-04 12:58:17 190

原创 Leetcode 数组 1051.高度检查器

1051. 高度检查器文章目录1051. 高度检查器题目:C代码题目:学校在拍年度纪念照时,一般要求学生按照 非递减 的高度顺序排列。请你返回能让所有学生以 非递减 高度排列的最小必要移动人数。注意,当一组学生被选中时,他们之间可以以任何可能的方式重新排序,而未被选中的学生应该保持不动。示例:输入:heights = [1,1,4,2,1,3]输出:3 解释:当前数组:[1,1,4,2,1,3]目标数组:[1,1,1,2,3,4]在下标 2 处(从 0 开始计数)出现 4 vs 1

2020-06-04 12:36:55 179

原创 vector 如何使用访问(存取)数值

两种方式1.先push_back第一个元素2.声明数组大小#include <iostream>#include <vector>using namespace std; int main(){ vector<int> v; //或者声明vector的大小,vector<int> test(10); v.push_back(1); v[3] = 2; v[10] = 10; cout <<

2020-06-04 10:53:43 512

原创 vector作为函数如何传参

int L[]作为参数, 能改变L的值, 不需要引用&#include<bits/stdc++.h>using namespace std; void move(int L[], int n){ int temp; int i = 0, j = n - 1; temp = L[i]; while(i<j){ for(int k = 0;k<n;++k){ cout<<L[k]<<" "; } cout<<

2020-06-04 10:49:55 332

原创 如何删除 C:\Users\lenovo\Documents\Tecent Files

以前下载qq时没有注意, 将存储位置默认在了C盘. 后来卸载了QQ, 想要删除下载的文件, 但是删除时出现了需要来自LATTOP的权限, 后百度未果, 想出一个粗招.将里面的文件尽可能地删除(把能删的都删了), 到最后只剩下一个空文件夹, 然后它就也可以删除了....

2020-05-30 00:13:23 3678 1

makefile教程(中文版).pdf

什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。 因为,makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。

2020-06-21

408-2019-真题和答案.pdf

2019年全国硕士研究生招生考试 计算机科学与技术学科联考 计算机学科专业基础综合试题 一、单项选择题:1~40小题,每小题2分,共80分。下列每题给出的四个选项中,只有一个选项符合试题要 求。 1. 设n是描述问题规模的非负整数,下列程序段的时间复杂度是 x=0; while(n>=(x+l)*(x+l)) x=x+l; A. O(log n) B. O(n1/2) C. O(n) D. O(n2) 2. 若将一棵树T转化为对应的二又树BT,则下列对BT的遍历中,其遍历序列与T的后根遍历序列相同的 是 A. 先序遍历 B. 中序遍历 C. 后序遍历 D. 按层遍历 3. 对n个互不相同的符号进行哈夫曼编码。若生成的哈夫曼树共有115个结点,则n的值是 A. 56 B. 57 C. 58 D. 60 4. 在任意一棵非空平衡二又树(AVL树)T1中,删除某结点v之后形成平衡二又树T2,再将w插入T2形成 平衡二又树T3。下列关于T1与T3的叙述中,

2020-06-21

空空如也

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

TA关注的人

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