自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Python学习笔记】巧用eval函数

巧用eval函数

2022-07-14 22:27:50 444 1

原创 73.矩阵置零

题目描述分析若直接在遍历数组的过程中修改,会分不清后续的0是修改后的还是原来就存在的。所以需要用额外的空间来存储原来的数组中是否存在0,且区分各算法的优异性两个额外数组描述用两个标记数组来记录每一行和每一列是否有0出现(用来更新矩阵)。接着遍历一次矩阵,根据这两个标记数组来进行更新。代码void setZeroes(int** matrix, int matrixSize, int* matrixColSize){ int m = matrixSize, n = matrixCol

2022-02-17 15:01:29 410

原创 118.杨辉三角

题目描述分析数学法利用杨辉三角的生成公式,数值等于其两肩数值之和。即可求解/** * Return an array of arrays of size *returnSize. * The sizes of the arrays are returned as *returnColumnSizes array. * Note: Both returned array and *columnSizes array must be malloced, assume caller calls f

2022-02-15 17:31:11 456

原创 566.重置矩阵

题目描述分析矩阵映射先将m*n的矩阵映射为一维数组,再将其映射为r*c的二维矩阵。其中二维映射为一维的公式如下x=i∗n+jx = i*n+jx=i∗n+j而一维映射为二维的公式如下{i=x/nj=x%n\left\{\begin{aligned}i = x/n\\\\j = x\%n\end{aligned}\right.⎩⎪⎨⎪⎧​i=x/nj=x%n​而由二维直接映射为二维的公式如下before[x/c][x%c]=after[x/n][x%c]before

2022-02-14 19:41:21 434

原创 leetcode刷题笔记——121.(题目自查)

题目描述分析一次遍历描述由于暴力枚举会超过时间复杂度,因此需要一个复杂度低于O(N^2)的算法,考虑到O(NlogN)或O(N),但是因为本题数组原本的顺序很关键,因此O(NlogN)对应的快排算法不奏效。于是就是O(N),也就是遍历一次数组,那么想到在顺序访问每一个元素时,都求出其在当天售出能达到的最大利润,并求出这些利润的最大值。而要求出这些理论,就需要知道每一天的历史最低价,而这是可以通过一个变量储存来线性实现的,因此O(N)的算法能够实现。代码int maxProfit(int* pr

2022-02-11 23:27:06 243

原创 leetcode刷题笔记——350.两个数组的交集 Ⅱ

题目描述分析快排&双指针描述原来给的数组是没有排序的,快排后时间复杂度为O(MlogM+NlogN)。然后利用双指针,时间复杂度为O(M+N)。因此总时间复杂度为O(MlogM+NlogN)。由于一开始不知道交集的元素个数,因此需要开出大小为min{m,n}的空间来暂时存储返回值,计数后再存入目标数组中。空间复杂度为O(min{m,n})。※若c++可以直接创建一个vector(?),不需要额外数组,时间复杂度可降低为为O(1)。代码/** * Note: The returne

2022-02-10 19:11:22 510

原创 leetcode刷题笔记——88.合并两个有序数组

题目描述分析双指针分析定义指向两个数组头部的双指针。每次比较双指针指向的元素,将较小的元素移动到tmp数组中,并将其指针向后移一个位置。知道两个数组遍历完。时间复杂度是O(m+n)。※但空间复杂度达到了O(m+n),因为需要另外建立tmp数组来储存排序完的序列。※想要降低空间复杂度可以利用nums1数组中原先空闲的n个位置(详见下一个算法“逆向双指针”)代码void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2S

2022-02-09 17:47:28 680

原创 leetcode刷题笔记——1.两数之和

题目描述分析暴力枚举描述对数组每个元素x,遍历寻找元素target-x。并注意到在遍历时,当前元素已与位于其之前的元素匹配过,于是只需要在其之后的元素中查找即可。代码/** * Note: The returned array must be malloced, assume caller calls free(). */int* twoSum(int* nums, int numsSize, int target, int* returnSize){ for(int i = 0

2022-02-09 14:24:05 181

原创 leetcode刷题笔记——53.最大子数组和

题目描述分析贪心描述复杂度为O(n),每输入一个顺序表元素就产生一个状态,全部输入完就产生最终状态。代码int maxSubArray(int* nums, int numsSize){ if(numsSize == 0) return nums[0]; int sum = nums[0],tmpSum=0; for(int i=0;i<numsSize;i++){ tmpSum+=nums[i]; if(i!=0&

2022-02-08 22:33:05 112

原创 leetcode刷题笔记——217.存在重复元素

​ 最简单的想法是对每个元素与其之前的元素进行比较,但这种算法的时间复杂度是O(N^2),会超过题目的限制。于是考虑降低时间复杂度,思考O(NlogN)的做法,想到可以采取快速排序,然后检测排序后数组是否有相邻元素相等,这样时间复杂度就降到了NlogN。

2022-02-07 19:10:37 369

原创 C语言初学过程中几种基本的数据类型

平常做题如果不在意数据类型,输入的数据就容易超出定义的范围,导致WA。所以今天来总结一下C语言常见的数据类型,包括其大小范围,输入输出符号,占用字符数。整型int 即short int 整型变量,占用2字节,范围:-2的15次方~2的15次方-1 ※ 其区间长度,刚好是2的16次方。 用%d来输入输出long 即long int 长整型变量,占用4个字节,范围:-2的31次方~2的31次方-1 ※其区间长度,刚好是2的32...

2020-10-01 14:52:54 1195

原创 关于c语言指针的一些认识

关于c语言指针的一些认识指针的初始化 初始化的目的是让指针知道指向哪个地址,以防止其指向一些“危险”地址。其方法有两种。 第一:在声明指针的时候告知变量的地址。例如int i=1;int *p=&i; 第二:不初始化指针,在后直接将地址赋值给指针。例如int i=1;int *p;p=&i; 但要注意,如下写法是错误的。int i=1;int *p;*p=&amp...

2020-09-27 15:25:18 86

空空如也

空空如也

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

TA关注的人

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