自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode:剑指 Offer 18. 删除链表的节点

给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 注意:此题对比原题有改动 示例 1: 输入: head = [4,5,1,9], val = 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9. 示例 2: 输入: head = [4,5,1,9], val = 1 输出: [4,5,9] 解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链

2020-11-11 11:15:07 145

原创 LeetCode:剑指 Offer 17. 打印从1到最大的n位数

输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。 示例 1: 输入: n = 1 输出: [1,2,3,4,5,6,7,8,9] 说明: 用返回一个整数列表来代替打印 n 为正整数 题解: 利用幂函数pow取得最大值,再循环放入容器中 class Solution { public: vector<int> printNumbers(int n) { vector<int> res

2020-11-11 11:10:01 153

原创 LeetCode:剑指 Offer 16. 数值的整数次方

实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。 示例 1: 输入: 2.00000, 10 输出: 1024.00000 示例 2: 输入: 2.10000, 3 输出: 9.26100 示例 3: 输入: 2.00000, -2 输出: 0.25000 解释: 2-2 = 1/22 = 1/4 = 0.25 题解: 判断n的二进制的最后一位是否1 如果n & 1 != 0 也就是b

2020-11-11 11:05:02 141

原创 LeetCode:剑指 Offer 15. 二进制中1的个数

请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。 示例 1: 输入:00000000000000000000000000001011 输出:3 解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。 示例 2: 输入:00000000000000000000000010000000 输出:1 解释:输入的二进制串 0000000000000

2020-11-11 10:25:06 110

原创 LeetCode:剑指 Offer 11. 旋转数组的最小数字

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。 示例 1: 输入:[3,4,5,1,2] 输出:1 示例 2: 输入:[2,2,2,0,1] 输出:0 题解: 这是个排序好的数组旋转,遍历数组对比下一个小的话,就是该数组最小值 class Solution { public: int minArray(vector<int

2020-11-11 10:13:57 98

原创 LeetCode:剑指 Offer 09. 用两个栈实现队列

用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 示例 1: 输入: [“CQueue”,“appendTail”,“deleteHead”,“deleteHead”] [[],[3],[],[]] 输出:[null,null,3,-1] 示例 2: 输入: [“CQueue”,“deleteHead”,“appendTail”,“ap

2020-11-10 18:29:16 212

原创 LeetCode:剑指 Offer 06. 从尾到头打印链表

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 题解: 遍历节点,push到容器中,再反向迭代器构造临时对象返回 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }

2020-11-10 18:03:37 83

原创 LeetCode:剑指 Offer 05. 替换空格

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1: 输入:s = “We are happy.” 输出:“We%20are%20happy.” 题解: 先遍历计算空格个数,再重置大小,避免内存访问越界。 倒叙遍历,不是空格赋值到当前下标加当前空格2。 碰到空格,空格个数-1,下标加上前空格2赋值%20 We are happy We are happy0000 (0000是重置后的,用0来表示比较直观) We are happhappy(后序遍历到第一个空格前,赋值到后面的空间) We

2020-11-10 17:38:01 109

原创 LeetCode:剑指 Offer 03. 数组中重复的数字

找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 3 题目原地址链接 题解: 既然找出任意一个重复的就可以。vector先排序,找出第一个重复的即可,简单暴力,时间复杂度O(n) class Solution { public: int findRepeatNum

2020-11-10 17:03:16 144

原创 go数据结构排序(冒泡,插入,选择,快速)

排序是数据处理常见的操作,虽说平时项目开发不怎么要自己实现,但理解其思想还是必须得。本文就来温习下这些常见的数据结构。 1.冒泡排序 每次比较 arr[i] > arr[i+1]成立,就交换。 如现有数据:1 9 2 8 7 6 4 5,现在有8个数据,第一次冒泡需比较7次,第二次6次...。 如果是n个元素,第一轮比较(n-1)次,第二轮比较(n-2)次,以此类推 //[1 9] 2 8 7 6 4 5 //1 [9 2] 8 7 6 4 5 //1 2 [9 8] 7 6 4 5 //1

2020-09-25 18:28:03 1617

原创 讲讲go切片slice

首先,切片是什么? 切片slice是由三部分组成,类似于结构体 1.底层数组的地址(data) 2.存了多少个元素(len) 3.可以存多少个元素(cap) 举个例子: var slice []int slice元素要存在一段连续的内存中,实际上就是个数组。 data就是这个底层数组的起始地址,但目前只分配了切片结构,还没有分配底层数组,所以这里为nil,存储个数为0,容量也为0. 如果通过make的方式定义 var slice []int = make([]int, 2, 5) 开辟了一段容纳5个

2020-09-17 19:12:19 4098

原创 谈谈多线程下为何需要锁

什么是锁?为什么存在? 多个线程运行的时候,共享了同一块资源,在访问这块资源的时候就称为临界资源。为了解决这个问题,我们可以为这块资源加上一把锁,只允许一个线程访问这块资源。 那今天就讲讲互斥锁,自旋锁。 首先先看看不加锁的情况下多线程共享访问临界资源会发生什么. 代码很简单,开启10个线程,各加上100000,理想结果应该是10 * 100000,好的,来试试吧 ```c #include <stdio.h> #include <pthread.h> #define THREA

2020-08-20 20:11:36 18720 1

原创 CentOS7.8安装mysql-8.0.13-linux-glibc2.12-x86_64

官方下载地址: https://dev.mysql.com/downloads/file/?id=480751 1.下载后解压再解包 xz -k mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz tar -xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar 2.移动到系统下目录 3.创建mysql用户并把目录属主设为mysql,方便下面的配置 4.进到mysql/bin/初始化mysql,记住红色标记初始密码,初次登录要使用到

2020-06-18 21:09:37 9881 1

原创 linux实现局域网IP欺骗dns域名解析

大家可以到我git托管平台clone一份测测看,本人程序小白,有问题欢迎指出,共同进步。https://github.com/guojunfengcode/udp_raw_socket.git 1.简单的讲一下IP欺骗。 目的是往A发包,一般本应在包里面填充自己的ip地址,在这把ip地址设为B的地址,让A误以为是B地址发的请求包,所以A响应response的时候是往B发包。这就是ip欺骗,主动让A跟B相互联系。 2.那域名解析呢? 只要向网关或都域名服务器的53端口发送一个DNS查询报文,就可以收到服务

2020-06-04 02:02:11 10814

原创 git在linux环境注册配置

在linux下使用git托管平台时候,需做以下流程配置 1.先安装一下git, centos:yum install –y git ubuntu:apt-get install –y git 2.配置ssh key cd ~ ssh-keygen -t rsa -C ‘505669076@qq.com’ -b 4096 填自己的邮箱,需要生成一下ssh key后,把rsa公钥设置到git里面 3.查看刚刚生成的key公钥 cat ~/.ssh/id_rsa.pub 注意要把这公钥拷贝下来 4.现在登录自

2020-06-03 21:19:02 9131

空空如也

空空如也

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

TA关注的人

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