自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 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 115

原创 关于 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 2606

原创 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 140

原创 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 99

原创 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 87

原创 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 178 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 173

原创 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 125

原创 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 97

原创 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 93

原创 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 96

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

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

2020-10-13 16:54:55 114

原创 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 86

原创 【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 74

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

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

2020-10-09 17:32:21 231

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

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

2020-10-09 10:42:22 350

原创 《程序员的自我修养》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 221

原创 【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 3485

原创 git更改分支名

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

2020-09-28 10:54:46 167

原创 【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 81

原创 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 120

原创 【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 350

原创 【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 446

原创 【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 222

原创 【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 189

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

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

2020-08-05 10:05:35 150

原创 【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 102

原创 知识补充—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 183

原创 【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 225 1

原创 56. 合并区间

56. 合并区间给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。分析首先进行排序,对区间利用sort排序,是按照左端点递增排序;用t指向区间右端点,不断更新t,直到

2020-05-19 15:09:01 72

原创 Python——内置函数

内置函数简介任何一门编程语言的核心操作都是操作内存中的数据,但内存中的数据又是通过编程语言的API来实现的。所谓的API,也就是系统提供给我们的函数,有一种函数是系统预先定义的函数。也就是我们安装python就自带的函数,这种我们把它称为内置函数,也叫内嵌函数。数学运算abs(x) 求 x 绝对值round(x,n) 对浮点数 x 取近似值,指定保留 n 位小数pow(x,y) 求x 的 y 次方的值divmod(a,b)求商和余数,返回值是一个包含商和余数的元组(a//b, a%b)max

2020-05-17 19:19:11 310

原创 动态规划——139单词拆分,152乘积最大子数组,198打家劫舍

139. 单词拆分给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = “leetcode”, wordDict = [“leet”, “code”]输出: true解释: 返回 true 因为 “leetcode” 可以被拆分成 “leet code”。示例 2:输入: s = “applepenapple”, w

2020-05-12 21:59:39 213

原创 96. 不同的二叉搜索树I /Ⅱ——动态规划

96. 不同的二叉搜索树参考leetcode题解给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树:1 3 3 2 1\ / / / \ 3 2 1 1 3 ...

2020-05-07 10:36:46 129

原创 动态规划——路径问题

62. 不同路径一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?示例 1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达...

2020-05-06 23:35:24 458

原创 深度优先搜索——树

98. 验证二叉搜索树 //递归版本class Solution {public: TreeNode* pre; bool isValidBST(TreeNode* root) { if(root){ if(!isValidBST(root->left)){ return false;...

2020-05-04 22:03:34 2558

原创 287. 寻找重复数

287. 寻找重复数给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。只能使用额外的 O(1) 的空间。时间复杂度小...

2020-05-02 17:58:55 188 1

原创 240. 搜索二维矩阵 II

240. 搜索二维矩阵 II编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14,...

2020-05-02 09:46:43 92

原创 34. 在排序数组中查找元素的第一个和最后一个位置(upper_bound / lower_bound)

34. 在排序数组中查找元素的第一个和最后一个位置给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例 2:输入: n...

2020-05-02 09:21:49 282

原创 34. 在排序数组中查找元素的第一个和最后一个位置——二分法的魔鬼细节 小记

每次遇到二分法,一看就会,一写就废,在力扣上看到一篇很好的总结,因此做一下搬运工参考题解——二分法各种情况及细节剖析,附送小诗一首场景包括寻找一个数、寻找左侧边界、寻找右侧边界。而且,我们就是要深入细节,比如不等号是否应该带等号,mid 是否应该加一等等零、二分查找框架int binarySearch(int[] nums, int target) { int left = 0,...

2020-05-01 23:39:17 212

原创 33. 搜索旋转排序数组(二分)

假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2], targ...

2020-05-01 21:21:37 75

空空如也

空空如也

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

TA关注的人

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