自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lanzh_

爱编程,爱生活

  • 博客(252)
  • 论坛 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 LeetCode-【字符串】解题技巧

821. 字符的最短距离暴力解法:class Solution: def shortestToChar(self, s: str, c: str) -> List[int]: arr = [] for i,v in enumerate(s): if v == c: arr.append(i) ret = [] for i,v in enumerate(s):

2021-11-22 22:48:24 9

原创 LeetCode-【单调栈】解题技巧

402. 移掉 K 位数字正常算法思路:从左到右,找第一个比后面大的字符,删除,去掉前导清零,需要k次扫描,每扫描一次,得到移除一个数字后的解。贪心+k次扫描:class Solution: def removeKdigits(self, num: str, k: int) -> str: if len(num) == k: return "0" for i in range(k): t = ""

2021-10-03 14:56:41 16

原创 python_排序技巧

1.根据身高,体重,编号从小到大排序eg:编号:[1,2,3,4]身高:[100,90,110,100]体重:[30,35,50,30]输出:2 1 4 3def sort_student(h,w): dict_ = {} l = len(h) for i in range(l): t = (h[i],w[i]) dict_[t]=dict_.get(t,[])+[i] ret = [] for k in so

2021-09-30 23:25:30 19

原创 LeetCode-【双指针】解题技巧

986. 区间列表的交集https://leetcode-cn.com/problems/interval-list-intersections/class Solution: def intervalIntersection(self, firstList: List[List[int]], secondList: List[List[int]]) -> List[List[int]]: i,j=0,0 ans = [] while i&

2021-09-25 15:12:07 19

原创 LeetCode-【滑动窗口】解题技巧

1876. 长度为三且各字符不同的子字符串class Solution: def countGoodSubstrings(self, s: str) -> int: l = len(s) if l<=2: return 0 ans = 0 for i in range(2,l): if s[i-2] != s[i-1] and s[i-1] != s[i] and s[i

2021-09-20 17:13:23 55

原创 Linux编程之epoll测试

测试epoll能否监听普通文件。epoll是Linux系统中常用的多路复用I/O组件,可以用来监听socket的I/O操作,但是监听的都是fd,那么打开的普通文件fd可以被监听吗?测试代码://gcc epoll_file.c -o epoll_file#include<stdio.h>#include<sys/epoll.h>#include<fcntl.h>int main(){ struct epoll_event ev, event

2021-08-07 22:23:46 43

原创 Linux编程之epoll示例

基础原理理解请参考这篇:IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇)select主要解决的问题:(详细请参考:select用法&原理详解(源码剖析))select/epoll区别:如果这篇文章说不清epoll的本质,那就过来掐死我吧!逻辑框架...

2021-08-07 21:22:31 24

原创 openssl编程-aead

openssl aead算法接口使用示例://gcc -g -lssl aead_test.c -lcrypto -L /usr/local/lib/#include <string.h>#include <openssl/evp.h>#define IV_SIZE 8#define KEY_SIZE 24#define INPUT_SIZE 100void print_hexdata(unsigned char *b, int len, char *title

2021-07-25 14:07:24 62

原创 openssl编程-cipher

openssl cipher算法接口使用示例://gcc -g -lssl cipher_test.c -lcrypto -L /usr/local/lib/#include <string.h>#include <openssl/evp.h>#define IV_SIZE 8#define KEY_SIZE 24#define INPUT_SIZE 100void print_hexdata(unsigned char *b, int len, char *t

2021-07-24 23:46:07 33

原创 openssl编程-DH

openssl DH算法接口使用示例://gcc -g -lssl dh_test.c -lcrypto -L /usr/local/lib/#include<openssl/dh.h>#include<memory.h>void print_bigdata(const BIGNUM *b, char *title) { unsigned char a[2048] = {0}; int len = BN_bn2bin(b, a); int i = 0, c = 0

2021-07-18 00:09:43 108

原创 Linux编程之mmap示例

一、Linux下,针对we传统的读写文件一般来说,修改一个文件的内容需要如下3个步骤:把文件内容读入到内存中。修改内存中的内容。把内存的数据写入到文件中。过程如图 1 所示:如果使用代码来实现上面的过程,代码如下:...

2021-06-19 19:58:55 82

原创 Linux文件操作函数open/read/write/lseek

此类函数定义在头文件:#include <unistd.h>read使用示例:#include <stdio.h>#include <unistd.h>#include <fcntl.h>#include <sys/types.h>#include <sys/stat.h>int main(){ int read_fd, size; char buffer[1024] = "\0"; .

2021-06-19 18:05:26 41

原创 LeetCode-【差分解决区间问题】解题技巧

1094. 拼车此题关键在于:上车下车先后是固定的, 那么可以用差分法,在特定车站上车就+人数, 下车就-人数,那么计算, 如果出现 > capacity 就是false;1.所有车站人数初始化为0;2.遍历trips,依次维护上下车各车站人数变化;3.遍历所有车站,累加各个车站人数,出现> > capacity 就是false,否则返回true;class Solution(object): def carPooling(self, trips, capac

2021-06-13 21:14:43 171

原创 Linux进程间通信--共享内存示例(信号量保证同步)

在Linux系统中,每个进程都有独立的虚拟内存空间,也就是说不同的进程访问同一段虚拟内存地址所得到的数据是不一样的,这是因为不同进程相同的虚拟内存地址会映射到不同的物理内存地址上。\n但有时候为了让不同进程之间进行通信,需要让不同进程共享相同的物理内存,Linux通过 共享内存 来实现这个功能。下面先来介绍一下Linux系统的共享内存的使用。...

2021-06-06 22:56:06 135

原创 Linux内核导出符号及引用示例

引用参考:Linux内核中导出符号及其引用代码目录如下:Makefileobj-m +=calculate_lib.oobj-m +=test_demo.oobj-m += com_lib.oKDIR :=/lib/modules/$(shell uname -r)/buildPWD=$(shell pwd)modules: $(MAKE) -C $(KDIR) M=$(PWD) modulesclean: $(MAKE) -C $(KDIR) M=$(PW

2021-05-01 14:56:43 65

原创 Linux编程之select示例

基础原理理解请参考这篇:IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇)select主要解决的问题:(详细请参考:select用法&原理详解(源码剖析))select需要使用两个system call (select 和 recvfrom),而blocking IO只调用了一个system call (recvfrom)。但是,用select的优势在于它可以同时处理多个connection(使用select以后最大的优势是用户可以在一个线程内同时处理多个socket的IO请求),在网络

2021-04-24 18:51:35 92

原创 file_operations使用示例(实现read/write/ioctl)

Makefileobj-m:=test_tools.oKDIR:=/lib/modules/$(shell uname -r)/buildPWD:=$(shell pwd)default: $(MAKE) -C $(KDIR) M=$(PWD) modulesclean: rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions *.order *symvers *Module.markerstest.ko/************

2021-04-05 18:40:02 325

原创 LeetCode-【前缀和】解题技巧

560. 和为K的子数组1248. 统计「优美子数组」974. 和可被 K 整除的子数组523. 连续的子数组和

2021-02-16 20:59:07 138

转载 Python标准库模块之heapq

该模块提供了堆排序算法的实现。堆是二叉树,最大堆中父节点大于或等于两个子节点,最小堆父节点小于或等于两个子节点。创建堆heapq有两种方式创建堆, 一种是使用一个空列表,然后使用heapq.heappush()函数把值加入堆中,另外一种就是使用heap.heapify(list)转换列表成为堆结构import heapq# 第一种"""函数定义:heapq.heappush(heap, item) - Push the value item onto the heap,.

2020-08-30 21:33:07 91

原创 LeetCode-【二分查找】解题技巧

5489. 两球之间的磁力分析:题意求最大化最小,类似这样的求最大化最小值、最小化最大值等都可以用二分搜索解决.1.找到所有position的最大距离和最小距离;2.通过二分法,分别判断满足条件的距离(a.mid=(最大距离+最小距离)/2;b.满足条件的点是否>=m);下面是实现示例:class Solution(object): def check(self,p,mid,m): c = 0 i,j=0,1 while

2020-08-16 18:00:18 79

原创 LeetCode-【DFS】解题技巧

LeetCode题目:面试题 08.10. 颜色填充 def floodFill(self, image, sr, sc, newColor): """ :type image: List[List[int]] :type sr: int :type sc: int :type newColor: int...

2020-04-25 21:30:55 263

原创 LeetCode-【BFS】解题技巧

LeetCode题目:地图分析题目分析(分析转自sweetiee):这是一道典型的BFS基础应用,为什么这么说呢?因为我们只要先把所有的陆地都入队,然后从各个陆地同时开始一层一层的向海洋扩散,那么最后扩散到的海洋就是最远的海洋!并且这个海洋肯定是被离他最近的陆地给扩散到的!下面是扩散的图示,1表示陆地,0表示海洋。每次扩散的时候会标记相邻的4个位置的海洋:你可以想象成你从每个陆...

2020-03-29 14:55:25 338

原创 LeetCode-【链表】解题技巧

删除链表的节点 ListNode* deleteNode(ListNode* head, int val) { ListNode* dummy = new ListNode(0); //构建虚拟头节点 dummy->next = head; ListNode *t=dummy; while(t&&t-...

2020-03-15 18:35:45 290 1

原创 LeetCode-【数学】数学在解题中的技巧

1. 不使用变量交换两个数交换两个数# 异或a ^ b = cc ^ b = aa ^ c = bnumbers[0] ^= numbers[1];numbers[1] ^= numbers[0];numbers[0] ^= numbers[1];# 加减A = A+BB = A-BA = A-Bnumbers[1]=numbers[0]+numbers[1];...

2020-02-23 13:59:31 141

原创 LeetCode-【数学】判断素数

leetcode 204题目链接:计算质数厄拉多塞筛法def countPrimes(self, n): """ :type n: int :rtype: int """ if n < 2: return 0 res = 0 arr = [0] *...

2020-02-11 22:05:24 457

原创 【知识整理】makefile gtest gcov(lcov)

1.基础安装(安装网上有很多教程,根据机器自行安装即可)1)安装gtest工具2)安装lcov工具2.使用示例1)目录结构main:程序入口ut_test:对branches,calc,function文件夹中的代码行进行单元测试(ut),测试框架为gtest2)示例代码(源代码和编译执行过程都在github上)https://github.com/zhlan/...

2019-01-12 22:58:37 1999

原创 LeetCode-【数学】解答技巧总结

leetcode 7题目链接:LeetCode7_反转整数int reverse(int x) { int r=0; while(x) { int t=r; r=r*10+x%10;//r从低位加到高位 if((x&lt;10)&amp;&amp;(t!=(r-x%10)/10))//回退到加当前循环数之前,即t,看是否溢出 { return 0; } ...

2018-07-25 20:19:45 734

原创 leetcode mysql-汇总(中等)

626. 换座位小美是一所中学的信息科技老师,她有一张 seat 座位表,平时用来储存学生名字和与他们相对应的座位 id。其中纵列的 id 是连续递增的小美想改变相邻俩学生的座位。你能不能帮她写一个 SQL query 来输出小美想要的结果呢?示例:+---------+---------+| id | student |+---------+---------+| 1 ...

2018-06-27 21:20:01 637

原创 leetcode mysql-汇总(简单)

182. 查找重复的电子邮箱编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。示例:+----+---------+| Id | Email |+----+---------+| 1 | a@b.com || 2 | c@d.com || 3 | a@b.com |+----+---------+根据以上输入,你的查询应返回以下结果:+---------+...

2018-06-23 20:50:42 916

原创 python_Qtimer学习

from PyQt5.QtWidgets import *from PyQt5.QtCore import *import sysfrom datetime import datetimeclass WinTimer(QWidget): def __init__(self,parent=None): super(WinTimer,self).__init__(pa...

2018-05-27 17:45:58 5727

原创 python_多线程

学习python多线程,参考了别人的博客,完成了以下简单的示例:1.使用多线程“同时”去做两件事:#coding=utf-8import threadingfrom time import ctime,sleepdef music(func): for i in range(2): print("I was listening to %s. %s" %(func,c...

2018-05-16 21:25:34 176

原创 python_安居客区域房源均价工具(matplotlib)

让数据更有价值,就需要对抓取的信息进行适当的处理,然后展现出来。0.打开源码,修改源码该位置选择城市:1.抓取的安居客不团区域房价,然后计算该区域均价,然后通过matploylib绘图:2.python源码:#-*- encoding=UTF-8 -*-from urllib.request import urlopenfrom bs4 import BeautifulSoupimport ...

2018-05-01 22:41:23 682

原创 python_数据库(增删查改)

使用python对数据库进行操作的总结:import randomfrom pymysql import cursors,connectconn=connect(host='127.0.0.1', user='root', password='admin', db='test', ch

2018-04-29 15:42:40 943

原创 python_常用知识总结

1.操作EXCELimport xlrd# 获取一个Book对象workbook = xlrd.open_workbook("C:/bz/xa2018-05-01_14_55_15.xlsx")# 获取一个sheet对象的列表sheets = workbook.sheets()# 遍历每一个sheet,输出这个sheet的名字(如果是新建的一个xls表,可能是sheet1、s...

2018-04-23 23:08:40 289

原创 python_爬取【proxy ip】

最近在抓取豆瓣电影信息,但是请求太过频繁后,豆瓣后台会封掉请求IP,导致请求403,查了一圈资料,发现可以使用代理IP进行访问,代理IP的获取网址为:http://www.xicidaili.com/ 获取代理IP后,通过搜狗网页进行了简单的验证。import timeimport requestsimport re###请求头headers = { 'U

2018-04-22 16:12:44 1069

原创 python_爬取【安居客房源信息】

最近在看房子,试着抓取了安居客上房源信息,供大家学习参考。#-*- encoding=UTF-8 -*-from urllib.request import urlopenfrom bs4 import BeautifulSoupimport xlrdimport xlwtcity="sz" ###城市缩写html_sheet=5 ###页面数url="https:

2018-03-28 23:07:01 4624 1

原创 python_爬取【搜狗图片】

1.利用python抓取网站上的图片,对于学习python及对网页数据分析处理很有帮助,也可以学习一些web方面的知识,我尝试使用【搜狗图片】搜索到的图片作为抓取对象,抓取【搜狗图片】主页各个标题栏的图片,以及【其他】输入图片类型的图片,使用tkinter完成了一个简单的UI界面。2.一般抓取网页图片,需要先访问页面,然后提取源码,依次解析各个图片URL,然后直接下载即可,这些网上的教程很多,在此...

2018-03-24 17:10:50 4659 3

原创 tkinter--计算器

刚开始学习tkinter,试着做了个计算器,记录一些常用的函数和使用方法。from tkinter import * #导入tkinter库import reroot =Tk() #给窗体root.title('calculator') #设置窗体名字root.geometry('290x427')root.resizable(width=False, height=False)

2018-01-07 15:20:46 559

原创 位图法查找算法

给定没有重复,没有排序的80000000~89999999之间的10000000个数,然后开始查找某几个数是否在该数据集合中;先看看vector的查找性能://vector#include#include#include#includeusing namespace std;const unsigned int max_count=9999999;int main()

2015-12-03 21:30:37 2394

原创 位图法排序

位图法:bitmap,就是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况。通常是用来判断某个数据存不存在的。对unsigned没有重复的数字进行排序,假设我们要对0-7内的5个元素(4,7,2,5,3)排序。那么我们就可以采用Bit-map的方法来达到排序的目的。要表示8个数,我们就只需要8个Bit(1Bytes),首先我们开辟1Byte的空间,将这些空间的所有Bit

2015-11-29 16:50:55 2237

空空如也

lanzhihui_的留言板

发表于 2020-01-02 最后回复 2020-01-02

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

TA关注的人 TA的粉丝

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