自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 面试整理之计网(整理ing)

https://www.zhihu.com/question/32255109https://coolshell.cn/articles/11609.htmlhttps://hit-alibaba.github.io/interview/basic/network/TCP.htmlOSI参考模型应用层:针对特定应用的协议,并规定应用程序中通信相关的细节 表示层:应用处理的数据...

2018-04-10 12:27:34 650

原创 笔记整理之数据结构(查找 二分查找 散列表查找)

二分查找int BinarySearch(int *arr, int len, int key) { int low = 0, high = len - 1, mid; while (low < high) { mid = low + (high - low) / 2; if (arr[mid] < key) { ...

2018-04-09 13:31:41 246

原创 笔记整理之数据结构(树)

二叉排序树性质:若左子树不为空,左子树上所有节点的值小于它根节点的值;若右子树不为空,右子树上所有节点的值小于它根节点的值。查找:根据二叉树性质,递归,若找得到返回该节点,若找不到,则返回遍历的最后一个节点。插入:根据查找返回的结果判断是否存在等值节点,若不存在,则插入,若存在则判断该节点的值和插入值的大小从而决定插在左子树或右子树处。删除:遍历查找到该节点,若该节点是叶节点,直接...

2018-04-09 10:25:43 733

原创 逆元求组合数

题目给一个歌单固定长度为K 有两种歌:X首长度为A,Y首长度为B的歌,A!=B 问有几种组合搭配 如: 输入 K = 5,A = 2 X = 3 B = 3 Y = 3 输出 9 由于结果比较大,因此输出结果取1000000007的余数。思路腾讯春招实习笔试题……用自己的方法瞎做最后发现除数那里的取余不知道怎么取。问了yz大佬,给我一篇博客,大概是“逆元...

2018-04-09 09:17:26 2921 2

原创 笔记整理之数据结构(图的深搜广搜)

广度优先搜索(队列)一个顶点出队列,它的子节点进队列typedef struct { char vexs[MAXSIZE]; int arc[MAXSIZE][MAXSIZE]; int numV, numE;} MGraph;bool visited[MAX];void DFSTraverse(MGraph G) { for (int i...

2018-04-07 20:18:08 430

原创 笔记整理之数据结构(几种常见排序方法 希尔 归并 堆排序 快排)

前言对几种排序方法进行简单描述和放上代码希尔排序把一个待排序的数组划分为几个部分,每次拿第i+1部分第j位的数字和第i部分第j位的数字进行比较,如果前者比较小就互换位置,否则不用。// 希尔排序void shellSort(int *arr, int len) { int increment = len; do { increment = ...

2018-04-07 12:18:38 173

原创 连续最大子字符串 Longest Common Substring

题目LintCode 79. Longest Common Substring子字符串和子序列相比,需要连续,因此和上一道题会有一些不同,需要取每个连续子串长度的最大值。代码class Solution {public: /** * @param A: A string * @param B: A string * @return: th...

2018-04-05 14:06:14 467

原创 [编程题] 构造回文

前言记不太住学过的东西……还是写个博客方便以后复习。题目描述给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢? 输出需要删除的字符个数。输入例子1:abcda google输出例子1:2 2题目来源:腾讯17年求暑期实习笔试[编程题] 构造回文思路将字符串反转,再和原来的字符串找到最大(不连续)公共字符串...

2018-04-05 13:04:13 121

原创 字符移位【大小写字母相对位置不变】

题目将字符串的所有大写字母排在小写字母的后面,相对位置保持不变。即:asfFdfADaFsdC ====> asfdfasdFADFC上周的网易笔试题,我想了很久都没有头绪,今晚想了一下发现知道怎么做了qaq又发现也是腾讯17年秋招实习的题目。题目思路例如:asfFdfADaFsdC从后往前找大写字母,如果大写字母在字符串最后一位就不用管,往前看;如果遇到...

2018-04-05 11:17:06 557

原创 面试整理之操作系统(一)

前言前几天腾讯第3次一面通过了然后被取消赶着走校招路线= =还是要继续努力的,把之前整理的操作系统面试知识点放在博客上知识点主要整理自教材,以及零零碎碎参考了一些博客,等晚点再放参考链接。1、进程和线程的区别进程:一个程序在一个数据集上的一次运行过程。系统资源分配的单位。 一个程序在不同数据集合上运行或一个程序在同样数据集上的多次运行都是不同的进程。进程是独立的,...

2018-04-04 15:23:32 3262

原创 2. Add Two Numbers

题目2. Add Two Numbers解题思路就是两个链表相加的故事。和discuss高赞解法不同,我的解法是在原来的某条链表上直接相加,代码可能稍微复杂一点= =因为可能会有进位的情况出现,需要考虑在最后会增加一个节点。具体代码/** * Definition for singly-linked list. * struct ListNode { * in...

2018-03-22 19:28:40 99

原创 关于牛客网剑指offer编程题思路(栈和队列篇)

相关题目来源牛客网剑指offer编程题_栈和队列解题思路1. 用两个栈实现队列这道题阿里电话面试的时候问过,本来很简单的,当时太不自信了qaq首先一个stack是作为接受队列的push输入,另一个stack作为输出pop,用效率比较高的方法是要pop的时候检查一下stack2是否为空,不为空则直接pop,为空则要把stack1所有元素倒给stack2。参考: htt...

2018-03-22 15:07:48 282

原创 关于牛客网剑指offer编程题思路(链表篇)

前言最近在刷牛客网的剑指offer编程题,先从链表刷起。分别介绍每道题的思路,仅供题解参考和作个人总结,不包含代码,避免剧透。其中有一道题是包含二叉树的,就划到二叉树去,此处略过不表。相关题目来源牛客网剑指offer编程题_链表解题思路解题时需检查该节点是否存在,是否为NULL。1. 链表中倒数第k个结点需要两个指针,快指针先行k步后,快慢指针再同时前进,最...

2018-03-22 13:27:16 537

原创 240. Search a 2D Matrix II

题目240. Search a 2D Matrix II解题思路这道题与74. Search a 2D Matrix的不同在于这道题目的矩阵是左上角的数字一定比右下角的大。这道题我是看discussion的题解做的,先把初始位置定在右上角,这样向下移就是增大,向左移就是减小,即有增大减小两个不同方向。如果把初始位置定在左上角,向右移和向下移都是增大,即两个方向都是增大,无法确定

2018-01-13 20:32:19 130

原创 121. Best Time to Buy and Sell Stock

发现这道题和122. Best Time to Buy and Sell Stock II这两道题都在之前做了,不过121这道题还没有写博客,就重新做了一遍。题目121. Best Time to Buy and Sell Stock解题思路题目就是问一组数字中前后两个下标为i和j的两个数字(i > j)的差(prices[i]-prices[j])最大如果是用两个嵌套循环去做

2018-01-13 19:12:37 108

原创 74. Search a 2D Matrix

题目74. Search a 2D Matrix解题思路这道题本质就是二分搜索法=-=首先给出的m*n矩阵是从上而下从左到右的递增,也可以看作是一个递增的长度为m*n一维数组,通过二分搜索找到目标数字具体代码class Solution {public: bool searchMatrix(vectorvectorint>>& matrix, int target

2018-01-13 18:42:53 121

原创 63. Unique Paths II

题目63. Unique Paths II解题思路这道题比Unique Paths的操作多了一个要判断是否有障碍,即格子是否为1如果是最上边或最左边格子,那么第一个数字为1的格子之前的所有格子路径数量都为1,其他的包括第一个数字为1的格子以及之后的格子,路径数量都为0。如果不是最上边或最左边格子,如果该格子是障碍,则跳过如果该格子不是障碍,该格子的当前路径数量等于它上边和

2018-01-13 18:11:58 102

原创 62. Unique Paths

标题62. Unique Paths解题思路题目问从左上角走到右下角,只有右或下两种走法的情况下,有多少种路径可走。很明显是动态规划的题目,从左上角走到当前的格子的路径数量等于从左上角走到当前左边格子的路径数量加上从左上角走到当前上边格子的路径数量之和。有几种特殊的情况,如当前格子在最上边或最左边,当前格子的路径数均为1。若是只有一个格子,路径总数量就是1。具体代码

2018-01-13 17:42:15 172

原创 55. Jump Game

考前把老师上课讲的题目稍微回顾一下~题目55. Jump Game解题思路题目意思是根据给出的数组,每个数字就是当前位置能走最远的步数。问能否走到最后一个数字。要想走到最后一个数字,就必须保证走的数字里面没有0,否则走到数字0意味着无法继续走下去。本题思路也比较简单,设当前位置是下标为i的数字,目前能走最远的下标是reach,更远步数只能由0-reach之间的数字i能达到,

2018-01-13 16:48:53 108

原创 算法概论8.3

中文翻译题目 吝啬SAT问题是这样的:给定一组子句(每个子句都是其中文字的析取)和整数k,求一个最多有k个变量为true的满足赋值——如果该赋值存在。证明吝啬SAT是NP-完全问题。题目思路要证明吝啬SAT是NP-完全问题,需要证明吝啬SAT是NP问题,并将SAT归约到吝啬SAT即可证明过程证明吝啬SAT是NP问题NP问题是:一个问题的解可以在多项式的时间内被证true或证false。 由

2017-12-31 18:13:44 139

原创 浅析negroni-gzip 过滤器的源码

源码来源:negroni-gzipgzip能对数据进行压缩,从而使服务端向客户端传输数据的速度加快。以下对源码的分析是基于源码注释加上自己在谷歌上搜索入header和Sec-WebSocket-Key等知识后的理解,由于时间原因没有深入使用过gzip,很可能存在错误请指正~// 以下的压缩常量来自于compress/gzip 包const ( encodingGzip = "gzip"

2017-11-24 22:56:45 179

原创 net/http/server.go部分代码的解释

写本次作业看了net/http一些函数,本篇博客主要解释一些我在练习或使用过的api。func HandleFunc(pattern string, handler func(ResponseWriter, *Request))用来注册路由,即,自行设置路由规则,pattern为URL的部分路径,handler为该路径对应的处理函数。当pattern为“/”时,默认匹配所有路劲。当request发送

2017-11-09 21:58:19 380

原创 合并两个已排序链表

题目109. Convert Sorted List to Binary Search Tree解题思路注意节点是否为空节点,根据保留其中一个链表的当前节点的前一个结点的指针,来对后面的结点进行插入。具体代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *n

2017-10-29 23:02:30 137

原创 581. Shortest Unsorted Continuous Subarray

题目581. Shortest Unsorted Continuous Subarray解题思路题目要求找出最短连续需要排序的数字长度。我的思路是如果数字长度<= 1,一定不用排序,返回0长度>1,从第2位数字开始遍历,找到比前一位nums[i-1]大的数字nums[i],初始化第一个需要排序的下标begin=-1,比nums[i]大的数字下标为is_larger=-1:从i - 2开始往前遍历

2017-10-23 10:43:26 180

原创 445. Add Two Numbers II

题目445. Add Two Numbers II解题思路这道题有点麻烦……题目的意思是,举个栗子:L1:7 -> 2 -> 4 -> 3 L2: 5 -> 6 -> 4从后往前一一对应相加,还需要考虑进位,得到新链表:7 -> 8 -> 0 -> 7题目要求不准把链表反转。我第一个思路是分别计算出2个链表的和,把两个和相加得到的数不断去%10创建新链表。如果链表比较短这个方法是可以

2017-10-15 22:00:51 124

原创 557. Reverse Words in a String III

题目557. Reverse Words in a String III解题思路遇到空格就把之前的单词反转;到结尾的时候也要做一次反转具体代码class Solution {public: void swap(string &s, int start, int end) { while (start < end) { char tmp = s[sta

2017-10-08 21:38:49 161

原创 CCI(2)-- Arrays and Strings

题目给一个int类型的NxN矩阵,旋转90°解题思路书里的解题思路是把矩阵从外到里按层遍历,每次遍历过程中对四边的每一个数字进行遍历。先上一个4x4矩阵的代码:void rotate(int matrix[4][4], int n) { for (int layer = 0; layer < n / 2; layer++) { int first = layer;

2017-10-08 10:52:28 190

原创 CCI(1)-- Arrays and Strings

前言在知乎上有人推荐了《Cracking the Coding Interview》这本书,打算找时间学习学习,会做一些总结笔记之类的东西就顺手放到博客上,话说vsc换图标了……贼丑让人怎么好好打代码了qaq人总是需要找各种各样慰藉的理由,有时候努力是一种慰藉,习惯了做某事,一直做某事就会很安心,习惯去努力可能也会有同样的效果吧?题目Arrays and Strings检查一个仅有a-z的字符串是否

2017-10-07 12:04:51 178

原创 605. Can Place Flowers

题目605. Can Place Flowers解题思路思路比较简单,找到一个连续3个都是空位的位置即可。需要注意的点:数组最首端有连续2个位置或最尾端有连续2个位置即可,不需要3个位置注意花坛实际可容纳花的位置可能大于花的数量具体代码class Solution {public: bool canPlaceFlowers(vector<int>& flowerbed, int n)

2017-09-26 14:24:00 171

原创 219. Contains Duplicate II

题目219. Contains Duplicate II解题思路这道题如果用嵌套循环会超时,所以我用了map。思路简单,有2个点需要注意:当nums为空或k为0的时候一定是falsek有可能大于nums数组长度具体代码class Solution {public: bool containsNearbyDuplicate(vector<int>& nums, int k) {

2017-09-26 10:40:01 171

原创 88. Merge Sorted Array

题目88. Merge Sorted Array解题思路用2个指针分别对两个数组同时从后向前遍历,哪个指针指向的数字大,第一个数组尾端的数字就是哪个。举个栗子:nums1: [4 5 6 0 0 0] 3nums2: [1 2 3] 3nums1的指针 p1:2 nums2的指针 p2:2 对nums1从最尾端向前遍历 i = 3 + 3 - 11:nums1[p1] > nums2[p2],

2017-09-26 09:18:52 128

原创 27. Remove Element

题目27. Remove Element解题思路和上一篇博客思路是差不多,就是只保留非val的数字即可具体代码class Solution {public: int removeElement(vector<int>& nums, int val) { if (nums.empty()) return 0; int t = 0;

2017-09-24 19:30:51 121

原创 26. Remove Duplicates from Sorted Array

题目26. Remove Duplicates from Sorted Array-leetcode解题思路我的思路是,遍历遇到重复的数字就设为-1000000(一个不会出现在数组里的数字),第一个-1000000与其后面第一个不重复的数字进行交换位置,最后-1000000都会排列在数组尾部。我的思路其实有很大的缺陷,非要特定搞一个“不会出现在数组里的数字”,后来又是去看了discuss……还是da

2017-09-24 19:17:54 133

原创 119. Pascal's Triangle II

题目119. Pascal’s Triangle II解题思路先去百度一下Pascal’s Triangle是什么玩意,然后可以发现每一行左右两边都有1,中间的数字是上一层数字相加,所以就搞个循环来就行了。(因为思路简单就不多加解释了,多出的时间留着去刷leetcode(逃具体代码class Solution {public: vector<int> getRow(int rowIndex

2017-09-24 18:34:20 131

原创 643. Maximum Average Subarray I

题目643. Maximum Average Subarray I解题思路遍历找出连续k个和最大的数字,最后返回和/k即可。这道题目思路简单。具体代码class Solution {public: double findMaxAverage(vector<int>& nums, int k) { double maxsum = 0; for (int i =

2017-09-24 16:17:47 165

原创 278. First Bad Version

题目278. First Bad Version解题思路很明显就是二分搜索,但是被溢出坑了很久一直超时qaq 超时的解决方法:类型转换:long long int mid = ((long long int)left + (long long int)right) / 2;防溢出代码:int mid = left + (right - left) / 2;(Binary search alg

2017-09-24 15:07:19 137

原创 35. Search Insert Position

题目35. Search Insert Position解题思路找到合适的位置插进去,有几个位置需要注意:terget等于某个数字或第一次大于某个数字,返回该数字的下标target比所有数字都大,返回数组长度~具体思路class Solution {public: int searchInsert(vector<int>& nums, int target) { if

2017-09-24 11:13:03 130

原创 674. Longest Continuous Increasing Subsequence

题目674. Longest Continuous Increasing Subsequence解题思路长度<2的,返回1长度≥2的,用一个标记increase记录当前升序数组的长度,直到升序停止,再与先前最长升序数组的长度比较取最大具体代码class Solution {public: int findLengthOfLCIS(vector<int>& nums) {

2017-09-24 09:36:03 134

原创 628. Maximum Product of Three Numbers

题目628. Maximum Product of Three Numbers解题思路看了discuss才AC的……一开始想到直接用快排排序选出前3个最大的数字,但遇到了有负数的情况就WA,然后去看了discuss才知道也要选出最小的两个数字(可能都是负数可以负负得正),最后再比较哪3个乘起来大就选哪个。我的思路缺陷在于没有考虑到有负数的情况和负负得正的定理。具体代码快排大法好……两年死活记不住的快

2017-09-23 21:57:58 300

原创 268. Missing Number

题目268. Missing Number解题思路与之前那道题有些相似,也是遍历并让数字归位,因为只有一位数字丢失,假设数组长度为n,数组中的数字在[0,n]之间,如果丢失的数字x范围是0≤x≤n-1,则数组最大的数字n必然无处归位(数组下标最大为n-1),则把n所在位置的数字设为-1,遍历结束后-1所在位置就是没有归位的数字,也就是丢失的数字;如果丢失数字是n是话,那么数组所有数字都归位并且没有-

2017-09-23 21:16:29 146

空空如也

空空如也

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

TA关注的人

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