自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode 83. 删除排序链表中的重复元素

83. 删除排序链表中的重复元素C++/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* deleteDuplicates(ListNode* head) {

2020-12-02 14:49:56

原创 关于 sizeof(int)和 sizeof(void *)

关于 sizeof(int)和 sizeof(void *)sizeof(int)表示int类型占用的字节数,与编译器有关sizeof(void * )表示指针类型占用的字节数,指针的本质是地址,不管是什么类型的指针,只要是指针,不只是void*,包括char* 或 int*,结果都是一样。原因就是指针存放的是内存地址,所以Win32 索引32位地址(4字节),X64索引64位地址(8字节)那么声明不同类型的指针意义是什么??答案是规定指针在内存中每次移动的字节数...

2020-11-30 11:04:10 10

原创 leetcode 141, 142. 环形链表Ι,环形链表Π

题目描述 141/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: bool hasCycle(ListNode *head) { ListNode* fast = h

2020-11-26 10:49:53 4

原创 leetcode 面试题 02.08. 环路检测

题目描述分析参考 环形链表 快慢指针问题 但是这一题的参数是什么鬼???????????????C++/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode *de

2020-11-26 10:24:53 2

原创 leetcode 328. 奇偶链表

题目描述给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->2->4->NULL示例 2:输入: 2->1->3->5->6-&g

2020-11-25 20:05:12 13

原创 leetcode打卡 922. 按奇偶排序数组 II

题目给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。你可以返回任何满足上述条件的数组作为答案。示例:输入:[4,2,5,7]输出:[4,5,2,7]解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。双指针1用 i 指向原数组进行遍历;用 k 指向奇数下标,遍历数组时,把奇数放在k下标的位置;k+2用 j 指向偶数下标,遍历数组时,把偶数放在j下

2020-11-12 17:34:24 37 1

原创 leetcode打卡 973. 最接近原点的 K 个点

题目我们有一个由平面上的点组成的列表 points。需要从中找出 K 个距离原点 (0, 0) 最近的点。(这里,平面上两点之间的距离是欧几里德距离。)你可以按任何顺序返回答案。除了点坐标的顺序之外,答案确保是唯一的。示例 1:输入:points = [[1,3],[-2,2]], K = 1输出:[[-2,2]]解释:(1, 3) 和原点之间的距离为 sqrt(10),(-2, 2) 和原点之间的距离为 sqrt(8),由于 sqrt(8) < sqrt(10),(-2, 2)

2020-11-11 11:10:49 36

原创 leetcode打卡 1207. 独一无二的出现次数

题目给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。示例 1:输入:arr = [1,2,2,1,1,3]输出:true解释:在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1 次。没有两个数的出现次数相同。示例 2:输入:arr = [1,2]输出:false示例 3:输入:arr = [-3,0,1,-3,1,1,1,-3,10,0]输出:true补充C++中unorde

2020-10-28 11:12:07 37

原创 leetcode打卡144. 二叉树的前序遍历

题目前序遍历顺序:根节点-左子树-右子树C++ 迭代显示维护一个栈stack/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : v

2020-10-27 17:45:18 28

原创 leetcode打卡 1365. 有多少小于当前数字的数字

题目给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] < nums[i] 。以数组形式返回答案。示例 1:输入:nums = [8,1,2,2,3]输出:[4,0,1,1,3]解释:对于 nums[0]=8 存在四个比它小的数字:(1,2,2 和 3)。对于 nums[1]=1 不存在比它小的数字。对于 nums[2]=

2020-10-27 09:25:11 13

原创 关于C语言内存溢出Out Of Memory

strcpy(d,s)的溢出问题传送门

2020-10-14 19:07:46 27

原创 LeetCode打卡 24. 两两交换链表中的节点

思路采用迭代思想,对于链表的题目把图画出来会比较容易理解图示比较清楚,从力扣官方图解截屏如下要创建一个哑节点dummyNode(即图中的dummyHead),时间复杂度:O(n),需要对每个节点进行更新指针的操作空间复杂度:O(1)C++/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() :.

2020-10-13 20:04:54 26

原创 《程序员的自我修养》p7 动态链接—为什么要动态链接

为什么要动态链接内存和磁盘空间在多进程操作系统下,静态链接是比较浪费内存空间的;一个普通程序除了printf,scanf等公用库函数,还有很多其他库函数和所需要的辅助数据结构;如上图所示的program1和program2分别包含program1.o和program2.o两个模块,并且他们还公用lib.o模块;在静态链接情况下,因为program1和program2都用到了lib.o模块,所以它们同时在链接输出的可执行文件program1和program2有两个副本。当我们同时运行program1

2020-10-13 16:54:55 15

原创 leetcode打卡 530. 二叉搜索树的最小绝对差

思路对于二叉搜索树,我们知道中序遍历得到的是一个递增序列,因此我们先对这棵树中序遍历得到一个有序数组,然后再遍历该数组获得节点差的最小值C++/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL.

2020-10-12 20:19:13 28

原创 【Python】剑指 Offer 04. 二维数组中的查找,剑指 Offer 05. 替换空格,剑指 Offer 06. 从尾到头打印链表

1、二维数组中的查找在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]给定 target = 5,返回 tru

2020-10-12 12:00:02 5

原创 《程序员的自我修养》p6 可执行文件的装载与进程

进程虚拟地址空间每个程序被运行起来以后,都将拥有自己独立的虚拟地址空间,这个虚拟地址空间的大小由计算机的硬件平台决定,即由CPU的位数决定。一般来说,C语言指针大小的位数与虚拟空间的位数相同我们下文以32位的地址空间为主进行讨论:整个4GB被划分为两部分,其中操作系统本身用去了一部分:从地址0xC0000000到地址0xFFFFFFFF,共1GB;剩下的0x00000000到0xBFFFFFFF共3GB都是留给进程使用的;也就是说整个进程在执行的时候,所有的代码、数据包括通过C语言malloc()

2020-10-09 17:32:21 46

原创 《程序员的自我修养》p3 关于目标文件

目标文件的格式目标文件中的信息以“段”的形式存储:程序源代码编译后的机器指令经常被放在代码段:.code 或 .text已初始化的全局变量和局部静态变量经常放在数据段:.data未初始化的全局变量和局部静态变量保存在 .bss段,注意:.bss段为未初始化的全局变量和局部静态变量预留位置,并没有内容,所以它在文件中也不占据空间挖掘SimpleSection.oobjdump命令是Linux下的反汇编目标文件或者可执行文件的命令,它以一种可阅读的格式让你更多地了解二进制文件可能带有的附.

2020-10-09 10:42:22 11

原创 《程序员的自我修养》p2 编译和链接过程

GCC编译器:https://blog.csdn.net/liubing8609/article/details/82695528a.out是GCC可执行文件,这样是一次性完成了编译链接的全部过程被隐藏的过程Gcc的编译流程分为了四个步骤:预处理,生成预编译文件(.文件):gcc –E hello.c –o hello.i编译,生成汇编代码(.s文件):gcc –S hello.i –o hello.s汇编,生成目标文件(.o文件):gcc –c hello.s –o hello.o链接..

2020-10-09 10:33:05 27

原创 【Python】bytes数据类型

bytes函数python中用file.read()函数读取二进制文件时,得到的数据是<class ‘bytes’>类型;如下是一个二进制文件,每行4个字节,共32位;用file.read()函数读取,后面每次读8个字节输出结果:均为bytes类型(对于前20个字节,我存储的是当前日期)对于前20个字节,我存储的是当前日期,读取的结果是b'1970-01-01 00:10:46\x00这显然出现了我们不希望出现的字符,比如开头的b,结尾处的\x00,因此我们要对该数据进行处理b

2020-09-30 10:10:14 56

原创 git更改分支名

更改分支名的话先在这个分支基础上 git checkout -b 新分支名,然后git merge 老分支名 新分支名再git push origin 新分支名最后确认新的分支到库上了,再手动删除老分支通过网页删除

2020-09-28 10:54:46 13

原创 SAT

求解所有满足的解def sat_all(props, f): """Get all solutions of given proposition set props that satisfy f Arguments: props {BoolRef} -- Proposition list f {Boolref} -- logical express that consist of props """ solver = Solver()

2020-09-28 10:45:08 89

原创 【Python】numpy相关操作

numpy创建数组import numpy as npimport random==================1、np.array()创建数组===========================t1 = np.array([1,2,3,])print(t1)print(type(t1))#t2 = np.array(range(10))print(t2)print(t2.dtype)###=====2、np.arange()创建数组,可以规定步长(整数/小数)====

2020-09-28 10:44:00 11

原创 推栈

栈内存结构栈帧:函数嵌套调用的过程中,线程栈要存放每一层调用函数的信息,每个调用的函数会开辟一个独立的连续区域来存放这些信息,这个区域称为函数的栈帧esp:栈顶指针寄存器,指向当前栈顶(最低地址)ebp:栈帧基址寄存器,指向当前函数栈帧的基址。而当前函数栈帧基址中存储的地址则指向上层调用它的函数的栈帧基址(如图中红线所示)arg1~n:被调用函数的入参,arg_1 = [ebp+8],arg_2 = [ebp+12],。。。local1~n:被调用函数的局部变量,local_1 = [ebp-4

2020-09-28 10:42:15 15

原创 GDB基础操作

GDB1、启动gdb1)gdb a.out2) gdb file a.out2、设置断点1)b + 函数2)b + 函数名:行号3、运行 r,遇到断点会停下来4、继续执行 c(continue)5、单步执行 n(next),打印出来的语句是接下来要执行的语句6、enter表示重复执行上一次执行的指令7、s(step)表示进入函数内部执行8、l(list)显示接下来要执行的10行代码,继续执行l指令,则继续显示9、查看变量的值 :p(print) + 变量名p

2020-09-08 11:58:24 26

原创 【Python】类属性和实例属性

类属性class Person: hobby = 'movie' #类属性 def eat(self): ''' 吃的行为 :return: ''' print('喜欢吃榴莲') passxq = Person()xq.name = '小倩' #添加实例属性xq.sex = '女生' #添加实例属性xq.age = '18' #添加实例属性xq.eat() #喜欢吃榴莲pr

2020-08-14 16:23:36 23

原创 【Python】列表解析、字典解析和dtype扩展

Numpy —— 数据类型对象 (dtype)1、基本用法# 基本用法a = np.array([1,2,3,4])print(a.dtype) # int32print(type('i4')) # <class 'str'>print(np.dtype('i4')) # int32print(type(np.dtype('i4'))) # <class 'numpy.dtype'>2、 使用dtype()函数构造复杂类型# 结构化数据类型# 通过dt

2020-08-13 14:10:11 68

原创 【Python】剑指 Offer 10- I. 斐波那契数列 // 剑指 Offer 10- II. 青蛙跳台阶问题

剑指 Offer 10- I. 斐波那契数列写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:1示例 2:输入:

2020-08-07 19:41:27 32

原创 【Python】剑指 Offer 09. 用两个栈实现队列

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

2020-08-07 10:15:43 31

原创 【Python】剑指 Offer 07. 重建二叉树【python中对二叉树的处理,切片操作】

描述解析这一题的关键是找到下标,然后执行递归操作涉及到数组下标,可以采用列表的切片操作,同时index(()函数可用于获取列表对象的索引;根据前序遍历,可以获取根节点下标,然后通过中序遍历判断左右子树的节点个数;从而通过切片操作获取递归操作的前序遍历和中序遍历的序列,继续执行递归操作即可;注意:切片操作,不包含右边索引的对象# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):

2020-08-05 10:05:35 39

原创 【Python】剑指 Offer 03. 数组中重复的数字

描述找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3限制:2 <= n <= 100000解析1、使用字典模拟哈希进行存储,对列表中每个元素进行判断,如果不存在字典中,就将对应位置"1",如果已经存在于字典中,说明出现了重复,返回该值即可哈希表

2020-08-04 11:35:07 23

原创 知识补充—python字典内置方法

知识补充—字典内置方法1、cmp(dict1, dict2)如果两个字典的元素相同返回0,如果字典dict1大于字典dict2返回1,如果字典dict1小于字典dict2返回-1cmp()可以返回除-1,0,1 外的其他值。算法按照以下的顺序:(1)比较字典长度如果字典的长度不同,那么用 cmp(dict1, dict2) 比较大小时,如果字典 dict1 比 dict2 长,cmp()返回正值,如果 dict2 比 dict1 长,则返回负值。也就是说,字典中的键的个数越多,这个字典就越大

2020-07-31 19:36:39 44

原创 【python】1-两数之和

题目给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。解析1、暴力法——超时class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: for i in range(len(nums)): j = i + 1

2020-07-31 19:36:06 67

原创 形式化方法复习八—数组array

MotivationA’ = store(A, i, x)表示:将数组A下标i上的元素赋值为x;A’ = store(store(A, i, A[j]),j,A[i])表示:先把数组A位置i处的元素赋值为A[j],然后再将下标j处的元素赋值为A[i]);这就形成了嵌套A’[k]==A[k] (k!=i,j)函数式编程思想上面的交换函数可以写成下面的形式函数式编程两个特性:1.数据结构不可变化,不能修改2.支持等式的推理,例如每次调用f(x)得到的结果都等于a。和命令式函数不同,命令

2020-07-12 22:19:11 38

原创 形式化复习七—Bit Vector比特向量

Bit Vectors比特向量:数据结构建模/性质推理先看一个著名的BUG:bug原因:int mid = (low+high)/2;这会造成溢出问题如何解决?int mid = low +(high+low)/2 ? ×比特向量一个比特向量b是一个具有 l (是一个常数)长度的0或1的序列语法o 代表二元运算语义对于一个解释器 < b > ,我们可以看到,b的解释,可以按照无符号整型解释,也可以按照有符号整型解释,这会得到不同的解释结果对于我们不熟

2020-07-12 16:10:11 98 1

原创 形式化复习六—Liner Arithmetics线性算术

一、syntax举个栗子二、Fourier-Motzkin variable elimination 傅里叶莫特金算法傅里叶算法对于小规模等式/不等式比较有效高中时,针对等式的变量消去,比如二元一次方程组,我们采用高斯消去,即变量替换为了解决不等式问题,我们采用傅里叶算法我们首先将不等式的符号方式一致,然后寻找一个变量,这个变量的正出现和负出现同时存在,我们采用两两相加进行消除一般的形式解法总结将所有的等式/不等式做正规化:使所有符号的方向相同;如果有常数,移到符号左侧;使右侧全部

2020-07-12 12:09:13 57

原创 形式化复习五—EUF等式和未解释函数理论

Motivation : Theory前面我们介绍了一阶逻辑FOL,对一阶逻辑加不同的限制可以形成不同的理论Equality theory 等式理论1、syntax语法与一阶逻辑相比,E中只包含变量和常量,没有函数fR中的运算也只包括:等于和不等于逻辑命题中只有 /\ 合取2、Motivation : solving equality1)对于上面的等式,不会出现矛盾,但是加入不等式后,可能引发矛盾因此我们的处理思路是:先处理等式,相等关系的放到一个等价类中,然后将不等式逐渐往里加

2020-07-11 21:48:12 165

原创 形式化复习四—SAT可满足性

SAT VS. validvalid : 在所有模型中,P为真Sat : 存在一个模型使P为真即可一个重要的关系:Valid ( P) <==> unsat(~P)因此,为了证明P,我们可以验证(~P)是unast即可unsat(~ P) 即没有模型使(~P)为true,即( ~P)全部为false,则可以发现P全部为true,则Valid§成立实现SAT的算法——DPLL我们只对范式Noraml form进行处理:Negation normal(NNF)、conjun

2020-07-11 17:05:35 289

原创 形式化复习三—predlogic谓词逻辑

一阶逻辑 FOL命题逻辑的表达不充分,比如上面的表述中出现了一个量词 Every,该怎么表达呢,在谓词逻辑中 用符号来表达谓词逻辑 语法R代表一种关系,如 大于、等于、小于等等,R的值是布尔值,true/false,来表示后面的表达式是否满足 r 的要求E 表达了现实世界中的计算,f 表示方程/映射/一组函数P定义一个逻辑命题,R:表示一种关系,是Bool值,R的结果为true / false编码为集合论的形式绑定变量和自由变量Bound and free variables

2020-07-11 14:20:22 182

原创 形式化复习二—conslogic构造逻辑

Constructive logic语法syntax没有否定,但是增加了一个语法糖证明理论自然演绎:断言在一组假设命题T下,P是可证的自然演绎:推理规则举个栗子

2020-07-11 11:18:39 58

原创 形式化复习一 prologic命题逻辑

propositional logic命题逻辑每个形式系统 都要包括语法+语义语法 syntax这是利用CFG上下文无关文法来定义的The proof system 证明系统数学上:Hibert系统,构造性,没有规律可言。CS上:自然演绎系统,具有机械化步骤,即算法。Natural deduction自然演绎Judgments断言Γ -> PΓ是一个命题组成的列表,P是一个单独命题可以理解为:在假定为真的一组命题Γ下,可以推出P为真Example:P,Q,R |- P

2020-07-11 10:57:59 206

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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