- 博客(25)
- 资源 (1)
- 收藏
- 关注
原创 LeetCode 74. Search a 2D Matrix 二维有序数组中找数字
剑指offer上的原题要点就是从右上角开始查找如果target比该值小说明该值往下都大于target, 故该值往下所有元素舍弃如果target比该值大说明该值往左的元素都小于target,故该值往左的所有元素舍弃直到找到该值或者越界不存在。class Solution {public: bool searchMatrix(vector<vector<int>>&a...
2018-02-26 21:00:14 194
原创 73. Set Matrix Zeroes 尽可能小的空间复杂度问题
题意:如果二维数组中有1个0, 则把那一行和那一列都变为0要求空间复杂度小于O(m + n)于是我的方法是O(m)空间复杂度每次遍历1行,如果发现是0,就把 列清零flag[列号] 置1如果那一行发现过0,则整行清0全部行都这样处理后,再对列进行处理,如果flag为1,就清零class Solution {public: void setZeroes(vector<vector...
2018-02-26 20:47:47 252
原创 MYSQL快速复习笔记
显示当前所有的可用数据库SHOW DATABASE; 显示当前数据库内可用表SHOW TABLES ;显示某个表中的所有属性信息SHOW COLUMNS FORM 表名SHOW STATUS 显示广泛的服务器状态SHOW CREATE DATABASE/TABLE 显示创建库或表的SQL语句是啥SHOW GRANTS 显示授权用户SHOW ERRORS SHOW WARNINGS 显示服...
2018-02-25 00:20:58 348
原创 APUE读书笔记——高级进程通信(管道)
假设我们要将一个文件的数据,通过more程序来显示但不希望建立临时文件, 即先复制整个文件,再用more来展示我们可以把文件的数据塞入一个管道, more程序(由子进程excel启动)读这些数据,并显示在屏幕上和直接more一个文件有啥区别???#include "apue.h"#include <sys/wait.h>#define DEF_PAGER "/bin/more"...
2018-02-24 21:45:35 285
原创 APUE读书笔记——线程同步(条件变量,屏障)
什么是同步? 就是让线程之间按照一定的顺序去执行,例如线程A生产了一个物品,线程B才可以去执行消费。为什么不能直接用锁去做同步?例如设定锁X,锁Q线程B要消费一个物品,则对生产队列做检查(先对队列加锁保护),即对X加锁,若X已被锁,则阻塞。即 加锁Q 加锁X 消费 解锁Q 当线程A生产了一个物品时, 将锁X解锁, 线程B唤醒,开始消费。即 加锁Q 生产 解锁X 解锁Q但是这有...
2018-02-24 14:16:31 255
原创 LeetCode 71. Simplify Path 求绝对路径,字符串处理题
字符串 处理题注意以下几点即可: //// 即连续的/ /... 则...是目录名或文件名,而非..和. 空的输入,为/class Solution {public: string simplifyPath(string path) { vector<string> spath; string sdir; ...
2018-02-24 12:43:18 187
原创 LeetCode 64. Minimum Path Sum 二维路线最短路径
这里直接用的是二维,每次判断左边小,还是上边小,然后做dp。#define INF 0x7ffffffclass Solution {int pathl[1000][1000]; public: int minPathSum(vector<vector<int>>& grid) { int m = grid.size(), n =...
2018-02-24 10:49:00 424
原创 APUE读书笔记——线程互斥(互斥量、读写锁)
这里以文件的引用计数做例子。什么是引用计数? 即指向这个文件的链接数。 只有当引用计数为0时,才能删除该文件,否则每一次删除仅仅是i节点的引用计数减一。如果不引入锁, 那么当同时执行两次引用计数相减时,就会出现计数不准确的情况。一、简单的锁操作#include "apue.h"#include <pthread.h>#include <stdlib.h>str...
2018-02-23 22:11:05 407
原创 APUE学习笔记——线程创建和退出
一、线程的创建这个程序让主进程 启动一个线程, 主进程和线程都打印一次 PID(进程ID)和TID(线程ID)。#include "apue.h"#include <pthread.h>pthread_t ntid;void printids(const char *s){ pid_t pid; pthread_t tid; pid = getpid(); /...
2018-02-23 20:54:58 269
原创 LeetCode 63. Unique Paths II 带障碍的求终点路径数量
起点的可行路径数量为1.接着从上往下,从左往右遍历每个点。从起点到每个点的可行路径数量 = 左边点的可行路径数量 + 上边点的可行路径数量若该点为1,则可行路径数量为0则最终可知结果。复杂度为O(m*n)class Solution {public: int uniquePathsWithObstacles(vector<vector<int>>& ob...
2018-02-23 15:33:15 453
原创 LeetCode 62. Unique Paths 组合数的计算
class Solution {public: int uniquePaths(int m, int n) { m--;n--; int cdown = m + n; int cup = m < n?m : n; int k =cup; long long ans = 1;; while...
2018-02-23 13:19:00 153
原创 LeetCode 61. Rotate List 链表的右循环
简单的链表题,注意题意就行,是右循环。先遍历到最后一个节点,计算出链表总长。并用栈去保存遍历过的点。我们将最后一个节点移动到第一个点并利用栈去获取他的上一个点,继续循环操作。注意k>链表总长的情况此时应该取k = k%len/** * Definition for singly-linked list. * struct ListNode { * int val; * ...
2018-02-22 23:18:02 148
原创 TinyHttp学习(二): 代码分块解释以及相关问题
源码见:这里我们按照时间线性过程来描述整个代码过程,并在每一块提出一个问题,来解答为什么要这么选择。一、建立Listen监听我们启动服务器程序,进入main函数则我们先建立了服务器的监听,便于与即将来到的请求启动TCP连接。 建立监听的函数为startupint startup(u_short *port){ int httpd = 0; struct sockaddr_in name;...
2018-02-22 21:38:07 311
原创 TinyHttp学习(一): 基础知识学习和该项目的需求
TinyHttp是一个非常棒的学习项目, 短短500行便实现了一个轻量级的HTTP服务器,对于我们学习网络编程和HTTP非常有帮助。这里先提供一下学习该项目必备的基础知识,着重面向对HTTP和socket编程毫无概念的新手朋友们。一、HTTP协议基础 1.HTTP消息格式通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一...
2018-02-22 21:00:48 615
原创 C++笔记整理
把自己印象笔记中所记录的一些C++知识点整合了一下,可用于面试前对C++知识的快速回顾。不过并不全,只是自己笔记中的摘要,重要的还是系统和踏实地学习。每个知识点不分顺序。1.typeid是什么typeid用于类的类型检查检查是否是同一类型一般用于指针类D d;C *p=d;typeid(*p)==typeid(D)则满足返回类型是type_info2.define的一些注意点#define a 1...
2018-02-18 14:33:28 277
转载 【转载】 C++和java的区别
Java从诞生起就一直和C++有着密不可分的关系,但是Java和C++之间还是存在着细微的差别的,这些差别一方面体现了Java在优化C++语言方面做出,那么本文就谈谈C++和Java之间那些区别,笔者假设你对C++有一定程度的认识。本文的组织思路是首先是对两者相似的语法规则上进行对比,然后在针对两种语言特有的语法规则进行对比。1.从数据类型上 Java是一种强类型语言只有八种基本的数据类型,分...
2018-02-18 14:13:48 179
原创 LeetCode 60. Permutation Sequence 全排列的第k个
求n位数的第k个全排列利用 n个数字的全排列为n!我们从第一个开始选假设n =3。k=5"123""132""213""231""312""321"我们要确定第一位数是什么。我们知道2的阶乘是 2即每次跨越2个。所以(5-1)/2=2即我们跨越了2个 2则所选数字为 第3个可选数字(用vis去查找可选数字)注意最后一个数字要单独去找。class Solution {public:
2018-02-17 21:22:06 406
原创 LeetCode 56. Merge Intervals 合并交叉区间
合并交叉的区间这题的话,我先排序, 再去一一合并合并原则:如果当前区间的start, 比ans中最后一个区间的 end大 则肯定不需要合并,直接收入ans否则 若当前区间的end,比ans中最后一个区间的end小 则不需要操作,因为这个区间已经被“包含”了 否则, 将ans中最后一个区间的end修改。/** * Definition for an...
2018-02-17 20:27:49 220
原创 LeetCode 55. Jump Game 位置跳跃
当前位置的值 代表你最远能跳多远问能否从起点跳到终点。实现很简单,每次维护一个MaxIndex即可,如果当前坐标比MaxIndex大,说明GG了class Solution {public: bool canJump(vector<int>& nums) { int farIndex = 0; int i ; for(i...
2018-02-17 19:56:08 160
原创 Unix高级编程《APUE》读书笔记——思维导图形式
终于看完unix高编了,试着利用XMind去记录看到的知识点,避免遗忘,算是自己的一个尝试吧。后面再补上对代码的思考和笔记。
2018-02-17 17:49:23 1144 2
原创 LeetCode 49. Group Anagrams Map应用和sort应用
题意很简单,,,就是把字母种类数量相同的字符串归并到一组中。这里用map去区分是否为一组即可,并为每一组设置一个index。注意:如果出现reference binding to null pointer of type ‘value_type’” 这个报错一般是数组下标的问题。这题里我忘记给vector<vector<string>> ans 赋空间。ans.push...
2018-02-17 17:26:55 213
原创 LeetCode 48. Rotate Image 二维矩阵90度翻转问题,坐标推算,空间利用
题意: 90度翻转二维矩阵,且要求额外空间开销尽可能地小。思路:弄清楚90度翻转时,每个点翻转的规律即可假设该点的行列坐标为 (x, y)则翻转后他的位置为 (y,n-1-x)而这里要求空间开销小,即不应重建一个新矩阵。则我们应当一个个点去翻转。我用num1存当前点的值,num2为翻转后位置处的值令下一点值 = 当前的值接着继续这个过程,进行4次后, 一次翻转完毕,一次翻转 翻转了4个数字。注...
2018-02-17 16:37:05 202
原创 leetcode 47. Permutations II DFS应用
与上题不同的是,这次全排列中有相同的数字出现。解决方式要基于对DFS的理解(类似于一颗树)其实就是在树的某一层选择右边的节点时,若该节点与“在这一层时,上一次的选择”相同,则跳过。即在同一个层次时,不选重复的值。class Solution {public: vector<vector<int>> Ans; vector<int> vis; ...
2018-02-16 20:27:21 126
原创 LeetCode 46. Permutations
题意:生成这个数组的全排列简易版:用next_permutation函数class Solution {public: vector<vector<int>> permute(vector<int>& nums) { vector<vector<int>> ans; sort(nums.b...
2018-02-16 19:56:29 99
原创 Git的学习总结
★Git的安装 yum -y install git 安装 git config --global user.name "Lishaoxiao" 设置机器名 git config --global user.email "[email protected]" 设置机器邮箱★版本库的建立 新建目录 mkdir MyGit将目录变为Git仓库 git i...
2018-02-09 14:11:17 236
unp.h源码(CentOS上可无错编译)
2018-01-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人