自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

AAAtang

小白长成了参天小治

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

原创 配环境时候出错

在公司里面配置环境的时候,如果是自研的框架,总会出现各种奇怪的问题?通过和同事匹配一下版本信息,遇事不决,版本先行。各个小组件,可能有出入的。(今日复盘)

2021-03-05 19:58:32 342

原创 关于git的使用(本地代码和远程代码不一样,pull没用)toedit

这是因为在使用时候,需要在有.git等樱草文件的地方去进行git的操作,因为只有在哪里才会有相关的git可操作,需要关于版本的东西目录。所以我的8997分支在gitlab和本地即使我pull了,也没有用。是错误的。以后goland打开路径的时候,要在有git的地方进行打开。这样安装了可视化git插件的时候,才会直接显示出来。go get时候发现某些文件没有权限所以get不下来。...

2021-03-03 17:55:57 725 2

原创 关于Go里面defer的疑难杂症

这是一遍看到别人的blog,在这里把他翻译下,也算是加深印象。原链接Part#1 Defer nil 函数  如果Defer一个指针指向nil的函数,在调用的时候会发生panic错误。  example:func main(){ var run func() = nil defer run() fmt.Println("runs")}错误panic: runtime error: invalid memory address or nil pointer dereference

2020-12-23 16:33:31 229

原创 在经过NAT之后查自己的公网ip

可以通过访问站点`ifconfig.me`获得linuxcurl ifconfig.me

2020-12-16 17:10:37 1359

原创 ubuntu刷新自己dns

修改了hosts文件之后,用sudo /etc/init.d/networking restart 但是这个是暴力重启网络来刷新了dns。可以用sudo /etc/init.d/nscd restart如果报错没有这个文件,就通过sudo apt-get install nscd 安装。

2020-12-16 16:18:16 4721 1

原创 关于vscode连接云服务器

安装ok vscode与ssh-romote插件配置云服务器的安全组,22端口可入站首先确定通过密钥连接。在本地(笔记本)生成一组私钥+公钥。然后将公钥放到云服务器的 ./root/.ssh/authorized_keys文件中(注意是通过root用户才可写入) 在本地生成的公钥:id_resa.pub ,私钥:id_resa。在win下pub后缀是一种文件格式在云服务器上面设置时候,可以设置.ssh目录和authorized_keys文件的操作权限,确保只有root权限的才可以操作【文件.

2020-12-11 16:09:37 892

原创 go中range数组和切片的区别

在go里面有数组类型和切片类型,切片其实是一个数据结构,封装了数组,提供动态数组的特性。在使用range语法糖的时候,range数组:会导致提前复制该数组,然后遍历的都是之前的原始值。range切片:是浅拷贝,拷贝的是该数据结构,共享的是同一个底层数组。package mainimport "fmt"func main() { a := [3]int{1, 2, 3} b := []int{1, 2, 3} //数组range是会复制一个完整副本 for k, v := range

2020-10-05 11:06:37 400

原创 关于go的插件下载(vscode)

跟从该小哥https://blog.csdn.net/lly1122334/article/details/106559754

2020-09-27 17:39:06 357

原创 编译go程序时候遇到的问题/ecdsa_noasm.go:16:14: undefined: signGeneric

报错:/ecdsa_noasm.go:16:14: undefined: signGenericecdsa_noasm.go:21:9: undefined: verifyGeneric解决方案这是有重复的版本,我们要先将go的删除了,然后再 重新安装。rm /usr/local/go

2020-09-24 10:58:07 287

原创 23. Merge k Sorted Lists(k个链表融合)

通过两个链表相互融合,注意如果是单数total,total=total/2+1;并且lists[total/2]=lists[total-1]代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x),

2020-09-12 23:57:11 66

原创 15. 3Sum(三数之和——)

我还以为我写了blog3sum,结果没找都。那就再复习一遍给定阵列nums的Ñ整数,在那里元件a,b,c 在nums使得a + b + c = 0 在给出零总和的数组中找到所有唯一的三元组。(不能重复)注意:解决方案集不得包含重复的三个数。例:给定数组nums = [-1,0,1,2,-1,-4],一个解决方案集是:[[-1, 0, 1],[-1, -1, 2]]思路:如果用列举的方式来做,时间复杂度是O(N^3),  如果需要加速,我们通过先固定一个数字,然后从后面通过双指针的

2020-08-30 17:49:56 172

原创 11. Container With Most Water(容纳最大的水池)

定n个非负整数a 1,a 2,…,a n ,其中每个代表坐标(i,a i)上的点。绘制n条垂直线,使线i的两个端点位于(i,a i)和(i,0)处。找到两条线,它们与x轴一起形成一个容器,以便该容器包含最多的水。注意: 您可能不会倾斜容器,并且n至少为2。思路:这个题就是要找到两个值之间围成的面积,然后求出最大值。矩形,长和宽。影响比较严重的是高,因为宽的增长是线性,而高是自由的。所以使用两个指针来从两边往中间递减,同时只有小的值才移动,因为高比较权重较大code;class Solution {

2020-08-30 16:56:43 113

原创 5. Longest Palindromic Substring(最长回文串)

两个思路:一个O(N^2), 一个O(N)时间复杂度思路一:n^2的是通过从每个节点往两边扩思路二:manacher算法,通过先扩展字符串用#隔开,然后遍历的过程中记录一个当前最大右边界,以当前i 为中心的回文串长度(因为加了#字符,所以相当于就是可以用这个值得出回文串长度),因为是对称的所以很容易得到另外一边的对应那个char思路1:manacher算法:首先加入#分割字符串,因为这样可以单数偶数都计算进去。然后开始遍历。几个状态量:右边界,中心点, 长度数组,最大长度,开始的地方(需要返回字

2020-08-30 16:20:52 115 1

原创 leetcode3. Longest Substring Without Repeating Characters(最长不重复子串)

Given a string, find the length of the longest substring without repeating characters.Example 1:Input: “abcabcbb”Output: 3Explanation: The answer is “abc”, with the length of 3.默认第一思路: 这个思路是我做的时候会第一想到的思路,所以先不看题解。为了找到最长不重复子串,重点就是在于处理两个相同的字符不能在同一个区间里面,

2020-08-30 11:08:37 122

原创 8/28京东笔试第二题(类似零钱兑换2)

设定一组数据,用这个数据组成一个target,每一个数据都是不一样的,所以一共多少种方法。类似于零钱兑换2,但是这里对于求的不是最少,而是总共所有可能。所以我们将之前的循环交换,以1- target 为止在外循环,然后内部循环是每个coin进行循环,注意下标正常。dp[0]=1作为基础。每个第一次的时候都是自己本身,所以只需要加起来就好 dp[i]= dp[ i ]+ dp[i-coin];特定target由coin组成种类数。#include<bits/stdc++.h>using n

2020-08-28 00:40:58 119

原创 (未收录)数组中满足左大右小的数(单调栈)

一个无序数组,找出其中的数:该数左边的数大于该数+该数右边的数小于该数维护一个单调栈,只有当 栈不空且 栈中最后一个数小于该数才pop,因为它已经不满足了左边数要大于该数条件。并且维护一个左边最小值,保证只有当当前数小于这个最小数才push代码:vector<int> getMidNum(vector<int>& nums) { vector<int> ans; int minn = INT_MAX; for (int i = 0;

2020-08-27 00:04:38 137

原创 (高频题目)链表相加(空间O(1))+递归+携带进位

首先,空间为O(1),因为需要空间为O(1)也就是说只有在最后进位还有但是链表已经没有了才能创建node。思路大概就是,设置值用一个链表,然后先将两个已有的节点相加。然后出来后只需要处理多余的节点和carry。注意边界节点。code/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nul

2020-08-26 18:11:39 132

原创 快排求第k大的数

思路就是快排结合第k大。注意两个点:一,你排序的时候,是从小到大地排序,所以如果是找倒数第k大的数字的话,应该返回的是倒数的第k个,就需要转换成n-k 个注意第二个点:在设置进入判断的时候,需要让l<=r 的时候进入判断。因为如果到了最左或者左右边,也需要进入。code#include <bits/stdc++.h>using namespace std;//错在了我的排序是顺序增长的,要看第k大应该是用 low==n-kvoid quick(vector<int&gt

2020-08-24 23:09:17 258

原创 迭代的方式来遍历树(前序中序后序)百度一面

递归的方式来进行遍历树很简单。但是通过迭代的方式遍历树。首先中序遍历中序遍历就主要在于先走到最左节点,然后从这个节点进行左中右的顺序。因为到了最左的节点也要往回走,而为了支持这个回溯类似的方式,用栈来保存数据,进入一个下一个节点的就通过换一个节点继续从开头(所有左部分节点压入)code:void PreOrderWithoutRecursion1(BTNode* root){ if (root == NULL) return; node* p = root; stack<nod

2020-08-19 17:51:53 213

原创 95. Unique Binary Search Trees II(构建唯一二叉树)

给定一个整数n,生成存储值1 … n的所有结构唯一的BST(二进制搜索树) 。例:输入: 3输出:[[1,null,3,2],[3,2,null,1],[3,1,null,null,2],[2,1,3],[1,null,2,null,3]]Input: 3Output:[[1,null,3,2],[3,2,null,1],[3,1,null,null,2],[2,1,3],[1,null,2,null,3]]Explanation:The above output

2020-08-09 19:09:04 188

原创 剑指 Offer 59 - II. 队列的最大值(单调队列)

请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -思路:首先,要保存所有压入的数字,因为pop时返回值,其次,维护最大值当前:但是基于队列的性质,保证先进先出,所以当后面进入的数字,能够影响到此时的最大值的只有前面的比他大的数,所以这就是天然的单调队列的时候,在每次压入的时候,都将小于该数的弹出,然后就维护了一个递减队

2020-08-07 11:53:26 110

原创 剑指 Offer 60. n个骰子的点数(dp)

把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。思路:如果暴力找出所有的解,时间复杂度是6^n;时间复杂度太高了,所以想要加速,然后想到了换硬币的题目, n个骰子,最大和为n6,f(i,j )为骰子是i个时,和为j 的出现次数。则会有:f (i , j) += f(i-1, j-(1到6))这样,就是i个骰子时,是依赖于i-1个骰子的,然后 j

2020-08-06 21:55:28 126

原创 剑指 Offer 62. 圆圈中最后剩下的数字(模拟,约瑟夫环)

思路1:用list来进行模拟,然后进行删除,这种方式注意的是记得删除和迭代器++的时候注意转换为begin。然后可以再过程中判断size和m的取余来加速错误,因为数从一开始到结束都是固定的,不能一直是0-8,0-7减少一个不是减少最大值思路2:通过找出递归公式:m=3n == 1, f=0 n = = 2, f=1n==3 ,f=1f(n, m)=f ((n-1, m)+m)%n就是少一位的被删除的index+m的结果然后再取余(防止溢出)就得到下一个的了。代码: int last

2020-08-06 17:44:21 88

原创 小工具:linux下生成指定大小的文件 dd

接触是在测试fdfs时候,发现upload里面的固定几个测试文件没有,结果open失败了,所以需要字节先创建,就接触到了dd1 要求:生成一个5k大小的文件命令::dd if=/dev/zero of=text bs=5k count=1参数说明:if= 指定输入文件,若不指定则从标准输入读取。这里指定为/dev/zero是Linux的一个伪文件,它可以产生连续不断的null流(二进制的0)of= 生成的新文件名字bs= 生成的文件大小(k,m,G都可以作为单位)count= 表明分几次

2020-08-05 18:06:05 389

原创 剑指 Offer 65. 不用加减乘除做加法(异或+与)

异或:没有进位的加法与:进位的一种方式注意:如果是无符号数,在左移的时候最左边的位不变!(所以为了比卖你,就要强转为unsigned int)再移位;code:class Solution {public: int add(int a, int b) {//思路:异或是没有进位的加法;与 是可以直到进位在哪的方法 int another,res; do{ res=a^b; //没有进位的加法

2020-08-04 00:33:39 123

原创 剑指 Offer 67. 把字符串转换成整数(不能开大的整数比如int参数,不能long)

注意的点:排除空格,还有± 号,并且记录flag==1还是-1大数判断!**重点在于判断的负数的时候,要转换成负数的,因为整数最大值和最小值的绝对值不一样,最小值绝对值大一个。**方法:在判断的时候用==INT_MIN来判断也可以是通过按照不同flag进行计算的方式避免到达整数的最大值+1(负数最大值)不能开大的存储类型时,用 res > (INT_MAX-tmp)/10 来检验。因为res到不了,但是最大值可以变,最小值同理 -res< (INT_MIN+tmp)/10co

2020-08-03 23:45:13 103

原创 工具Navicat出现错误2013

这个错误是因为再填写信息的时候,常规的地方应该填的是127.0.0.1 的地址,用户名是你MySQL服务器的,和密码。ssh去连接的地方才是填的你的远程服务器的ip,密码是你linux的登陆密码。

2020-08-02 13:08:18 5020

原创 495. Teemo Attacking(提莫攻击)

题目:给一个数组,再给一个间隔,数组里的都是正整数,表示从该pos开始的duration都会被覆盖。注意:如果在被覆盖的时候遇到新的开始的点,那就会重新从这个点duration覆盖,之前的清空。并且:注意对于最后一个点的覆盖要加上。思路:在每一个节点的时候,有两种选择,一个是走duration,一个是走到next node(当duration注定会走到那里)两者取最小值就可。code:class Solution {public: int findPoisonedDuration(ve

2020-07-31 21:57:15 118

原创 836. Rectangle Overlap矩形相交

题目:矩形以list表示[x1, y1, x2, y2],其中 (x1, y1) 分别是其左下角的坐标和其右上角(x2, y2) 的坐标。如果两个矩形的相交区域为正,则它们重叠。为了清楚起见,两个仅在角或边缘接触的矩形不重叠。给定两个(与轴对齐的)矩形,返回它们是否重叠。这题关键在于给了的是一个左下角的点和右上角的点!思路:所以我们用排除法,将不可能相交的排除,剩余的就是可能的了。如果他们有相交的,那么一定会出现一个x/y在别人里面。所以通过确定上下边界来排除相交的方法。因为左下点的x就是左边

2020-07-31 20:30:33 112

原创 leetcode 31下一个更大的数字next permutation

题目:给一个数组,按照排序,给出下一个更大的组合顺序,如果当年是最大的数字,那么给出最小的数字。思路:要使得这个数字比当前更大,那就得从后面往前找到第一个往下减少得位,然后再从这个之后找到第一个大于这个target得数,交换,然后再逆序(因为寻找的时候就是以从后往前递增 ,交换后还是递增,为了保证greater,所以要逆序(从target之后)代码:class Solution {public: void nextPermutation(vector<int>& nu

2020-07-30 15:28:40 604

原创 153.rotated 数组找最小值

假设以升序排序的数组以您不知道的某个枢轴旋转。(即 [0,1,2,4,5,6,7] 可能成为 [4,5,6,7,0,1,2])。找到最小的元素。您可以假设数组中不存在重复项。范例1:输入: [3,4,5,1,2]输出: 1不要注意:这题是没有重复的数字,否则如果当前中后都相等的时候,遍历是最好的方式不要注意2: 当left 和 right 相差只有1的时候,除以2 的结果一定为left,所以要在nums[left] 和 nums[right] 的时候判断两者是否相等。如果相等,lef

2020-07-23 12:50:44 101

原创 关于INT_MAX和INT_MIN的获得(7,20shopee一面)

今天在计算字符串转换为数字的时候,忘记了INT_MAX和INT_MIN包含于哪个头文件了。然后贼尴尬,贼显得菜。再此记录以下:首先int 是有符号整数,然后00000000 00000000 00000000 00000000 是无符号最小值。如果要求得无符号得最大值,那么直接对于0取反,接可以了。对于无符号整数得值,有一半是有符号数,有一半是负数,而对于负数最大是比整数最大多一的负数。解释:负数在计算机中都是以补码方式存储的,且没有任何正数的补码是 100000000000000000000 ,所以把

2020-07-20 23:09:04 218

原创 sizeof和strlen 分享

1 sizeof 运算符首先:sizeof是运算符,会在编译期间将里面的东西展开来获取类型,所以里面的任何语句都不会执行。编译期间将里面的类型大小解析出来,传入指针,会获得指针的本身大小,传入数组名字,会获得数组总的占据字节大小。下面看看:指针的大小:64位编译器里面是8字节;2 strlen()函数这个是一个计算该指针指向的字符串的大小;传入的参数只能是 const char 指针*计算的是这个字符串除 ‘\0’ 外的字符串长度1+2 总结综上对于上述两者是完全不同的,一个是基于字符串里面的

2020-07-19 22:18:03 72

原创 【坑】补-关于c++里面运算符的优先级

出问题的两点:& 的优先级比较低,低于了 !=符号的;在数组中出现两次的数题目中,用到了异或,和与,在其中要注意1来左移作为标志位的情况时,和数字相与的结果不是非0即1!而是非0即其他的正数! 所以要通过判断是否==0来区别数字!~附运算符优先级图片:【总结】优先级最高的是第一:括号和++自增自减运算符;第二: 取地址之类的单目运算符(非也是)第三:算符运算符第四:左移右移第五:大于小于等第六 : 逻辑或与等...

2020-07-18 16:26:02 148

原创 剑指 Offer 46. 把数字翻译成字符串

给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。思路:首先用动态规划,一个位置的字符,如果可以和前面的组成数字在10-25之间,那么就可以更新当前位置res为f1+f2 的和。然后往后走。如果不能组合 res=f2 .【用了两个函数主要】string类的 substr(string开始的位置下标,取得长度),和 stoi

2020-07-17 15:21:03 133

原创 使用std::sort遇到问题【解决】

在于sort一个整数数组和sort一个字符串数组,一个为 3 ,30 这两个的顺序是不同的。int 的3是排在30前面(在比较函数里面都是通过 换成字符串比较的)【问题】结果不一样代码部分:int main(){ vector<int> nums={3,30,34,5,9}; vector<string>strs={"3","30","34","5","9"}; sort(strs.begin(), strs.end(), [](strin

2020-07-17 13:31:11 337

原创 剑指 Offer 44. 数字序列中某一位的数字

数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。请写一个函数,求任意第n位对应的数字。思路:m) 数字按照0123。。101112.。开始排序,第n位是什么:int最大是有10位数,去除0第一位,然后每一个不同区间开始都是1pow(10, digit-1) ,区间的位置最后都是9 pow(10, digit-1)*digit个,每次n都会减去前一段的,如果n< 当前区间的个数,就返回

2020-07-17 12:16:25 87

原创 关于系统调用如:read的前世今生

1 函数原型#include<unistd.h>ssize_t read( int fd, void *buf, size_t nbytes);返回值:读到的字节数,若已到达文件尾返回0;如出错返回-1如果read成功,返回读到的字节数,到文件尾返回0. 正常情况肯定都大于等于0. 有错误情况就是-1(返回值)2 重点 :当某一个信号造成中断while readingread() 在读取任何数据之前被信号打断(即由于没有可用数据而不得不阻塞),则它将返回-1并将其errno设置

2020-07-14 12:36:18 360

原创 关于对于const对象取地址后用指针来改变?

首先如果是基础类型的const对象,当用指针指向取其地址,然后解引用改变其值后,由于基本类型可以被编译器优化后,替换值。但是如果用自定义类型后int main(void) { struct TT { int a; int b; }; const TT s = {1,2}; cout << "[s]:" << s.a <<","<<s.b <&

2020-07-04 18:05:26 351

原创 328. Odd Even Linked List(注意是第奇数/偶数个变换,不是值)

给定一个单链表,将所有奇数节点组合在一起,然后是偶数节点。请注意,这里我们谈论的是节点号,而不是节点中的值。您应该尝试就地进行。该程序应在O(1)空间复杂度和O(节点)时间复杂度下运行。范例1:输入:1->2->3->4->5->NULL输出:1->3->5->2->4->NULL方法就是循环,然后将偶放在奇后,特别要先将偶的头先保存。以当前even是否为空,和下一个odd是否为空 条件与作为循环终止条件。code:/** * De

2020-06-14 22:16:17 169

空空如也

空空如也

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

TA关注的人

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