自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Hive3安装

Hive3安装Mysql安装卸载Centos7自带的mariadb[root@node3 ~]# rpm -qa|grep mariadbmariadb-libs-5.5.64-1.el7.x86_64[root@node3 ~]# rpm -e mariadb-libs-5.5.64-1.el7.x86_64 --nodeps[root@node3 ~]# rpm -qa|grep mariadb [root@node3 ~]#

2021-12-31 15:10:45 1208

原创 hadoop配置

Hadoop3.3.0–Linux编译安装基础环境:Centos 7.7编译环境软件安装目录mkdir -p /export/server一、Hadoop编译安装(选做)可以直接使用课程提供已经编译好的安装包。安装编译相关的依赖yum install gcc gcc-c++ make autoconf automake libtool curl lzo-devel zlib-devel openssl openssl-devel ncurses-devel snappy snapp

2021-12-30 14:13:34 213

原创 java泛型设计

泛型设计目的省去运行时期类型检查的麻烦,在编译期即可解决比如:ArrayList files = new ArrayList();. . .String filename = (String) files.get(0);或者add 操作等显示包含的类型需要很多强制转化的地方最好用泛型类型检查的工作全部交给了编译器unchecked warning对于兼容以前的类型,比如Dictory可以使用Dictionary<Integer, Components> labelT

2021-12-17 20:52:57 681

原创 泛型类不允许创建为数组

泛型类不允许申明为数组的原因在于:如果可行的话,以下语法可以通过Pair table=new Pair[10]Object[] objArray=tableobjArray[0]=new Pair1.类型擦除会将原本定义的 String擦除掉2.我们将新的类转化为Object[]3.Object只检查是不是Pair类,并不会检查是否符合要求,因为此时已经发生了类型擦除,编译器也不能知道以前T的信息...

2021-11-27 09:58:45 284

原创 try catch推荐写法

2021-11-24 16:04:10 190

原创 Lambda表达式理解

实现:public class LambdaTest { @FunctionalInterface interface IMath{ int operation(int a, int b); } int testLambda(IMath lambdaTest, int a , int b) { return lambdaTest.operation(a,b); } public static void ma

2021-11-23 16:31:48 177

原创 linux0.1源码笔记

linux0.1

2021-09-17 10:03:49 92

原创 struct类型理解

struct之前碰到过坑现在理解起来其实就是填充表格表格宽度为目前最长的数据类型的值然后依次从上往下填充,看一共用了几行即可struct stu{ char a; char c; int b;};int main() { cout<<sizeof(stu)<<endl; return 0;}int最宽,占用4个结果是8charcharintintintintstruct stu{

2021-08-07 16:20:00 165

原创 Redis持久化机制

也是服气,面试经常问一些看似很深奥的东西,弄一大堆高深词汇忽悠人,其实策略很容易想明白,真正高深的就是大学基础课RDB也就是创建一个子进程,当达到某种触发条件时候将内存中的内容写入文件这种触发条件可以说当前内存的记录达到多少条执行写入指令客户端退出AOF以日志形式记录所有写操作...

2021-07-24 13:10:07 55

原创 springboot报错 org.apache.ibatis.binding.BindingException

原因在于我的配置文件写成了mapper-locations: classpath:mybatis.mapper/*.xml但是这里面 . 并不会解析成路径的一部分,正确的写法应该是mapper-locations: classpath:mybatis/mapper/*.xml

2021-06-13 23:22:40 157

原创 LeetCode 309股票问题,待冷冻期

class Solution {public: int maxProfit(vector<int>& prices) { int n = prices.size(); vector<vector<int>> dp(n, vector<int>(5)); dp[0][4] = -prices[0]; dp[0][0] = -prices[0]; for (int .

2021-04-26 13:47:51 58

原创 最小表示法

引理如果比较起始位置i ii和起始位置j jj发现s [ i , i + 1 … i + k − 1 ] = s [ j , j + 1 … j + k − 1 ] s[i,i+1\ldots i+k-1]=s[j,j+1\ldots j+k-1]s[i,i+1…i+k−1]=s[j,j+1…j+k−1]且s [ i + k ] < s [ j + k ] s[i+k]<s[j+k]s[i+k]<s[j+k]则起始位置j , j + 1 … j + k j,j+1\ldots j+kj.

2021-04-19 11:04:00 90

原创 计算器

收藏一份模板观察观察lass Solution {public: unordered_map<char,int> oper_pri = { {'+',1}, {'-',1}, {'*',2}, {'/',2}, {'%',2}, {'^',3} }; stack<char> opers; stack<

2021-04-04 21:45:13 60

原创 滑动窗口自定义标准化流程

右侧添加元素判断左侧是否收缩更新窗口最大(或最小)长度右指针+1class Solution {public: int lengthOfLongestSubstring(string s) { //滑动窗口,区间[left,right] int left = 0; int right = 0; unordered_map<char, int> mmap; int maxlen = 0; .

2021-03-25 20:57:17 134

原创 哈希表底层

2021-03-24 12:20:06 105

原创 打家劫舍动态规划小结

打家劫舍198,条形的dp[i] = max(dp[i - 2] + nums[i],/偷第i家的/dp[i - 1]/不偷第i家的/);213环形的因为第一个和最后一个是不能挨着,也就是说,选了第一个就不能选最后一个。选了最后一个就是不能选第一个,所以问题可以分分解为两个子问题[0,end-1]的条形[1,end]的条形两个问题的max就是问题的解337 树状的同样的特点,决定该节点的就是偷还是不偷,因此我们定义一个二维的返回值分别代表偷或者不偷的最大受益,每次捡起最大的受益即可

2021-03-20 20:45:03 100

原创 对于背包问题的思考

对于动态规划的问题抽象成背包问题的时候我们要记得和背包的属性进行对应,这样方便问题的解决比如如下的类比

2021-03-19 19:44:54 90

原创 动态规划总结

2021-03-17 09:04:43 49

原创 贪心算法小结

遇到两个维度权衡的时候,一定要先确定一个维度,再确定另一个维度。例如 406.根据身高重建队列 135. 分发糖果要么从左到右,然后从右到左,两遍遍历,要么在确定一个逻辑的基础上再对另一个限制条件进行排序...

2021-03-15 20:03:14 120

原创 一次有关C++ 增强for循环遍历时候使用的不是引用的记录

记录一下遇到的小问题的解决对于for循环遍历,依次按顺序遍历对象的时候采用的并不是引用,因此我们在遍历时候需要加入引用来解决332. 重新安排行程class Solution {public: unordered_map<string, map<string, int>> targets; bool backtracing(int ticketsNum, vector<string>& result) { //结束条件

2021-03-14 12:08:23 330

原创 回溯算法要点记录

算法模板:如果是一个集合来求组合的话,就需要startIndex,例如:回溯算法:求组合问题!,回溯算法:求组合总和!。如果是多个集合取组合,各个集合之间相互不影响,那么就不用startIndex,例如:回溯算法:电话号码的字母组合...

2021-03-12 20:16:22 88

原创 二叉树总结记录

如果需要遍历整颗树,递归函数就不能有返回值。如果需要遍历某一条固定路线,递归函数就一定要有返回值!只有寻找某一条边(或者一个节点)的时候,递归函数会有bool类型的返回值。数组转化为树的关键就是找分割点...

2021-03-12 19:45:23 54

原创 记一次对于中序遍历处理的混乱认知

二叉搜索树的最小绝对差犯了一些错误本来写的代码是这样的/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: .

2021-03-11 19:29:35 104

原创 递归的进一步探索

对于这个题目,在我思路还没有理清楚的时候写出了一个可以运行的代码class Solution {public: int sumOfLeftLeaves(TreeNode* root) { //终止条件 if (root == NULL) { return 0; } int lsum = 0; int rsum = 0; if (root->left != NULL &.

2021-03-10 19:41:41 51

原创 递归回溯算法小结

以257. 二叉树的所有路径为例之前忽略或者不成系统的点:一个递归,一个回溯递归是前序遍历,先处理本个节点的逻辑,然后处理左右节点处理左右节点的过程中,递归和回溯要点在于要一一对应这个对应关系是,我需要判断下一层可能发生的逻辑(比如它会将我的path添加了一个元素),然后在回溯里面做出处理(pop)/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left

2021-03-10 11:54:44 137

原创 非递归的前中后序遍历二叉树

非递归的前中后序遍历二叉树模板思路:使用栈模拟递归方法,只不过注意进出的顺序要点:谁是要遍历的位置的节点,就将它放进去,然后再塞进去个null,在处理到是Null时,就再拿出一个节点作为当前的值如果不是Null,那么就按顺序将它的左右子树放进栈/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; *

2021-03-07 22:50:22 54

原创 有序队列

很有参考意义的一个题仔细分析逻辑之后可以参考写出有序队列的代码:class Solution {public: //要点:新的大数的到来可以直接影响到前面的小数,让他们的离开变得无关紧要。毕竟窗口里面已经有了比他们大的数。 class MyQueue { public: deque<int> que; //新的数进来,会使得比它小的数变得无关紧要,因为比它小的在它的前面比它先走,所以不可能是这个队列里的最大值了 void p

2021-03-06 23:31:52 598

原创 数组专题:二分法

刷题重来,打算按专题开始搞,看看前辈的经验,总结一下二分法的判断:如果我认为target在[left,right]里,那么我的判断条件应该定为left<=right,如果出了我的判断,那么只可能会是 right在left的左边,这时候最佳的插入位置为left或者right+1;同理如果我认为target在[left,right)里,那么判断条件应该为left<right,这样的话如果出了我的判断结束条件,只可能会是left=right,这时候最佳的插入位置为left或者right都可以以

2021-03-04 14:06:19 108 1

原创 91. 解码方法

思路:动态规划为什么呢?因为我发现在最后加上一个数或者去掉一个数和前面的问题是一个问题,没有什么不一样,所以应该是后面的问题其实就应该在前面的问题下继续黑箱判断就可以了,和高中学的整体法一样。具体点呢?原来一共有n个,我加了个数进去,如果它不能和前面组成一队,那么总的个数就是,把他自己当成一组,前面多少个它也就还是多少个。dp[i]=dp[i-1]如果它可以和前面的组成一组,那么分组就应该是。他自己一个数一组,和上面一样,共有dp[i-1]个它和前面的那个那个数一组,其它的数一组,共有

2021-02-01 20:17:13 133

原创 90. 子集 II

90. 子集 II还是树的思想,同一层的不能重复,其实也就是看一下每一层的开头就行了i>start就很巧妙的解决了这一点class Solution {public: vector<int> nums; int n; vector<vector<int>> result; //每一层的任务就是看看能不能往下一层放东西 void dfs(int depth,int start,vector<int> cur) { if (depth

2021-01-21 21:46:22 38

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

88. 合并两个有序数组从屁股插入就可以了class Solution {public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int index1 = m - 1; int index2 = n - 1; int cur = m + n - 1; while (index1 >= 0 && index2 >= 0) {

2021-01-18 19:06:56 78 1

原创 86. 分隔链表

86. 分隔链表找个大头记录连接着大于目标值的找个小头记录连接小于目标值的最后串起来即可真巧妙,居然链表没乱。因为我遍历的时候是从头到尾一直在跑的,至于我走过的路变成了什么样子,我不关心,只要别挡我的路就行/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {}

2021-01-15 23:10:34 57

原创 85. 最大矩形

85. 最大矩形将矩形抽象成84,柱状图即可class Solution {public: int largestRectangleArea(vector<int>& heights) { stack<int> st; st.push(-1); int maxArea = 0; int n = heights.size(); for (int i = 0; i < height

2021-01-15 22:23:57 58

原创 84. 柱状图中最大的矩形

84. 柱状图中最大的矩形思路:方法一:如果暴力解法,对于某一个柱子,我们让它往两边找,直到找到坑为止就算到头了,然后算面积就是了但是这样也发现,如果我们从头往后遍历,要是下降了,那后面的肯定是前面那个的右边界,对应的他的左边界可以自己往前去搜索一下可以用while()一直找到比它小的heights,然后就是它的左边界但是这样的话,很容易出现重复的遍历方法二对于某个柱子如果它后面是 严格下降的话,那它的右边界就是他本身,到头了如果后面是 上升的话,那么它的右边界是不能确定的,需要往后找

2021-01-15 21:37:05 55

原创 83. 删除排序链表中的重复元素

83. 删除排序链表中的重复元素思路:双指针/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* deleteDuplicates(ListNode* head) {

2020-12-28 18:04:19 38

原创 82. 删除排序链表中的重复元素 II

82. 删除排序链表中的重复元素 II思路:预定一个preHead指向head如果发现我的next->val==next->next->val那派出个快指针去找不重复的位置,preHead指向它,再次进行判断,如果符合标准,那么做指针指向这个节点第一次写的成坨的代码/* 思路:预定一个preHead指向head 如果发现我的next->val==next->next->val 那派出个快指针去找不重复的位置,preHead指向它,再次进行判断,如果符合标准

2020-12-28 17:49:10 39

原创 81. 搜索旋转排序数组 II

81. 搜索旋转排序数组 II思路:二分法,肯定能分到有序的一半和无序的一半,如果不在有序的一半那就在无序的那一半里面问题在于对于有序的一半的判断一开始想当然的,nums[left]<=mid就是在左半边,否则再右半边,但是这个等号是最难辨别的因为如果mid是中间的话最难分辨了1,3,1,1,1,11,1,1,1,3,1都是不能分辨出来的,因此应该单独拿出来分析,采用缩短区间的方式慢慢的搞了只能class Solution {public: bool search(ve

2020-12-28 16:43:19 47

原创 80. 删除排序数组中的重复项 II

80. 删除排序数组中的重复项 II思路:双指针class Solution {public: int removeDuplicates(vector<int>& nums) { if (nums.empty()) { return 0; } int cnt = 1;//记录我左边接收到几个相同的了 int left = 1, right = 1;//left:指向坑位,right指向要比较的。 while (right < nums.size())

2020-12-28 11:21:04 47

原创 79. 单词搜索

79. 单词搜索思路:回溯上下左右挨个找一遍但是在写代码过程中遇到了一些问题非常烦。处理过程中边界总是划分不清另外回溯过程中尽量先写不成立的,然后return回去,不然太难搞了class Solution {public:bool dfs(int x, int y, int index, vector<vector<char>>& board,string& word, vector<vector<bool>>& vis

2020-12-28 10:03:05 38

原创 78. 子集

78. 子集思路:二进制掩码对于n位数,有2^n种可能性,用二进制表示其对应的位的有无即可class Solution {public: vector<vector<int>> subsets(vector<int>& nums) { vector<vector<int>> result; vector<int> temp; int n = nums.size(); // [][] 1<<

2020-12-27 18:03:56 33

空空如也

空空如也

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

TA关注的人

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