自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

algsup

记录自己的成长。

  • 博客(54)
  • 收藏
  • 关注

原创 [位运算]leetcode191:位1的个数(easy)

题目:题解:lass Solution {public: //解法1:C++二进制容器 int hammingWeight_1(uint32_t n) { bitset<32> b(n); return b.count();//返回1的个数 } //解法2:除2取余法 int hammingWei...

2019-09-29 16:07:21 220

原创 [位运算]leetcode371:两数之和(easy)

题目:题解:1)二进制加法存在4种情况:1+1=0(有进位)、1+0=1(无进位)、0+1=1(无进位)、0+0=0(无进位)。仔细一看,若不考虑进位,二进制加法就是两个数异或得到的,所以我们需要将异或之后的结果与进位相加,直到进位为0为止(因为在进位为0时,0与任何数相异或都等于它本身),这样就得到最终结果了。2)进位:因为只有1+1才会产生进位,所以我们将1&1得到的结果左...

2019-09-29 09:37:13 335

原创 Java:测试String与StringBuilder的效率

测试代码:public class test { static void testString(){ String str=""; long start=System.currentTimeMillis(); for(int i=0;i<10000;++i) { str+="xiaoneng"; ...

2019-09-29 08:18:07 472 1

原创 2019 9 28:大三了,该给自己提个醒了

成绩1.如果你背景普通,非名校出身,好好考研,考211,985,这是性价比最快的逆袭方法。太多人因为学校不好,一生十二分努力,因为没有平台,始终处于底层。被压榨。2.大学的成绩很重要,出国,保研,息息相关。有多高,考多高。3.高考失败,出国可以重生,无数当年二本考不上的学渣,经中介包装,出国去了全球前20的顶级名校,或者你可以去读个没有门槛的社区大学,再修学分转校,这么走毕业去了顶级企业的...

2019-09-28 14:42:47 2637 15

原创 [二叉搜索树]leetcode230:二叉树中的第K小的元素(medium)

题目:题解:利用二叉树的中序遍历将二叉搜索树转换为数组,直接返回数组的第k个元素就好了。因为二叉搜索树的所有节点值映射到一条直线上就一个升序的数组,根节点就是其左子节点值与右子节点值的中位数,所以我们利用中序遍历将二叉搜索树转换为数组,然后返回数组中的第k个元素就行了。代码如下:class Solution {public: int kthSmallest(TreeNode...

2019-09-28 11:34:01 222

原创 [进制转换]leetcode171:Excel表列序号(easy)

题目:题解:class Solution {public: //题解:进制转换,26进制转换为10进制 int titleToNumber(string s) { long long result=0; for(auto c:s) { int num=c-'A'+1; //因为字...

2019-09-28 10:18:09 249

原创 [数组]leetcode240:搜索二维矩阵 Ⅱ(medium)

题目:题解·:class Solution {public: //解法1:暴力法 bool searchMatrix_1(vector<vector<int>>& matrix, int target) { if(matrix.empty()||matrix[0].empty())return false; f...

2019-09-28 09:11:08 268 1

原创 C语言:删除C风格字符串中的空格

前言:今天有个小伙伴问我如何删除C风格字符串中的空格,顿时我也蒙蔽了,我每次都是用string的,都没咋用C风格字符串了,后来想了想,帮助他实现了,代码如下:...

2019-09-27 18:16:59 623

原创 [哈希表][摩尔投票法]leetcode169:求众数(easy)

题目:题解:解法1:哈希表,哈希表用来建立元素和该元素频率之间的映射,然后返回频率大于n/2的元素。解法2:排序,先将数组进行排序,由于本题隐含条件就是数组中一定存在众数,所以众数在排序后的数组中,必定位于下标[n/2]处。解法3:摩尔投票法,摩尔投票法遇到相同的数,就投一票,遇到不同的数,就减一票,最后还存在票的数就是众数代码如下:class Solution {publ...

2019-09-27 16:10:37 457

原创 [二叉搜索树][动态规划]leetcode96:不同的二叉搜索树(medium)

题目:题解:class Solution {public: //题解:带备忘录的动态规划 int numTrees(int n) { vector<int> result(n+1,0); result[0]=1; for(int i=1;i<=n;++i){ for(int j=1;j...

2019-09-25 17:25:45 170

原创 [二叉搜索树][递归]leetcode95:不同的二叉搜索树Ⅱ(medium)

题目:题解:class Solution {public: vector<TreeNode*> generateTrees(int n) { if(n==0)return {}; return helper(1,n); } vector<TreeNode*> helper(int begin,int ...

2019-09-25 17:15:30 330

原创 leetcode刷题总结之递归

前言:最近刷完leetcode递归的专题了,无奈本人很菜,关于递归每次都是看大佬的题解,自己也设计不出来递归,今日打算仔细分析递归题,总结以下。递归:在数学与计算机科学中,递归(Recursion)是指在函数的定义中使用函数自身的方法。实际上,递归,顾名思义,其包含了两个意思:递和归,这正是递归思想的精华所在。...

2019-09-25 16:42:52 4274 1

原创 [字符串][递归][双指针]leetcode344:反转字符串(easy)

题目:题解:class Solution {public: //解法1:双指针法 void reverseString_1(vector<char>& s) { int i=0,j=s.size()-1;//双指针,两端同时向中间移动 while(i<j){swap(s[i],s[j]);++i;--j;} } ...

2019-09-24 20:54:04 665

原创 [线性dp][完全背包]leetcode70:爬楼梯(eary)

题目:题解:leetcode官方详细题解代码如下:class Solution {public: //解法1:斐波那契数 int climbStairs_1(int n) { if(n==1)return 1; int first=1,second=2; for(int i=3;i<=n;++i) ...

2019-09-23 23:09:30 233

原创 leetcode刷题总结之前缀树

前言:由于这段时间在学校上课了,刷题也只有每天晚上刷两道题了,不能像暑假那样刷题一肝到底了。前缀树是上个星期开始刷的,leetcode总共有17个前缀树的题目(其中包括3个收费题,所以我把14个免费题做完了),今天总结下,以后复习用。前缀树的定义:前缀树又名字典树,单词查找树,Trie树,是一种多路树形结构,是哈希树的变种,和hash效率有一拼,是一种用于快速检索的多叉树结构。前缀树具体定义...

2019-09-21 17:03:16 5987 4

原创 [前缀树]leetcode1023:驼峰式匹配(medium)

题目:题解:本题虽然在前缀树的tag中,但是感觉和前缀树也没啥关系啊!如果各位有用前缀树做出来的,告诉我下,谢谢。算法:遍历查询项的每个单词,然后与模式串中的字符匹配,分为三种情况:1)查询项的大写字符与模式串的大写字符匹配,两个字符串继续向后匹配2)查询项的大写字符与模式串的大写字符部匹配,表示查询项与模式串匹配不成功(因为查询串不能除了模式串的大写字符)3)其他情况,模式串...

2019-09-21 15:54:06 347

原创 [前缀树]leetcode1032:字符流(hard)

题目:题解:起初使用前缀树导致内存爆了,后改用后缀树顺利通过,不过就是时间有点吃不消了。(后缀树就是每个字符串反向后建立的前缀树,本质还是前缀树。)解题思路:1)从words中提取word,将word反向,建立后缀树。2)在查询的时候,我们将每个字符保存在一个字符串中,每次每个字符都插入到该字符串的首部。然后我们直接在后缀树中查找该字符串的最短前缀能否表示成一个字符串就行了。代码...

2019-09-21 11:21:50 449

原创 [前缀树]leetcode745:前缀和后缀搜索(hard)

题目:题解:代码如下:

2019-09-20 23:17:12 759

原创 C++:map自定义排序

前言:今日做leetcode692:前K个高频单词(medium)这道题的时候,本来以为map可以使用直接用sort排序的,然后导致我在oj一直在通过不了,遂在本地ide调试还是编译不通过。甚至我一度怀疑我lambda写错了,然后换了自定义比较函数也不起作用;然后看了下sort支持二元谓词函数的啊;最后在网上找到相关解释了,记录一下吧。map排序:map中的元素是关键字—值(key-val...

2019-09-20 20:34:39 12823 3

原创 [前缀树]leetcode692:前K个高频单词(medium)

题目:题解:使用map代替前缀树,若手动实现前缀树感觉费力不讨好,最后还是要将<string, int>装到vector进行排序,所以直接用map就好啦。代码如下:class Solution {public: //题解:用map代替前缀树 vector<string> topKFrequent_1(vector<string>&...

2019-09-19 23:02:35 542 1

原创 [前缀树]leetcode720:词典中最长的单词(easy)

题目:题解:代码如下:

2019-09-19 19:36:33 489 1

原创 [整数取余]leetcode7:整数反转(easy)

题目:题解:反转整数的方法可以与反转字符串进行类比代码如下:class Solution {public: int reverse(int x) { int result=0; while(x!=0){ int pop=x%10;//弹出x的最后一个数字 x/=10; i...

2019-09-19 16:34:49 647

原创 负数取余问题

前言:对于两个相同符号的数取余大家都很熟悉,但是对于一正一负的数取余呢?大家可能觉得会很陌生,今天在刷leetcode整数反转这道题的时候,想起了这个知识点,遂打算探讨一番。自然数取余定义分为两种:1)定义1:如果a和d是两个自然数,d非零,可以证明存在两个唯一的整数 q 和 r,满足a=qd+r且0 ≤ r < d(其中q为商,r为余数)。定义1一般作为数学中的取余法则,即两个数...

2019-09-19 16:16:19 49223 11

原创 [前缀树]leetcode676:实现一个魔法字典(medium)

题目:题解:代码如下:

2019-09-18 23:33:40 379

原创 [前缀树]leetcode474:连接词(hard)

题目:题解:主要利用前缀树解题,先建树,然后进行搜索操作。这里简单讲解一下搜索单词,例如寻找catsdogcats,当i为2时,我们在前缀树发现cat是一个子单词,然后开始search(sdogcats),然而发现这个并不是子单词,那就证明已cat作为分界词就错了,我们继续遍历单词catsdogcats,然后以cats作为分界词,这样在继续search(dogcats)就可以了。更多细节...

2019-09-18 21:11:42 330

原创 [链表][递归]leetcode206:反转链表(easy)

题目:题解:解法1:迭代法主要利用三个指针来完成反转的,节点p保存反转好的节点,节点q是用来完成反转的(即由正向转换为反向),节点r是用来带来p、q遍历链表的,但是注意一点,当r为nullptr时,节点q还没有连上p,所以需要连接一下。解法2:递归法1)递归边界:当head为空节点或单个节点时,返回head节点2)单次过程:head->next->next=head...

2019-09-17 18:21:28 711 2

原创 [二叉树][递归]leetcode226:翻转二叉树(easy)

题目:题解:主要是递归解法,其他方法二刷再写,先把递归玩会玩熟练。写出递归三部曲,基本就能解题了:1)递归边界2)递归表达式3)返回值代码如下:class Solution {public: TreeNode* invertTree(TreeNode* root) { //1:写出递归边界 if(nullptr==root||(n...

2019-09-16 15:42:36 172

原创 [链表][递归]leetcode24:两两交换链表中的节点(medium)

题目:递归三部曲:1)找终止条件:本题终止条件很明显,当递归到链表为空或者链表只剩一个元素的时候,没得交换了,自然就终止了。2)找返回值:返回给上一层递归的值应该是已经交换完成后的子链表。3)单次的过程:因为递归是重复做一样的事情,所以从宏观上考虑,只用考虑某一步是怎么完成的。我们假设待交换的俩节点分别为head和next,next的应该接受上一级返回的子链表(参考第2步)。就相当于...

2019-09-16 15:12:34 542 2

原创 Java:静态代理与动态代理

代理模式:为目标对象提供一个代理对象,外部对目标对象的访问,是通过代理委托进来的,以达到控制访问的目的。代理又分为静态代理和动态代理。我们举个很常见的例子: 工厂会生产很多的玩具, 但是我们买玩具都是到商店买的, 而不是到工厂去买的,工厂怎么生产我们并不关心, 我们只知道到商店可以买到自己想要的玩具,并且,如果我们需要送人的商店可以把这些玩具使用礼品盒包装。这个工厂就是委托类, 商店就是...

2019-09-15 15:06:09 193

原创 [数组]leetcode88:合并两个有序数组(easy)

题目:题解:class Solution {public: //解法1:STL算法 void merge_1(vector<int>& nums1, int m, vector<int>& nums2, int n) { nums1.erase(nums1.begin()+m,nums1.end()); ...

2019-09-14 12:16:30 218

原创 [前缀树]leetcode212:单词搜索 Ⅱ(hard)

题目:题解:前缀树+DFS1)关于前缀树的实现,可参考:这里。2)DFS深度搜索二维数组,设置好递归边界+递归式子,每个点向四周进行DFS,存在于前缀树中的字符标记为’#’,在DFS完成之后还原成以前的字符即可。代码如下:class Trie{private: bool is_string; Trie *next[26]; string str; ...

2019-09-14 08:48:40 570 3

原创 Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environ

问题:关于Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environment variable is needed to run this program这个问题的解决方法,不要完全听信网上的话,不然坑死新手…(还好二哥帮我远程解决了,不然我马上又是重装大...

2019-09-13 00:57:57 2917

原创 Oracle VM virtualbax下的ubantu怎么全屏?

1:[设备]->[安装增强功能]2:按Ctrl+Alt+T来启动终端,然后输入以下命令(注意空格!注意路径!注意文件名!)注:这里输入的密码的话,是不会显示的,自己输入完成后,按enter键即可(linux系列的密码都是不显示的,不会像windows一样显示*号)。密码输入完成后,等待一会儿,文件就下载完成啦。参考:win10安装ubuntu虚拟机[全面]基于Virt...

2019-09-13 00:16:27 662

原创 [前缀树]leetcode336:回文对(hard)

题目:题解:第一步:将<单词,下标>存放在hashmap中(使用hashmap代替前缀树),将单词的长度存放在set中。第二步:遍历单词数组,将遍历的到的单词先进行反转:1)第一种情况:单词数组中存在两个长度相等且互为回文的单词。比如:abcd和dcba,当我们遍历到abcd时,将其反转为dcba,然后我们判断dcba是否在map中,并且dcba的下标要和abcd的下标...

2019-09-12 21:49:51 472

原创 [递归]leetcode509:裴波那契数(easy)

题目:题解:class Solution {public: //解法1:递归法 int fib_1(int N) { if(N<2)return N; else return fib(N-1)+fib(N-2); } //解法2:迭代法 int fib_2(int N) { if(N&lt...

2019-09-11 20:54:21 200

原创 [前缀树]leetcode421:数组中两个数的最大异或值(medium)

题目:题解:异或的基本原理就是将两个数字分别转成32位二进制后,进行逐位比较,如果同个位置上的数字不同,则该位为1,否则为0。根据这个原理,我们从左高位进行计算,用一个掩码mask来作为底,其中mask当前位i到左高位的所有位置上的数字为1,其它位置为0,即11…10…0。将数组中的每个元素分别与mask进行与运算,将与运算的结果存进前缀树中。i=31: 10000000000000000...

2019-09-11 19:42:30 460

原创 [前缀树]leetcode211:添加与搜索单词——数据结构设计(medium)

题目:题解:本题是前缀树的一般操作,需要使用dfs来解决遇到.的情况,我们使用dfs递归出在遇到.时,将会遍历root节点的所有children节点的字符串路径,只有有一条字符串路径满足情况就返回true,若都不满足情况就返回false。代码如下:class WordDictionary {private: struct Trie{//建立前缀树 Trie *c...

2019-09-09 21:26:18 622

原创 [2019 09 07]IntelliJ IDEA的代码配色方案

前言:今天开始正式开始用IntelliJ IDEA开始写java了,然后习惯性的换个自己喜欢的主题或者背景,介绍给和我一样刚入门的朋友。主题网站:1、IDEA主题2、IDEA主题补充:导入主题包后代码编辑区的字体大小设置File->Setting->Editor->Color Scheme->Console Font...

2019-09-07 22:45:24 5987

原创 IntelliJ IDEA中scratches and consoles的作用

scratches and consoles的作用:提供了两种临时的文件编辑环境,通过这两种临时的编辑环境,你可以写一些文本内容或者一些代码片段。两种 Scratches 分别是:Scratch files 和 Scratch buffersScratch files:atch files 有着完整的运行和 debug 功能等等,这些文件需要指定编程语言类型并且指定后缀。Scratch ...

2019-09-07 17:15:33 17521 6

原创 [前缀树]leetcode648:单词替换(medium)

题目:题解:本题我们直接使用字符串流来讲句子划分为一个个单词,然后遍历数组,将句子中的每个单词与数组的元素进行比较。对于使用前缀树,我们倒不如直接比较数组中元素第一个字符和单词的第一个字符效率来的快。代码如下:......

2019-09-07 11:18:07 454 3

空空如也

空空如也

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

TA关注的人

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