![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
永远的Flag
Java为主
展开
-
逆波兰表达式(后缀表达式)
根据 逆波兰表示法,求表达式的值。有效的算符包括+、-、*、/。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例1:输入:tokens = ["2","1","+","3","*"]输出:9解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9示例2:输入:tokens = ["4","13","5","/","...原创 2021-06-16 10:34:35 · 318 阅读 · 0 评论 -
背包实战问题
7.背包问题背包定义:给定一个背包容量target,给定一个物品的数组nums,能否按照一定的方式选取得到target注意: nums,target可以是数字也可以是字符 target可能会给出,也可能需要从题目挖取(常见是target=sum / 2) 背包分类 01背包问题:每个元素最多选取一次 完全背包问题:每个元素可以重复选择 组合背包问题:背包中的物品要考虑顺序 分组背包问题:不止一个背包,需要遍历每个背包 问题分类原创 2021-06-09 09:04:28 · 109 阅读 · 0 评论 -
Trie树
维护一个字符串集合,支持两种操作:I x向集合中插入一个字符串xx; Q x询问一个字符串在集合中出现了多少次。共有NN个操作,输入的字符串总长度不超过105105,字符串仅包含小写英文字母。输入格式第一行包含整数NN,表示操作数。接下来NN行,每行包含一个操作指令,指令为I x或Q x中的一种。输出格式对于每个询问指令Q x,都要输出一个整数作为结果,表示xx在集合中出现的次数。每个结果占一行。数据范围1≤N≤2∗1041≤N≤2∗1...原创 2021-05-26 11:08:22 · 89 阅读 · 0 评论 -
dfs题目
给定一个m x n 二维字符网格board 和一个字符串单词word 。如果word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。例如,在下面的 3×4 的矩阵中包含单词 "ABCCED"(单词中的字母已标出)。示例 1:输入:board = [["A","B","C","E"],["S","F","C","S"],["A",...原创 2021-05-10 17:09:58 · 191 阅读 · 0 评论 -
背包问题
1.01背包有NN件物品和一个容量是VV的背包。每件物品只能使用一次。第ii件物品的体积是vivi,价值是wiwi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,VN,V,用空格隔开,分别表示物品数量和背包容积。接下来有NN行,每行两个整数vi,wivi,wi,用空格隔开,分别表示第ii件物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤10...原创 2021-05-10 10:46:03 · 106 阅读 · 0 评论 -
欧拉函数
给定nn个正整数aiai,请你求出每个数的欧拉函数。欧拉函数的定义1∼N1∼N中与NN互质的数的个数被称为欧拉函数,记为ϕ(N)ϕ(N)。若在算数基本定理中,N=pa11pa22…pammN=p1a1p2a2…pmam,则:ϕ(N)ϕ(N)=N×p1−1p1×p2−1p2×…×pm−1pmN×p1−1p1×p2−1p2×…×pm−1pm输入格式第一行包含整数nn。接下来nn行,每行包含一个正整数aiai。输出格式输出共nn行,每行输出一个正整...原创 2021-05-08 10:20:53 · 240 阅读 · 0 评论 -
快速选择算法模板
数组中的第K个最大元素在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4class Solution { public int findKthLargest(int[] nums, int k) { return quick_sort.原创 2021-05-07 20:19:51 · 116 阅读 · 0 评论 -
全排列
## 全排列使用算法:dfs和回溯#include <iostream>#include <cstring>#include <algorithm>using namespace std; const int N = 10;int n;int path[N];bool str[N];void dfs(int u){ if(u == n) { for(int i = 0; i < n; i原创 2021-05-01 10:35:02 · 43 阅读 · 0 评论