自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(124)
  • 资源 (4)
  • 收藏
  • 关注

原创 22年春天的一部分面经

社招面经

2022-03-03 14:35:59 948

原创 经典算法之动态规划

动态规划:将待求解的问题分解成若干个相互联系的子问题,先求解子问题,然后从这些子问题的解得到原问题的解; 对于重复出现的子问题,只在第一次遇到的时候对它进行求解,并把答案保存起来,让以后再次遇到时直接引用答案,不必重新求解。 适合用动态规划来解决的问题,都具有下面三个特点:最优化原理、无后效性、有重叠子问题。经典题:斐波那契、求最长回文子串、求最长回文子串给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"ab...

2022-01-24 18:23:27 344

原创 go实现的经典排序算法

冒泡排序/选择排序/直接插入/归并排序/快排package mainimport "fmt"func swap(arr *[]int, m,n int){ temp := (*arr)[m] (*arr)[m] = (*arr)[n] (*arr)[n] = temp}// 冒泡排序//外层循环是比较的趟数,内层循环是每一趟冒泡:比较相邻的两个数,交换较小者在前,使最小者慢慢浮上来func bubbleSort(arr *[]int){ length := len(*arr

2022-01-23 20:11:43 348

原创 golang的数组、切片和append一些小点

这几天刷题时,总是被切片和append坑了,重新看书后,发现是自己当时对他们认识不到位,重新补充下。从代码分析:var arr1 = [3]int{1,2,3} //定义一个数组,需要在初始化时指定长度var arr2 = arr1 //将一个数组赋值给另一个数组时,传递的是一份拷贝arr2[1] = -2fmt.Println(arr1,arr2) //[1 2 3] [1 -2 3]// 不指定长度 则为切片var sli1 = []int{1,2,3}sli2 :=

2022-01-20 14:47:50 571

原创 经典算法之分治

分治:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,该问题的规模缩小到一定的程度就可以容易地解决,这些子问题互相独立且与原问题形式相同,以便各个击破,分而治之。分治法一般算法框架(伪代码)Divide-and-Conquer§1. if |P|≤n02. then return(ADHOC§)  3. 将P分解为较小的子问题 P1 ,P2 ,…,Pk  4. for i=1 to k  5. do yi = Divide-and-Conquer(Pi) //递归解决Pi  

2022-01-19 15:40:02 1125

原创 经典算法之回溯

解决一个回溯问题,实际上就是一个决策树的遍历过程。路径:也就是已经做出的选择。 选择列表:也就是你当前可以做的选择。 结束条件:也就是到达决策树底层,无法再做选择的条件。遍历当前可选择的项,在递归调用之前做选择,在递归调用之后撤销选择回溯算法的框架:result = []def backtrack(路径, 选择列表): if 满足结束条件: result.add(路径) return for 选择 in 选择列表: 做...

2022-01-19 15:13:08 297

原创 剑指offer 二叉树相关 Go实现

package jianzhiimport ( "container/list" "fmt")type TreeNode struct { Val int Left *TreeNode Right *TreeNode}func levelOrder(root *TreeNode) []int { if root == nil{ return []int{} } var queue = list.New() .

2022-01-17 18:02:08 258

原创 剑指 链表相关

剑指offer中链表相关的题目,go实现

2022-01-12 19:36:43 159

原创 Effective Go 读书笔记

使用gofmt进行代码自动格式化,使用goland进行如下配置 程序包使用小写,一个单词的名字;不需要使用下划线或者混合大小写,要力求简短 接口名按照约定,单个方法的接口使用方法名加上“er”后缀来命名 函数名不应该使用GetSt 成功的控制流是沿着页面往下走,判断错误并终止异常情况,使代码易读 new(T)会为T类型的新项目,分配被置零的存储,并且返回它的地址,一个类型为*T的值 make只用于map,slice和channel,并且不返回指针 数组是值。将一个数组赋值给另一个,会拷贝所有.

2021-10-26 18:46:37 101

原创 一个go interface 内嵌的问题

定义两个接口,Reader Writer,分别有自己的Read和Write方法,再定义一个结构体,ReadWriter,内嵌了这两种接口再定义个Robot结构体,实现两个接口中的方法,问 如何初始化一个ReadWriter类型的变量??type Reader interface { Read() (c string, err error)}type Writer interface { Write(p string) (n int, err error)}type Rea.

2021-10-26 18:42:02 90

原创 GoDS简单使用

嘻嘻 发现一个好东西:https://github.com/emirpasic/gods类似于C++的STL容器,使用GO语言封装了多种基础的数据结构,包括set/tree/list/map/stack,以及迭代器等,接下来挑几个常用的进行使用示范,最全的文档还是来自官网readmearraylistarraylist的数据结构非常简单,使用interface类型接收所有类型的value,并且会返回interface类型:type List struct { eleme..

2021-10-13 16:48:24 892

原创 nginx代理静态资源

项目需求:网页响应过慢,需要nginx代理静态资源安装nginx参考了这篇博客进行安装:1、cd /usr/local/src2、下载相关组件wget http://nginx.org/download/nginx-1.16.0.tar.gzwget https://www.openssl.org/source/openssl-fips-2.0.16.tar.gzwget http://zlib.net/zlib-1.2.11.tar.gzwget https://netix.d

2021-09-09 19:00:18 11195

原创 django学习记录4)

介绍我在使用django框架中用到几个非常便捷的小功能,包括django-restframework,身份认证类authentication_classes,权限检查类permissoin_classes自带的日志收集LOGGING,中间件middleware

2021-06-15 19:19:16 355

原创 django学习记录3)

这一篇将介绍django的orm操作,数据结构和表的定义在上一篇:dango学习记录2)

2021-06-11 14:51:30 186 2

原创 django学习记录2)

使用django可快速定义数据结构,博客中使用的数据库是mysql,首先上个例子:from django.contrib.auth import get_user_modelfrom django.db import modelsfrom django_mysql.models import Modelclass Check(Model): STATUS_TYPE = ( (0, '未审核'), (1, '驳回'), (2, '通过')

2021-05-08 14:28:35 274 2

原创 django学习记录 1)

安装pip install django==1.11.11创建工程django-admin startproject 工程名称目录介绍manage.py 项目管理文件mysite-- |-----setting.py 项目整体配置文件 |-----urls.py 项目URL配置文件 |-----wsgi.py 服务器入口创建子应用python manage.py startapp 子应用名称子应用文件夹--...

2021-04-07 15:11:53 98 1

原创 使用docker构建镜像,并放到另一台机器使用

记一次docker 使用的菜鸟心酸史首先我有一个项目 A.go 需要将其打包成镜像使用,此时还需要一个Dockerfile。Dockerfile的书写如下FROM Ubuntu# 复制应用程序,下面需要根据自己应用情况进行替换COPY A /home/work/WORKDIR /home/work/EXPOSE 1416ENTRYPOINT ["./A"]使用docker进行打包go build -o Asudo docker build ./ -t A_contai.

2020-11-30 17:40:27 2788

原创 关于gopath go111module的坑

使用 go env 查看go的环境变量go path 显示go的路径,一般go的模块会安装到该路径下go111module 是否使用模块支持的变量,如果设为off ,代表无模块支持,import的包会从gopath下寻找。如果设为on,代表模块支持,会忽略gopath,在go.mod中寻找依赖。所以如果go111module = 'off',要将项目放在gopath的路径下,并使用go get 安装需要的第三方模块如果 go111module = 'on' ,可以go mod in.

2020-09-08 15:23:27 4586 1

原创 go 入门级 一个http服务

ServeMux 是go自带的http请求处理器,是一个路由表,存放key-value。根据请求路径(key)在路由表中查找,(按照最长匹配原则)并将请求交给对应的处理函数(value).导入http包,介绍几个方法: http.ListenAndServe (addr string, handler Handler) //传入请求路径和路由表的handler handler :=http.NewServeMux() //创建 一个路由表的handler handle

2020-08-05 11:57:21 259 1

原创 使用goroutine和channel写一个信号量

使用goroutine通信例子:func write(intChan chan int, exitChan chan bool) { for i := 0; i < 10; i++ { intChan <- i } exitChan <- true close(intChan)} func read(intChan chan int, exitChan chan bool) { for { i, ok := <-intChan if !ok {

2020-08-03 16:05:26 222

原创 Ubuntu系统,在go中使用redis

首先安装redis服务端:sudo ape-get install redis-server安装成功后,启用:redis-server使用开源的go-redis:go get github.com/garyburd/redigo查看下载的目录,并将github.com所在的目录添加到gopath 中,例如我的下载目录是:/home/mi/go/src/github.com/garyburd/redigo,便添加gopath 如下:在项目中新建go文件使用redis:

2020-07-31 14:20:58 206

原创 凉经

腾讯提前批次一面:自我介绍( 介绍姓名 学校 和 使用c++做过的项目 经历 和实习经历)开发地点在深圳 ,是否可以?说一下 c++的多态,如何从虚函数表中确定 调用的是哪个虚函数?https://blog.csdn.net/u012630961/article/details/81226351说一下 list map和 mutilmap 的区别 以及底层实现?...

2019-08-31 10:37:58 197

原创 一个 面经

先聊一个你做的项目(问了项目模块 实现逻辑 技术要点)项目的引申:设计模式(生产者消费者 监听者) 如何解决进程间同步问题?(给全局变量,和静态变量加锁,或者只有一个进程往其中写,其余让他们只读) 怎样看一个函数是不是线程安全的?(是否用到了全局或者静态变量,是否函数内部加锁了 或者只读) ...

2019-08-31 09:43:39 428

原创 排序

堆排特点: 使用数组模拟完全二叉树的顺序存储,大顶堆:arr[i] >= arr[2i+1] && arr[i] >= arr[2i+2]小顶堆:arr[i] <= arr[2i+1] && arr[i] <= arr[2i+2]堆排步骤:(假设我们想要升序的排列)第一步:先n个元素的无序序列,构建成大顶堆第...

2019-08-20 15:51:13 115

原创 剑指刷题 二叉树的序列化与反序列化

题目描述请实现两个函数,分别用来序列化和反序列化二叉树二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。二叉树的反序列化是指:根据某种遍...

2019-08-20 11:51:44 123

原创 剑指刷题 二叉搜索树

题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。解题思路:后序遍历 的根节点在数组的最后一个,并且可以将数组分成两部分,第一部分是左子树的后序遍历结果,都小于根节点,第二部分是右子树的后序遍历结果都大于根节点,那么遍历这个数组,如果在第二部分中遇到比根节点小的 那就不是二叉搜索树。...

2019-08-19 18:18:15 95

原创 二叉排序树

bool is_bstree(treenode * root) { if (root == NULL) { return true; } queue<treenode * > q; q.push(root); while (!q.empty()) { root = q.front(); q.pop(); if (root-&...

2019-08-17 14:41:25 76

原创 剑指刷题 把二叉树按照行打印

题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。解题思路:使用 层次遍历的方法,将 树的节点类型进行再封装, 成员变量包含树的节点,和该结点处于 树的第几层, 根节点算第1层然后层次遍历时 根据 该结点 的层 来决定 压入二维数组的哪一维。/*struct TreeNode { int val; struct TreeNode...

2019-08-14 22:25:18 364

原创 剑指刷题 对称的二叉树

题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。思路: 先复制一个相同的 二叉树出来, 然后将新的二叉树 转成 其镜像, 判断两个二叉树是不是相等。 使用层次遍历的方法。/*struct TreeNode { int val; struct Tre...

2019-08-14 21:49:55 121

原创 剑指刷题 找二叉树中某个结点 在中序遍历中的下一个结点

题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。/*struct TreeLinkNode { int val; struct TreeLinkNode *left; struct TreeLinkNode *right; struct TreeLinkN...

2019-08-14 20:46:35 249

原创 剑指刷题 二叉树中和为某个整数的 所有路径

题目描述输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)解题思路:按照 回溯法的思路,遍历每一条路径,并记录路径 与路径之和,如果遍历到叶子结点 ,路径之和不等于期望的数字,那么 放弃这条路径,回到 上一根节点,选择另一条路径。...

2019-08-14 17:45:18 88

原创 剑指刷题 二叉树的镜像

题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5...

2019-08-14 17:05:10 81

原创 二叉树的子结构

题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)第一种方法是使用递归的思想, 第一步通过递归找到 跟子树根节点相同的 结点,找到后 调用 函数chen,再依次递归比较每一个 结点 是否相等。 这种递归的时间复杂度 太高了 ,在牛客上运行不过去。class Solution {public: bool HasSubt...

2019-08-14 16:31:26 122

原创 关于二叉树

#include <queue>#include <list>#include <iostream>using namespace std;typedef struct treenode { char val; struct treenode *left; struct treenode *right; treenode(char x) :...

2019-08-10 15:31:02 172

原创 剑指刷题 机器人的运动

题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?解题思路:用回溯法,如果当前格子可...

2019-08-08 22:43:56 170

原创 剑指刷题 滑动窗口内的最大值

题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6]...

2019-08-08 17:14:55 75

原创 剑指刷题 数据流中的中位数

题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。解题思路:使用set 存放数据流中的数据,set会自行排序,我只需要在拿中位数的时候做判断,如...

2019-08-08 14:54:26 89

原创 剑指刷题 求数组中的逆序数

题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007解题思路: 第一种方法 就是o(n^2)的复杂度,从最后一个开始比较,他前面如果有数比他大 那就是 逆序数+1第二种方法 是借用归并排序(我采用递归版 归并排序)在排...

2019-08-08 11:53:40 144

原创 剑指刷题 求丑数

题目描述把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。丑数序列:1 ,2,3,4,5,6,8,9,10,12,15,16,18,20,24,25········第一种解题 思路,将每个丑数算出来,放到vector中,最后返回vector中第N个丑数。...

2019-08-08 09:52:57 78

原创 剑指刷题 把数组排成最小的数

题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。解题思路:返回值已经给与提示 ,为防止数溢出,将数组转出 字符串,比较字符串的大小,然后 做排列组合。我的chen()思路 是类似于冒泡的思想,将字符串按照从小到大 排列,那么此时按顺序拼接出的字符串就...

2019-08-08 09:06:17 71

hownet以及NTUSD情感词典

包含知网的hownet情感词典以及台湾大学的NTUSD的情感词典

2019-01-08

用c实现的快排、插入、希尔、堆、冒泡、选择、归并排序

void init(sqlist void bubble_sort(sqlist *l); //冒泡 void select_sort(sqlist *l); //简单选择排序 void insert_sort(sqlist *l); //直插 void shell_sort(sqlist *l); //希尔排序 void quick_sort(sqlist *l, int low, int high); //快排 的封装 *****重要 int parttion(sqlist *l, int low, int high); //一趟快排 void heap_sort(sqlist *l); //堆排序 *****重要 void max_heapadjust(sqlist *l, int s, int m); //建堆 的过程 (从顺序表的s下标到m下标 建堆) void min_heapadjust(sqlist *l, int s, int m); //小顶堆 void merge(sqlist *l, int start, int mid, int end); //归并 void merge_sort(sqlist *l); //封装归并排序 void mer_sort(sqlist *l, int start, int end);//递归调用 二路归并排序 void mer_loop(sqlist *l); //封装循环版本的归并排序 void mer(sqlist *l, int gap);//循环版本

2018-04-09

用动态规划、分支限界、回溯解决01背包、批处理作业调度问题

用动态规划、分支限界、回溯解决01背包、批处理作业调度问题

2018-04-04

用git实现从本地项目添加到远程仓库

2017-04-30

空空如也

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

TA关注的人

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