自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ lambda表达式

lambda表达式中[]表示使用的外部变量有传值和引用两种方式[]表示不使用外部变量[&]表示全部用引用的方式[=]表示全部用值的方式[=,&x]表示x用引用,其他的变量用传值

2020-10-17 13:29:07 177

原创 dynamic_cast的用法

#include<ctime>#include <iostream>using namespace std;class CBasic{public: virtual int test() { cout << "Basic" << endl; return 0; } // 一定要是 virtual};class CDerived : public CBasic{public: virtual int test() { c

2020-10-17 13:25:09 314

原创 调整数组顺序使奇数位于偶数之前

调整数组顺序使奇数位于偶数之前,而且奇数与奇数之间的顺序,偶数与偶数之间的顺序不变。使用插入排序int k=0;for(int i=0;i<array.size();i++){ if(array[i]%2==1){ int tmp=array[i]; for(int j=i-1;j>=k;j--) array[j+1]=array[j]; array[k++]=tmp; }}...

2020-09-08 16:34:36 195

原创 右值引用就这么简单

右值引用的相关概念左值和右值的概念右值引用是什么1.move2. 寄存器3.减少拷贝移动构造函数移动左值完美转发左值和右值的概念此处略去1000个字简而言之:1.等号左边的是左值,等号右边的是右值2.++i是左值,i++是右值3.a+b是右值 ,所以fun(x)也是右值。4.无名是右值。其中道理只可意会,不可言传。右值引用是什么1.move用一个比喻来形容,那就是偷天换日,偷梁换柱。move的意思就是把那个值偷过来。我这儿有一个程序,很生动形象 A *a = new A(1)

2020-06-19 15:20:44 367

原创 智能指针就这么简单

C++智能指针基础知识及其实现STL中的智能指针简介先定义一个类auto_ptr(T*)unique_ptr(T*)shared_ptr(T*)weak_ptr(T*)自己实现一个智能指针类模板成员变量构造函数,析构函数重载->获取T指针,重载*获取T指针的值自己实现shared_ptr新增引用计数成员变量在构造函数中引用计数初始化析构函数新增成员函数析构函数实现拷贝构造函数赋值函数STL中的智能指针简介先定义一个类class A {public: A(int a) { this->a

2020-06-19 14:40:07 351

原创 内存池就这么简单

内存池的实现内存池的成员变量内存块的成员变量每个单元的前两个字节不简单哦向内存池申请一个单元的内存释放一个单元的内存测试内存池的成员变量刚开始分配的时候,内存池里面只有一个内存块,这块内存块总共拥有unit_count个单元。如果这块内存块不够用,那么就要再搞一个新的内存块,新增的这块内存块里一共有grow_count个单元。新增的这个内存块要和原来的内存块用链表连起来。相当于在链表的头部插入。memory_block指针就指向了链表里的第一块内存块。unit_size表示了一个单元拥有几个字节。

2020-06-19 12:38:49 364

转载 shell基本知识

shell中单引号和双引号的区别shell中数组的用法root@iZuf64s0djlh8nt1394sygZ:~# array=(1,2,3,4)root@iZuf64s0djlh8nt1394sygZ:~# echo $array1,2,3,4root@iZuf64s0djlh8nt1394sygZ:~# echo ${array[1]}root@iZuf64s0djlh8nt...

2020-01-11 13:38:05 172

原创 python argpase教程

import argparseparser=argparse.ArgumentParser()parser.parse_args()运行结果如下:必须参数import argparseparser = argparse.ArgumentParser()parser.add_argument('echo')#下面这行代表不用输入值#parser.add_argument('ech...

2020-01-11 11:27:29 178

转载 linux中的分号&&和&,|和||说明与用法

“;”分号用法方式:command1 ; command2用;号隔开每个命令, 每个命令按照从左到右的顺序,顺序执行, 彼此之间不关心是否失败, 所有命令都会执行。“| ”管道符用法上一条命令的输出,作为下一条命令参数方式:command1 | command2Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。连续使用管道意味着第一个命令的...

2020-01-03 20:33:49 443

转载 Linux shell中2>&1的含义解释

A.首先了解下1和2在Linux中代表什么在Linux系统中0 1 2是一个文件描述符名称 代码 操作符 Java中表示 Linux 下文件描述符(Debian 为例)标准输入(stdin) 0 < 或 << System.in /dev/stdin -> /proc/self/fd/0 -> /dev/pts/0标准输出(stdout) 1 >, &g...

2020-01-03 20:23:09 191

原创 n&(n-1)到底是个啥

如果n是个奇数 很明显这个式子之后就相当于把最低位的1去掉了,变成比它小了1的偶数如果n是个偶数,n-1就是把n最后的那些0变成1了,把最后一个1变成0了,n&(n-1)就是把最后一个1变成了0了,后面都是0所以n&(n-1)的用途怎么说都是把最后一个0抹去了,可以用来计算刚开始n有几个0,只要每次让n=n&(n-1),当n=0的时候结束...

2019-12-21 11:38:04 2192

转载 查找前k个高频元素

思路一:库函数(一行)class Solution: def topKFrequent(self, nums: List[int], k: int) -> List[int]: return [item[0] for item in collections.Counter(nums).most_common(k)]思路二:堆class Solution:...

2019-12-19 15:09:46 168

原创 佛洛依德的兔子和乌龟,环形链表双指针问题

leetcode287 寻找重复数给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3分析:因为长度为n+1的数组的下标在0-n之间。题目中给出的这个数组的范围在1...

2019-12-16 10:35:37 206

转载 http和https的区别

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比htt...

2019-12-12 17:56:08 180

原创 快速排序的两种写法

p1,p2=-1,0 tmp=nums[p1] while(p2<len(nums)): if nums[p2]<=tmp: p1+=1 t=nums[p1] nums[p1]=nums...

2019-12-07 13:02:26 164

原创 leetcode 164最大间隔

桶排序的思想,一共有n个数,如果放进大于等于n个桶里面,最大间隔将从桶的间隔中取。如果要放进大于等于n个桶里,那么桶的增量应该怎么取。首先要把n个数字去除重复的数字,然后将最大值减去最小值也就是累计的增量,由于最少要设置n个桶,那么一共增加n-1次,可以让增量为(最大值-最小值)/(n-1)取整,桶的个数即为(最大值-最小值)/(n-1)加一后向上取整。class Solution: ...

2019-12-04 12:06:11 177

原创 leetcode155最小栈

class MinStack: def __init__(self): """ initialize your data structure here. """ self.stack=[] self.min_stack=[] def push(self, x: int) -> None: ...

2019-12-03 21:31:12 115

原创 C++动态链接库和静态链接库

库是一些最常用的、成熟的、可复用的代码,库代码编译成目标文件后打包存放。静态 .lib/.a动态 .dll/.soSystem32动态链接库为什么需要链接库?1.底层 2.保护代码CRT C运行时库VC++提供的CRT静态运行时库libc.lib 或者libcd.lib 单线程libcmt.lib或者libcmtd.lib 多线程动态运行时库msvcrt.dll msvcr...

2019-11-27 14:49:52 295

原创 vim常用命令

sp max.c 在打开一个文件的时候打开另一个ctrl+w+向下的箭头 跳转到下一个9 dd 剪切从这行开始的9行p 粘贴wqa 保存所有

2019-11-26 15:11:43 158

原创 gdb常用命令

pwdgdb lstartp a 查看a的值n 换行s进入一个函数bt 查看函数堆栈f 1跳到堆栈中某个函数从高到底 系统内核栈自由分配段堆数据段代码段

2019-11-26 14:54:40 137

原创 C++封装基础知识

对象数组A a[3] 栈A *p=new A[3] 堆全局、常量、代码delete[]p拷贝构造函数A a(const A&b)深拷贝和浅拷贝浅拷贝指针指向同一块内存 ,内存覆盖 不能重复释放this指针参数和成员重名的时候用,所在对象本身的地址const修饰成员函数,不能修改数据成员的值。实际是const修饰了this指针常量成员函数只能用初始化列表常对象调用的...

2019-11-26 14:40:24 275

原创 前中后序遍历非递归写法

class Solution: def inorderTraversal(self, root: TreeNode) -> List[int]: ans=[] stack=[] while len(stack)!=0 or root: while(root): ...

2019-11-25 17:14:30 351

原创 leetcode135. Candy

每个小孩必须至少有一颗糖果,相邻的小孩分数高的必须比分数低的糖果多。问最少分出去多少糖果?进行两次遍历第一次从前往后,如果后面的比前面的分数高就+1第二次从后往前,前面的比后面的分数高就+1class Solution: def candy(self, ratings: List[int]) -> int: candies=[1]*len(ratings)...

2019-11-23 22:54:07 115

原创 leetcode134. Gas Station

题目大意是给定一系列的加油站可以加的油量和每两个加油站之间的耗费的油量。求经过所有加油站一圈的方案。提示:贪心算法加油站加的油量-路上耗费的油量就是下一站的初始油量,如果这个油量是负的,那么显然是不能在上一站出发的。那么只能是从下一站开始,或者下下站,或者上一站的上一站开始的。那么start指针指向下一站。这样从头至尾试一遍,就可以知道哪一站出发是有可能的。如果没有方案的话,那么加的总的油量...

2019-11-23 16:00:18 158

原创 leetcode133. Clone Graph

"""# Definition for a Node.class Node: def __init__(self, val, neighbors): self.val = val self.neighbors = neighbors"""class Solution: def cloneGraph(self, node: 'Node') -&...

2019-11-23 15:54:46 126

原创 leetcode126. Word Ladder II

you are offered a list of words and an initial word and a destination word.your task is to change a letter at a time and reach the end word.when I see this question,BFS suddenly bump upon me.but ther...

2019-11-21 11:39:13 169

原创 leetcode124. Binary Tree Maximum Path Sum

在树里面找一条不走回头路的路,使沿途的节点值的和最大。对于每一个节点,都考虑该节点在内的最大的值,和全局变量进行比较然后返回该节点在内的左子树或者右子树。# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# sel...

2019-11-20 18:17:40 96

原创 leetcode123. Best Time to Buy and Sell Stock III

题目大意是给你一些股价,选择买入和卖出,使赚得最多,只能买入后卖出,并且只能买卖两次。双指针和动态规划的思想。一个指针从前往后指,记录下从开头到当前的赚最多的一次买卖一个指针从后往前,记录下从当前到数组末尾赚的最多的一次买卖同时加上当前从前往后的买卖,与ans进行比较。class Solution: def maxProfit(self, prices: List[int]) -...

2019-11-20 16:24:50 104

原创 leetcode114 Flatten Binary Tree to Linked List

the purpose of this question is to let you recover the memory about post order tranverse.Just as the post order tranverse, to solve this problem,you have to solve the left subtree of the root and the...

2019-11-15 20:07:10 104

原创 判断一棵树是不是二叉排序树

# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def dfs(self,root...

2019-11-13 17:03:05 263

原创 leetcode 95 所有的二叉排序树

首先是递归的解法,# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def tre...

2019-11-13 14:48:00 138

原创 leetcode92 reversed Linked List

因为是中间一部分发生逆转,最后的字符串为 左正序链表+中间逆序链表+右边正序链表所以要安排几个指针分别存放左正序链表的头和尾,中间逆序链表的头和尾,右边正序链表的头。首先我们要给链表加个空头,因为有可能从第一个数字就开始旋转。然后先找到左索引的前一个数字,也就是正序链表的尾指针再找到右索引,从左索引到右索引的链表要进行逆序,可以依次逆转,因此要设置逆转完的头指针和尾指针,只要头指针不是右...

2019-11-12 13:38:21 122

原创 leetcode65 Valid Number

题目大意是给一个字符串判断是不是浮点数思路是从前往后看每一个字符如果是小数点的话,那么前或者后必须要有数字,并且不能在e后面如果是e的话,那么必定不是在开头或者结尾如果是正负号的话,那么一定是在开头或者e后面,并且后面一定要有数字class Solution: def isNumber(self, s: str) -> bool: s=s.strip...

2019-11-12 11:48:27 111

原创 leetcode 85. Maximal Rectangle

这道题和84这道题非常类似,唯一不同的地方就是这道题需要遍历每一行,套用84这道题的思路,这道题就是每一行上面有高低参差不齐的柱子,求每一行上面的最大矩形,最后取最大值就是最大的矩形。最大矩形怎么求的问题再重申一遍。建立一个栈,这个栈里面装的都是依次从后往前递减的小于该高度的位置索引。对于栈里面大于该高度的,就pop出来,并计算面积(j-stack[-1]-1)*hclass Soluti...

2019-11-07 10:21:28 108

原创 leetcode81 search in Rotate Array

没重复数字class Solution: def search(self, nums: List[int], target: int) -> bool: left,right=0,len(nums)-1 while left<=right: mid=(left+right)//2 ...

2019-11-04 12:23:27 186

原创 leetcode76. Minimum Window Substring

题目大意是给出一个字符串s,和一个字符串t,求最短的s子串,其中包含了t的所有字母。这道题目最让人受益匪浅的是两个字符串的记录字符出现的次数的比较方法,我原以为逐个去比较。想不到居然是一加一减的形式。t中的每个字符出现的次数-遍历s的过程中的子串中的字符出现的次数如果为正,说明子串中的字符不够如果为零,说明正好如果为负,子串中的字符多了其次是通过子串的头尾指针分别加减字符的数量。如果...

2019-11-03 14:48:44 103

原创 每日刷题总结

Leetcode 61 rotatelist 这道题要循环右移k位。想到双指针,一个先移动k位。然后当他移动到尾指针的时候停下,交换next。需要注意的地方是循环移位取余。...

2019-11-02 10:51:00 136

原创 leetcode60 Permutation Sequence

给出n和k求由1-n的数字组成的第k大的数本来想尝试一个个列举的,然而超时了。因为是n的阶乘的复杂度。首位为1的排列总共有(n-1)!个已知前两位的排列共有(n-2)!个那么第k个排列k//(n-1)!就是第一个数取当前剩余数字的第几个k%(n-1)!//(n-2)!就是第二个数取当前剩余数字的第几个class Solution(object): def getPermut...

2019-10-31 19:36:02 122

原创 leetcode48旋转矩阵

先沿着对角线对称 变成矩阵的转置然后把前面的列和后面的列调换class Solution: def rotate(self, matrix: List[List[int]]) -> None: """ Do not return anything, modify matrix in-place instead. """ ...

2019-10-30 09:37:50 460

原创 leetcode45Jump game

Given an array of non-negative integers, you are initially positioned at the first index of the array.Each element in the array represents your maximum jump length at that position.Your goal is to r...

2019-10-30 08:19:18 82

空空如也

空空如也

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

TA关注的人

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