- 博客(23)
- 收藏
- 关注
原创 python踩坑
②struct.unpack ‘>IIII’:先解压四个int型数据,因为该图像二进制文件前4个数据分别为magic,num,rows,cols,与具体数据无关,可以跳过。以minist手写数据集为例子,这种数据后缀名为.bin或者压根没有,借助struct来读数据。其实参数主要考虑的是对齐的操作,根据二进制文件不同的数据类型进行设置。①这边的操作是先解压,再打开二进制文件,打开的时候文件名去掉.gz。这种属于计算每一次放数据的offset,老老实实一个数据一个数据放。①没有解压,直接打开文件。
2022-09-27 16:42:18 794
原创 新的解题思路
查询 1 :删除第 0 个元素,nums 变成 [0,2,5,6,1] ,最大子段和为子段 [2,5,6,1] 的和 14。查询 2 :删除第 3 个元素,nums 变成 [0,2,5,0,1] ,最大子段和为子段 [2,5] 的和 7。查询 3 :删除第 2 个元素,nums 变成 [0,2,0,0,1] ,最大子段和为子段 [2] 的和 2。查询 4 :删除第 4 个元素,nums 变成 [0,2,0,0,0] ,最大子段和为子段 [2] 的和 2。下标1被添加,连接了端点1到端点2。.........
2022-08-23 23:36:51 154
原创 C++八股
另外,可以用于对重载函数的区分。:define宏是在预处理阶段展开,define宏没有类型,不做任何类型检查,仅仅是展开,不会分配内存,占用代码段空间,不能进行调试,因为在预编译阶段就已经替换掉了,define没有遇到#undefine之前是没有作用域限制的。new,delete 和 malloc,free都是释放申请的堆上的空间,都是成对存在的,否则将会造成内存泄漏或者二次释放。被mutable修饰的变量(mutable只能用于修饰类的非静态数据成员),将永远处于可变的状态(可以修改成员数据之类的)。
2022-08-18 21:34:03 1128
原创 八股(一天更新一点)
分类回归都可以。返回的是类别/数据。优点:可解释性、可以处理数值类和类别类的特征缺点:不稳定(鲁棒性差)、结点太多导致过拟合、构建树是顺序化的过程,不好被并行。
2022-08-10 16:52:01 466
原创 图/环 (更新至8.15)
请你返回一个从 node1 和 node2 都能到达节点的编号,使节点 node1 和节点 node2 到这个节点的距离 较大值最小化。这道题的解法其实不难,求node1、node2到所有结点的距离,然后遍历距离,找最小的最大值。——从入度为0的结点出发,进行拓扑排序,遍历到的结点入度- 1。给你一个 n 个节点的 有向图 ,节点编号为 0 到 n - 1 ,每个节点 至多 有一条出边。解释:从节点 0 到节点 2 的距离为 1 ,从节点 1 到节点 2 的距离为 1。(在本题中,处理入度,甚至还做了。..
2022-08-10 14:16:44 232
原创 树(更新至11.17)
2.后面的判断是后序遍历,请注意a和b的值是一直传递上去的,而并不是重新定义。也就是说,如果底部某一个结点遍历到了p的值,会一直顺着回溯方向往上。我的方法每次递归返回两个值①有无结点1?第一次两边都有的就是结果。题解的方法每次递归只返回一个值是否存在结点1或者结点2。往上回溯,因为公共祖先一定不可能在下面,已经没有往下走的必要了。1.前置增加判断条件若碰到p后者q,直接。其实吧,这题我用一种偏复杂的方法做了。①两边都没有返回None。②有一边没有返回另一边。③两边都有返回root。...
2022-07-28 16:08:22 137
原创 排序(更新至7.27)
但是假如数组是[1,2,3,4],1本来就应该停在第一个位置,输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。这个快排的代码和上一次的贴的代码有点不一样,更加的简洁,其实思想也很好理解,每次确定。可以脑补一下假如数组是[1,2,3,4]数组一路顺滑,然后j疯狂减,超出索引。这题的思路其实不难,用到自定义排序方法。用这种方法将数组中的元素从小到大排序即可。输入[3,30,34,5,9]输出“3033459”1.while循环还有。输入[10,2]...
2022-07-27 16:34:25 82
原创 栈、队列(更新至9.14)
今天不知道为什么 好困什么时候要用到栈呢,真的搞不太清楚,先上题给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。先给出简单解法:依次遍历每一个矩阵宽度,找到这个宽度的边界。比如:对于height[0] = 2,我们找到它的边界是左0右0,面积是1;对于height[2] = 5,我们找到它的边界是左2右3,面积是2。但时间复杂度是O(n2)O(n^2)O(n2)其实我们思考一下,找边界的问题,就是找到左/右边
2022-06-30 15:19:52 100
原创 位运算(更新至8.31)
这种题基本就是碰一次死一次…根本不知道什么时候会用位运算。题1一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例 1:输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]这题包含挺多知识点的,结果我一个都不会。知识点1:用异或找出一个不同的数字因为两个相同的数字用异或的结果一定是0,所以数组里只有一个孤零零的数字,所有数字异或的结果就是那个数字。res = 0for n
2022-05-09 14:43:32 124
原创 回溯(更新至8.29)
我感觉回溯的题都挺难的,改用python之后重新整理一个合集吧。4.26 字符串的排列组合输入一个字符串,打印出该字符串中字符的所有排列。输入:s = “abc”输出:[“abc”,“acb”,“bac”,“bca”,“cab”,“cba”]回溯的思路显而易见,但不知道怎么系统地写这个框架。我把这道题的框架理解为:确定第1个字符、确定第2个字符、… 、确定第n个字符。中间还要防止重复的问题。题解的亮点在于:①通过交换字符来完成确定字符的操作②通过Set来防止重复字符,Set不是全局的,只影响
2022-04-26 11:10:32 117
原创 运用最小堆(更新至8.24)
Python语言中的堆为最小堆,所以用Python刷题都是在最小堆的基础上。先说一个结论:最大堆解决取最小的问题,最小堆解决取最大的问题例题输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。例如输入:arr = [3,2,1], k = 2输出:[1,2] 或者 [2,1]根据之前的结论,取最小用大根堆。那具体的思路是:维护长度为k的大根堆,新的数和堆顶元素比较,如果小于堆顶,则堆顶出来,新的元素进去,这样
2022-04-22 14:55:38 964
原创 二分法(更新至7.21)
更好地让我理解用二分法解决第k小及第k小的变体问题。第k小/大其实这道题在牛客出现过,思路是用快排,但我现在也忘了- -二分法 + 快排的思路是:设数组元素个数为n,每次利用快排对当前的第一个数进行索引确定。①:如果索引 = k - 1,皆大欢喜,返回;②:如果索引 < k - 1,往右边找;③:如果索引 > k - 1,往左边找。附上代码:import java.util.*;public class Solution { public int findKth(i
2022-04-12 16:52:01 138
原创 动态规划(更新至8.8)
动态规划也做了有一些了,挑选一些值得记录的。题1给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成两笔交易。这题是难度升级版。之前不限制交易次数的时候标准答案的DP将DP数组的第二维设置成:dp[ i ][0]: 手上没有股票dp[ i ][1]: 手上有股票(所以也是新的思路哈,dp数组的第二维可以是不同的状态)这题多了一个交易数量的限制,我当初还很傻逼地以为要建立dp数组的第三维…其实不就是多了几种状态吗。这题我们设
2021-09-17 11:20:23 98
原创 9.9 二分法
标准的二分法其实都会。这个博客收录一些二分法的变体问题哈。题1在旋转过的排序数组中找到目标位置的索引,如果找到返回下标,找不到返回-1。(旋转过的数组的意思就是:原来是一个完全有序的数组,旋转过一次可能会出现一组逆序对,其他情况照样有序)要求时间复杂度是(Ologn)面试时碰到这题,非常慌乱,乱到看错题目。这题的二分寻找,因为只需要找到一个唯一确定的值,所以这道题的思路在于:每次二分的时候找哪边?虽然这个旋转数组不是全部有序的,但是每次分开,一定有一部分的数组是有序的。所以思路就是:看有序那边有没有我
2021-09-09 16:46:56 83
原创 8.31 回溯
在这里更新一些回溯的题目吧题1给你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同 二叉搜索树 。可以按 任意顺序 返回答案。这道题返回的数据结构是List<TreeNode>,也就是多个二叉树的集合。之前做的回溯一般就是返回一个最好的结果或者是方法数,这次返回的数据结构比较复杂,这里埋了一个伏笔。这道题解法靠递归。递归思路是:先选择x作为这个树的根节点,然后构造左子树:选择比X小的树作为左根节点;构造右子树:选择比X大的树作为右根节点。递归调
2021-08-31 10:31:04 99
原创 shelf
6.7shelfshelf数据存储方案,有一点像字典。比如我新建一个demo,里面的内容是name:谁谁谁、info:谁谁谁…注意:这里的谁谁谁可以是字典/函数/元组等复杂的数据结构。具体例子见链接shelve模块的详述...
2021-06-07 19:47:34 194 2
原创 12.9
12.9我终于更新博客了!呜呜呜最近有点小懒各位爸爸们体谅一下。最开始是打算整理这次算法作业的,但这次的算法作业也太简单了8(狗头保命)。Greedy,目光短浅算法的作业就是猜一猜思路一条道走到黑就可以了。这次更新一些矩阵编程和机器学习相关的内容。np.argsort在奇异值分解的编程作业中,要对求出的特征值进行大小排序,之后相应的左右矩阵要按照最大特征值的顺序进行列变换。np.argsort的作业是返回一个数组从小到大的索引,我查了一下只能返回从小到大不能返回从大到小,于是可以这样操作:sort
2020-12-09 17:03:48 234 2
原创 11.21
OJ上恶心人的数据好啦又到了OJ作业的时候。这次的OJ作业是DP,不同于上一篇DP,由于要上机操作,加上出题者会给你恶心的测试样例卡你,所以多了很多实际的问题。题目:给定一个数组(long long型),最多可以删除一个数据,求最大的子数组和。如:[1,2,-3,2] 输出5[1,-2,-2,3]输出3其实我感觉DP的难点就是思路,有了思路就很好构造DP数组。由于我之前做的DP题目比较少,我看到了这题陷入了一个惯性思维:构造一个二维数组,不停遍历,返回的dp[n][n]值则为最大值?显然是错了,
2020-11-21 13:32:13 140 2
原创 11.19
11.19彩笔表妹的DP之旅换硬币求最小重量差彩笔表妹的DP之旅换硬币题目:给你n种面值的硬币(比如2元,5元,10元)(不要问我为什么有10元的硬币)和一定数量的钱m,求可以换成功的方法数。其实这个问题我上半年复试的时候有点印象,然后我今天又有幸找到了之前的视频重温了一下。视频中的题目问的是求交换成功的最少硬币的数量,我寻思这整挺好啊,换汤不换药。视频中的代码为:dp[0]=0 for(i=1;i<=M;++i){ //i为从1开始遍历金钱数 dp[i]=Integer.MAX_
2020-11-19 22:14:12 314 2
原创 11.15-16
11.15-16终于找出困扰我一天的bug了,哭哭哦数组与集合数组!运行代码时发现:preds = np.argmax(probs, axis=1)probs好像是一个二维数组竟然返回的是列最大值的索引!我非常惊讶,再三确认了argmax的函数。没错啊 argmax:返回数组最大值的索引,如果数组是二维数组的话:axis=0返回的是每列最大的索引,axis=1返回的是每行最大的索引。错误的原因在于probs不是数组!是一个集合,里面有一个数组!数组与集合数组的区别在于:1.数组(np
2020-11-16 01:48:38 185
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人