- 博客(41)
- 资源 (1)
- 收藏
- 关注
原创 git 常用指令(含公司常用分支操作)
git 基本指令git add .git commit -m"msg"git push公司常用分支操作一般大家开发,都会用自己分支开发,然后mr到master分支,那么master分支有可能被别的分支更新过了,就会造成本地master和远程不一致,如果解决这个问题,步骤:先切换到master分支同步远程master代码切到自己分支merge master到自己分支commit 自己分支,然后在gitlab等提MR,别人codereview就可以合入了。指令:git check
2020-06-24 14:58:07 294
原创 连接远端redis踩的坑
报错 (error) DENIED Redis is running in protected mode because protected mode is enabled注释掉绑定ip# bind 127.0.0.1Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程,设置为nodaemonize no保护模式,关闭保护模式,否则外部ip无法连接pr...
2020-01-15 21:43:19 286
原创 括号匹配问题的总结
括号匹配问题有若干种,这里分析其中一种括号里有数字有字符,然后求的最终结果的问题。给出两道例题,Leetcode224和Leetcode394。Leetcode224题目描述实现一个基本的计算器来计算一个简单的字符串表达式的值。字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格 。示例输入: "(1+(4+5+2)-3)+(6+8)"输出: ...
2020-01-02 14:37:05 1024
原创 单例模式
一、概述单例模式的定义就是确保某一个类只有一个实例,并且提供一个全局访问点。属于设计模式三大类中的创建型模式。单例模式具有典型的三个特点:只有一个实例。自我实例化。提供全局访问点。二、优缺点优点:由于单例模式只生成了一个实例,所以能够节约系统资源,减少性能开销,提高系统效率,同时也能够严格控制客户对它的访问。缺点:也正是因为系统中只有一个实例,这样就导致了单例类的职责过重...
2019-12-26 17:00:54 218
转载 java垃圾回收机制
本文主要摘自《深入理解Java虚拟机》,内容较多,尽量全面概括了 Java 垃圾回收机制、垃圾回收器以及内存分配策略等内容。了解 Java 垃圾回收之前,需要先了解 Java内存区域Java 垃圾回收机制垃圾回收主要关注 Java 堆Java 内存运行时区域中的程序计数器、虚拟机栈、本地方法栈随线程而生灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧...
2019-12-13 21:27:04 184
原创 排列组合中的去重问题
排列组合是笔试面试中常见的题目类型,普通排列组合难度较简单,但如果包含去重问题时候,还是有些规律可循的Leetcode47 全排列 II**题目描述**给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是...
2019-12-04 10:06:51 3806
原创 dfs,bfs,UnionFind,slide window模版java
dfs图的连通分量// dfsclass Solution { //图的连通分量 boolean[] visit; public int mainDfs(int[][] M) { int n = M.length; if(n <= 0) return 0; visit = new boolean[n]; ...
2019-05-10 16:05:25 228
原创 2019华为网挑比赛记录分享
2019年4月29日,参加了华为网挑复赛,比赛在西研所举行,我选的Java方向,初赛没看就去考了,初赛比较水,很容易过,复赛上午机试,2个半小时完成一道题目,算是一个小型的系统吧,我会把题目上传,下午是答辩,也就是群面,这个要看平时积累了,我们的考题大概是跟解耦相关的,自由发挥,面试官估计也不是特别专业的技术宅,好像还有一个是HR,所以你积极发言,大胆说就行了,然后我们两组,我们组我是leader...
2019-04-29 09:06:48 500
原创 LeetCode1025 除数博弈
题目描述爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。最初,黑板上有一个数字 N 。在每个玩家的回合,玩家需要执行以下操作:选出任一 x,满足 0 < x < N 且 N % x == 0 。用 N - x 替换黑板上的数字 N 。如果玩家无法执行这些操作,就会输掉游戏。只有在爱丽丝在游戏中取得胜利时才返回 True,否则返回 false。假设两个玩家都以最佳状态参...
2019-04-14 16:05:54 694
转载 Leetcode4号题目
一个O(log(min(m,n))解法,博主解释的非常清晰,代码也很简洁。https://blog.csdn.net/chen_xinjia/article/details/69258706
2019-04-13 22:46:23 185
原创 Leetcode关于树的路径问题(DFS)
主要分析4道问题,来理解树的DFS,这4道题目都是关于树的路径的,基本是一道题演化而来的。而且模板基本一致。leetcode112题目描述给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \...
2019-04-08 11:50:13 532
原创 Leetcode131周赛
1021题(四道题目中的第1道)题目描述有效括号字符串为空 ("")、"(" + A + ")" 或 A + B,其中 A 和 B 都是有效的括号字符串,+ 代表字符串的连接。例如,"","()","(())()" 和 "(()(()))" 都是有效的括号字符串。如果有效字符串 S 非空,且不存在将其拆分为 S = A+B 的方法,我们称其为原语(primitive),其中 A 和 B...
2019-04-07 16:01:42 287
原创 LeetCode260和136系列
题目描述Given an array of numbers nums, in which exactly two elements appear only once and all the other elements appear exactly twice. Find the two elements that appear only once.For example:Given nu...
2019-04-05 16:35:40 316
原创 Junit测试报错: java.lang.AssertionError
如果你其他方法都试过了,看看自己有没有保存代码,不点保存运行会出错。
2019-03-25 09:42:11 10204 5
原创 Leetcode 127周赛有感
转眼之间,研一生活快结束了,实验室的师兄也开始找工作了,想参加华为的软挑又什么也不会,挺伤感的,而且2个月前也失去了心爱的那个她,生活真的很艰难,不过再艰难也要努力,加油。上次参加周赛还是第116次,中间过了快3个月,然后感觉基本不会做题了,规定时间内只做出一道5分的题,超时10分钟做出另一道,写出的代码也简直不能看,贴出来警示自己吧。leetcode1005题class Solution ...
2019-03-10 12:28:13 391 4
原创 用数组+红黑树构造一个简易的HashMap
java的HashMap底层是使用数组加链表实现的,而本文章用数组加红黑树实现。package Hash;import java.util.TreeMap;public class hashTable<K,V> { private TreeMap<K, V>[] hashT; private int M; private int size; publ...
2019-03-04 11:10:47 491
原创 Leetcode962 最大宽度坡
class Solution { public int maxWidthRamp(int[] A) { int res = 0; for(int i = 0;i &lt; A.length;i++) { int j = A.length-1; while(i &lt; j) { if(A[i] &lt...
2018-12-23 12:17:14 711 1
原创 合并两个有序链表(递归与非递归实现)
递归版本:/***************递归*****************/class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { if(l1 == null) return l2; if(l2 == null) return l1; ...
2018-12-14 00:16:01 1820
原创 leetcode945. 使数组唯一的最小增量
class Solution {public: int minIncrementForUnique(vector&lt;int&gt;&amp; A) { if(A.size() == 0) return 0; int sum = 0; //计数 sort(A.begin(),A.end()); //排序 ...
2018-11-25 12:01:47 413 2
原创 leetcode 944. 删除列以使之有序
啊啊啊啊,好烦啊,第三道题目超了10分钟做出来了,如果不写前两道题的博客,应该可以做出3道题的,这道题为的思路是把每个字符串的对应字符取出来然后复制一份,一份进行sort排序,然后比较,如果不同,需要删除的个数就要加一,class Solution {public: int minDeletionSize(vector<string>& A) { in...
2018-11-18 12:19:17 201
原创 leetcode 942. 增减字符串匹配
我的思路是,碰见D插入标志位(-1),碰见I就直接依次插入数字,并且统计I的个数,因为最后一个数字就是I的个数,然后再返回过来处理D,处理方法也很简单,从I个数sum开始加一就行。class Solution {public: vector<int> diStringMatch(string S) { int sum = 0; //统计I的个数 ...
2018-11-18 11:29:58 292 2
原创 leetcode941 Valid Mountain Array
该题目较简单,时间比较紧,还要做题目,所以可以不够优化。class Solution {public: bool validMountainArray(vector&amp;amp;lt;int&amp;amp;gt;&amp;amp;amp; A) { if(A.size() &amp;amp;lt; 3) return false; if(A[0]&amp;a
2018-11-18 10:52:26 158 2
原创 为什么复制构造函数的参数必须是引用类型?
如果一个函数是通过值传递(pass by value)的话,那么它真正传递的其实是实参的副本,该副本产生必定会调用复制构造函数。那么,试想一下,如果我们的复制构造函数是通过值传递的话,它就会调用它本身来产生一个副本,就这样会无限递归下去,而如果传递引用,就不会产生副本,也不会调用复制构造函数,问题得以解决。...
2018-11-04 22:45:52 1619 1
原创 如何在linux上用g++编译Cpp
首先,你要用vim将程序写好,比如//hello.cpp#include <iostream>using namespace std;int main(){ cout<<"hello,cpp"; return 0; }写好之后,在命令模式输入wq保存退出,然后在终端使用如下指令。g++ hello.cpp -o hello//编译成功之后,用...
2018-11-03 20:20:42 825
原创 阻止拷贝的三种方法--Cpp
当一个对象是独一无二的时候,为这个对象做一个副本有点没道理,所以我们应阻止对它进行的拷贝,但是,阻止这一动作并不是很直观,通常来说,你不希望class的某一功能,只要不声明对应的函数就行了,但这个策略对拷贝构造函数和赋值操作符思是无效的,因为如果你不声明它们,编译器会替你声明一个默认的,那么该如何解决这个问题呢,通常来说,可以采取如下三种方法。将拷贝构造函数和赋值操作符声明为私有成员函数,并且...
2018-11-02 20:42:27 613
原创 如何用cin读入空格
在我们使用cin读入字符时,默认是跳过中间的空格以及可能的制表符和换行符,那么,如何让其不跳过空格呢。我们可以使用操作符noskipws来实现。cin>>noskipws;//设置cin读取空白符;char ch;while(cin) cout<<ch;cin>>skipws; //恢复默认状态。这样,程序就会读取空格了。...
2018-11-02 17:10:06 19985 2
原创 智能指针的陷阱
智能指针可以提供对动态内存分配的内存安全又方便的管理,但是要注意一些陷阱,为了正确使用智能指针,我们必须坚持一些基本规范:不使用相同的内置指针值初始化多个智能指针。不delete get() 返回的指针。不使用get()或者reset另一个智能指针。如果你使用get()返回的指针,记住当最后一个对应的智能指针销毁后,你的指针就会变为无效的。如果你使用智能指针管理的资源不是new分配的内...
2018-10-31 22:17:57 522
原创 使用new和delete管理动态内存存在的三个常见的问题
忘记delete内存。忘记释放动态内存会导致人们常说的“内存泄露”问题,值得注意的是查找内存泄露错误是非常困难的,因为通常程序运行了很久之后,真正耗尽内存时,才能检测到这种错误。忘记释放动态内存会导致人们常说的“内存泄露”问题,值得注意的是查找内存泄露错误是非常困难的,因为通常程序运行了很久之后,真正耗尽内存时,才能检测到这种错误。使用已经释放掉的对象。释放内存后将指针置为空,有事可以检测...
2018-10-31 21:26:04 725
原创 讲解类型转化----C++
隐式转化隐式转化是自动执行的,不需要程序员的介入,有时甚至不需要程序员了解。举个例子:int ival = 3.555 + 3;加法的两个运算对象的类型不同,3.555为double类型,而3是int型,C++不会将两个不同类型的值直接想加,而是根据类型转换规则将两个类型统一之后再求值,在这个例子中,3被提升为double型,然后两个double型想加,最后再转化为int型。何时发生类...
2018-10-30 22:59:34 257
原创 STL源码之traits技法
获得迭代器的“性质”最近在拜读侯捷先生的STL源码剖析,当读到traits技法时,感觉非常痛苦,读不太懂,于是想从网上搜一下关于这方面的知识,可是发现网上的解答并不能解决自己的疑惑,于是自己花了很长时间研究这个问题,下面跟大家分享一下我的理解。首先要说的是,迭代器是特性的,比如说迭代器的5个种类,Input Iterator、Output Iterator、Forward Iterator、B...
2018-10-25 00:24:18 197
原创 快速排序算法
本文主要讲解快速排序的两种算法,递归与非递归,然后给出快速排序的优化算法,三路快速排序算法。一、快速排序算法的递归实现#include &lt;iostream&gt;#include &lt;algorithm&gt;//快速排序递归处理using namespace std;//处理一次排序是关键template&lt;class T&gt;int selectInde
2018-10-13 22:51:03 197
原创 leetcode1号题目(两种解法)
暴力解法class Solution { public: vector&lt;int&gt; twoSum(vector&lt;int&gt; &amp;nums, int target) { vector&lt;int&gt; result; int N = nums.size(); for (int i
2018-10-09 21:42:04 615
原创 leetcode19(cpp) beats100%
该题目用到的思想为虚拟头节点以及快慢指针,如不熟悉这两个方法,请参见我的前文。给出代码:class Solution {public: ListNode* removeNthFromEnd(ListNode* head, int n) { ListNode* xHead = new ListNode(0); xHead-&gt;next = head;...
2018-10-09 21:25:52 299
原创 leetcode24 同样采用虚拟节点法(Cpp实现)
虚拟头节点法试用与对于头节点情况要特殊考虑的题目,比如该题,具体使用方法在我前面博客中有,请自行查阅,现给出该题目代码。class Solution {public: ListNode* swapPairs(ListNode* head) { ListNode* xHead = new ListNode(0); xHead-&amp;amp;gt;next = head; ...
2018-10-08 23:21:10 310
原创 leetcode203虚拟头节点法Cpp实现
203号题目是在链表中删除一个值,大家可以动手写一下,看似很简单的题目,实则机关重重,其中最难处理的是头节点的值即为要删除对象,另外,如果头节点后面也是要删除对象,你大可以写一个while循环判断这种情况,然后再写一个头节点不是要删除对象的逻辑实现,不过那样过于冗长,这里提供一个新颖的角度,即建立一个虚拟头节点,然后以这个节点开始处理链表,这样后面的元素都可以按照一个逻辑处理,不再存在上述多种复杂...
2018-10-08 20:25:22 268
原创 关于链表的所有基本操作(创建,打印,增加删除节点,反转)
贴出代码,其中主要部分已经注释。#include &lt;iostream&gt;#include &lt;assert.h&gt;using namespace std;struct LinkedNode{ int val; LinkedNode* next; LinkedNode(int x):val(x),next(NULL){}};//*****...
2018-10-08 10:51:12 239
原创 leetcode203(并指出一个大坑)
先上代码class Solution{public: ListNode* removeElements(ListNode* head, int val) { while(head != NULL &amp;&amp; head-&gt;val == val) { ListNode* deleteN = head; ...
2018-10-07 23:35:21 445
原创 leetcode92(击败100%)
这道题是基于反转链表的,但是比普通反转链表难一些,因为它设置了反转的起始范围,解题思路为给出m和n,我们分别找到第m-1和n+1个节点,然后让第m-1个节点连在n的前面,第m个节点连在第n+1个节点的前面,就完成了反转,此时要注意m如果等于1的情况,即m为头借点,这时直接让第m个节点连在第n+1个节点前面就完成了任务。给出代码:class Solution {public: Li...
2018-10-07 21:43:33 1116
原创 反转链表(常考)
反转链表是各大互联网公司经常要求手撕的代码,先贴出构造链表、打印链表、反转打印后的链表的全部代码。#include &amp;lt;iostream&amp;gt;using namespace std;struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};...
2018-10-07 20:43:48 178
原创 leetcode917仅反转字母
此题目较为简单,当涉及数组左右满足一定条件反转时,优先想到对撞指针的方法。下面贴出代码,leetcode用时4msstring reverseOnlyLetters(string s) { int l = 0; int r = s.size()-1; while(l&amp;amp;amp;amp;amp;amp;lt;r){ if(((s[l]&amp;amp;amp;amp;amp;amp;gt;='A'&a
2018-10-07 19:07:04 644
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人