- 博客(131)
- 收藏
- 关注
原创 C++基础:STL序列式容器:list、array、vector、queue、deque
这篇是不得不写,因为很重要,需要做总结。主要写STL容器1.list容器可以参考:list容器list容器是个双向链表容器,前后元素靠指针维系,所以list容器中的元素可以分散存储在内存空间,而不是必须存储到连续内存。这样的存储结构,在序列的任何已知位置插入或删除元素很方便快速,时间复杂度为O(1)O(1)O(1),但是不可以通过位置访问元素。比如array和vector可以直接支持容器对象名[n]来访问第n个元素,list不支持。使用容器时,请包含代码:#include <list&g
2021-04-22 16:36:07 1098
原创 跟着专注于计算机视觉的AndyJ的妈妈我学算法之每日一题leetcode117. 填充每个节点的下一个右侧节点指针 II
容易想到层序遍历,但是感觉自己的思路简单,写起来比较,也不麻烦吧。。。题:117. 填充每个节点的下一个右侧节点指针 II给定一个二叉树struct Node { int val; Node *left; Node *right; Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。 进阶:你只能使用常量级额外空
2021-04-21 15:14:57 214
原创 跟着专注于计算机视觉的AndyJ的妈妈我学算法之每日一题leetcode129. 求根节点到叶节点数字之和
这个题不难,细心做,树的题其实就是练了下指针。题目:129. 求根节点到叶节点数字之和给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。每条从根节点到叶节点的路径都代表一个数字:例如,从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123 。计算从根节点到叶节点生成的 所有数字之和 。叶节点 是指没有子节点的节点。code:/** * Definition for a binary tree node. * struct
2021-04-21 14:35:14 228
原创 跟着专注于计算机视觉的AndyJ的妈妈我学算法之每日一题leetcode114. 二叉树展开为链表
这个题的细节很多,注意,再也没啥了。114. 二叉树展开为链表给你二叉树的根结点 root ,请你将它展开为一个单链表:展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。 示例 1:输入:root = [1,2,5,3,4,null,6]输出:[1,null,2,null,3,null,4,null,5,null,6]示例 2:输入:root = []输出:[
2021-04-21 10:54:06 127
原创 Leetcode经典重刷
找工作差不多了,发现好久没有刷题了。罪过罪过,题这个东西真的一天不刷就手生,还是要多写写,算法这个东西,还是挺有意思的,要努力站在不同的角度思考问题。本博客就是回顾之前写过的题,如果写出来了,就不在这里写了,写不出来的,或者不熟练的,会把思路再总结一遍。重刷如下:Leetcode739,这个题,第一是要知道用栈,第二是要思考栈里存什么。代码很简单,思路很有意思。Leetcode986,这个题,核心思想就是大化小,把问题提炼出来,这种题要牢记大化小的思想。也就是分情况讨论的思想。有时候情况太多,可以
2021-04-21 09:46:46 124
原创 LR
动手学PyTorch逻辑回归,是分类问题,所以损失函数是CrossEntropyLoss。推导:写出逻辑回归的表达式(某个样本的预测概率)写出总的分布的表达式(所有样本的预测概率)最大似然法求参数的更新pytorch代码实现import numpy as npimport torchimport torch.optim as optimimport torch.utils.data as Datadef cross_entropy(y_hat, y): # gaher:沿给定轴
2021-04-21 09:45:37 94
原创 树
决策树的损失函数《统计学习方法》5.1.4 决策树:决策树的损失函数通常是正则化的极大似然函数。(理解与推导)个人理解,决策树的损失函数说的是在剪枝的时候。经验风险+结构风险。对ID3和C4.5应该是:ref1;ref2对CART应该是:emmmm,下次贴,看书去吧。5.5节。参考《统计学习方法》决策树的生长:ID3:信息增益C4.5:信息增益比CART:对分类树用Gini指数最小准则;对回归树用平方误差最小化准则==================================
2021-04-21 09:45:22 60
原创 跟着专注于计算机视觉的AndyJ的妈妈我学算法之每日一题leetcode107. 二叉树的层序遍历 II
用c++刷的简单题就不写了。这个是个中等题,其实很简单,涉及到了queue,queue的push,pop,front,对于vector,则是push_back。题:107. 二叉树的层序遍历 II给定一个二叉树,返回其节点值自底向上的层序遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层序遍历为:[ [15
2021-04-21 09:44:10 116
原创 C++基础:重载、重写、隐藏
重载与重写重载、重写和隐藏三者的区别重写(覆盖):是指派生类中存在重新定义的函数。其函数名,参数列表,返回值类型,所有都必须同基类中被重写的函数一致。只有函数体不同(花括号内),派生类调用时会调用派生类的重写函数,不会调用被重写函数。重写的基类中被重写的函数必须有virtual修饰。...
2021-04-19 17:18:45 83
原创 C++基础:构造函数,析构函数
C++中的.和::和:和->的区别c++中“::”和“:”的区别 在学习C++的过程中我们经常会用到.和::和:和->,在此整理一下这些常用符号的区别。 1、A.B则A为对象或者结构体; 2、A->B则A为指针,->是成员提取,A->B是提取A中的成员B,A只能是指向类、结构、联合的指针; 3、::是作用域运算符,A::B表示作用域A中的名称B,A可以是名字空间、类、结构; 4、:一般用来表示继承;...
2021-04-09 16:03:46 103
原创 C++基础:public,protected,private,继承,虚函数
public, protected, private的用法1.类的一个特征就是封装,public和private作用就是实现这一目的。所以:用户代码(类外)可以访问public成员而不能访问private成员;private成员只能由类成员(类内)和友元访问。 2.类的另一个特征就是继承,protected的作用就是实现这一目的。所以:protected成员可以被派生类对象访问,不能被用户代码(类外)访问。C++继承当一个类派生自基类,该基类可以被继承为 public、protec
2021-04-09 15:20:32 400
原创 跟着专注于计算机视觉的AndyJ的妈妈我学算法之每日一题不是leetcode判断有几个1
判断一个int数字里有多少个1,简单题。直接看代码:#include <iostream>using namespace std;int fun(int x){ int count=0; while(x){ if(x%10==1) count++; x /= 10; } return count;}int main(){ int num=11122; cout<<f
2021-04-08 16:44:28 94
原创 跟着专注于计算机视觉的AndyJ的妈妈我学算法之每日一题不是leetcode点是否在三角形内
C++判断pt3是否在有pt0,pt1,pt2三个点组成的三角形内。直接看代码:#include <iostream>#include <math.h>using namespace std;#define ERROR 0.001struct point{ float x; float y;};float getSquar(point pt0, point pt1, point pt2){ point AB, BC; AB.x
2021-04-08 16:36:59 145
原创 跟着专注于计算机视觉的AndyJ的妈妈我学算法之每日一题leetcode1275. 找出井字棋的获胜者
题是简单题,多写写代码就好了。题:1275. 找出井字棋的获胜者A 和 B 在一个 3 x 3 的网格上玩井字棋。井字棋游戏的规则如下:玩家轮流将棋子放在空方格 (" ") 上。第一个玩家 A 总是用 "X" 作为棋子,而第二个玩家 B 总是用 "O" 作为棋子。"X" 和 "O" 只能放在空方格中,而不能放在已经被占用的方格上。只要有 3 个相同的(非空)棋子排成一条直线(行、列、对角线)时,游戏结束。如果所有方块都放满棋子(不为空),游戏也会结束。游戏结束后,棋子无法再进行任何移
2021-04-06 16:35:01 118
原创 跟着专注于计算机视觉的AndyJ的妈妈我学算法之每日一题leetcode832. 翻转图像
简单题,我还能说什么。我也不想做简单题,可我能怎么办,c++才开始学没几天。来吧,整上先。题目:832. 翻转图像给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果。水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, 1]。反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。例如,反转 [0, 1, 1] 的结果是 [1, 0, 0]。 示例 1:输入:[[1,1,0],[1,0,1],
2021-04-03 14:33:46 145
原创 跟着专注于计算机视觉的AndyJ的妈妈我学算法之每日一题leetcode605. 种花问题
虽然又是一个简单题,不过这次用vector更熟练了,也能自己根据学到的知识判断错误了。比如,vector中,insert操作,第一个为pos位置,习惯性的打了0作为启示位置。后来发现,应该放一个指针,所以改成了vector.begin()。注意事项:end()函数得到的是容器中最后一个元素的下一个位置好了题目:605. 种花问题假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给你一个整数数组 flowerbed 表示
2021-04-03 14:12:57 162
原创 跟着专注于计算机视觉的AndyJ的妈妈我学算法之每日一题leetcode228. 汇总区间
刚开始用c++,还是有点不习惯呀,都是要看着别人写的东西才能自己写出来,还是多重复,早日步入正轨吧。。。题目:228. 汇总区间给定一个无重复元素的有序整数数组 nums 。返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。列表中的每个区间范围 [a,b] 应该按如下格式输出:"a->b" ,如果 a != b"a" ,如果 a == b 示例 1:输
2021-04-03 12:39:01 142
原创 跟着专注于计算机视觉的AndyJ的妈妈我学算法之每日一题leetcode1535. 找出数组游戏的赢家
直接看题:1535. 找出数组游戏的赢家给你一个由 不同 整数组成的整数数组 arr 和一个整数 k 。每回合游戏都在数组的前两个元素(即 arr[0] 和 arr[1] )之间进行。比较 arr[0] 与 arr[1] 的大小,较大的整数将会取得这一回合的胜利并保留在位置 0 ,较小的整数移至数组的末尾。当一个整数赢得 k 个连续回合时,游戏结束,该整数就是比赛的 赢家 。返回赢得比赛的整数。题目数据 保证 游戏存在赢家。示例 1:输入:arr = [2,1,3,5,4,6,7], k
2021-03-19 16:30:10 182 1
原创 跟着专注于计算机视觉的AndyJ的妈妈我学算法之每日一题leetcode1476. 子矩形查询
接着刷。题目:1476. 子矩形查询请你实现一个类 SubrectangleQueries ,它的构造函数的参数是一个 rows x cols 的矩形(这里用整数矩阵表示),并支持以下两种操作:1. updateSubrectangle(int row1, int col1, int row2, int col2, int newValue)用 newValue 更新以 (row1,col1) 为左上角且以 (row2,col2) 为右下角的子矩形。2. getValue(int row,
2021-03-19 15:56:25 139
原创 跟着专注于计算机视觉的AndyJ的妈妈我学算法之每日一题leetcode1588. 所有奇数长度子数组的和
再刷一个c++,这个题虽然写的是简单,但是可以有很多种解法,如果数组的量级增加,要求时间复杂度为OnO_{n}On则可化身为中等题。看题:1588. 所有奇数长度子数组的和给你一个正整数数组 arr ,请你计算所有可能的奇数长度子数组的和。子数组 定义为原数组中的一个连续子序列。请你返回 arr 中 所有奇数长度子数组的和 。示例 1:输入:arr = [1,4,2,5,3]输出:58解释:所有奇数长度子数组和它们的和为:[1] = 1[4] = 4[2] = 2[5] = 5
2021-03-19 14:14:24 128
原创 跟着专注于计算机视觉的AndyJ的妈妈我学算法之每日一题leetcode977. 有序数组的平方
超级简单的题目,熟悉c++,最近只刷c++数组的题977. 有序数组的平方给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例 1:输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]示例 2:输入:nums = [-7,-3,2,3,11]输出:[4,9,9,49,121] 提示:1
2021-03-19 13:19:54 162
原创 跟着专注于计算机视觉的AndyJ的妈妈我学算法之每日一题leetcode面试题17.10. 主要元素
这个题是个基础题,现在c++不熟练,就刷刷简单的题玩玩。题:面试题 17.10. 主要元素数组中占比超过一半的元素称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。示例 1:输入:[1,2,5,9,5,9,5,5,5]输出:5 示例 2:输入:[3,2]输出:-1示例 3:输入:[2,2,1,1,1,2,2]输出:2 说明:你有办法在时间复杂度为 O(N),空间复杂度为 O(1) 内完成吗?这个题太简单,用三种解法解。code1:class S
2021-03-19 10:22:12 144
原创 跟着专注于计算机视觉的AndyJ的妈妈我学算法之每日一题leetcode867 转置矩阵
这个题很好,想到了用python的zip操作,这个zip操作还是挺不错的,记住有这个操作,用的时候会方便很多。今天用c++解一下这个简单题吧。先看题:给你一个二维整数数组 matrix, 返回 matrix 的 转置矩阵 。矩阵的 转置 是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[1,4,7],[2,5,8],[3,6,9]]示例 2:输入:matrix = [[1,2,3],[4,
2021-03-18 16:30:54 148 1
原创 排序算法——堆排序
话不多说,看代码。def build_max_heap(heap): # 构造一个堆,将堆中所有数据重新排序 heapSize = len(heap) for i in range((heapSize -2)//2,-1,-1): # 自底向上建堆 max_heapify(heap, heapSize, i)def max_heapify(heap,heapSize,root): # 调整列表中的元素并保证以root为根的堆是一个大根堆 '''
2020-09-15 16:00:23 97
原创 概率题数学题等
在一圆周上任意取三个点构成锐角三角形的概率是多少?经典题。答案是1/4,我觉得按概率积分的角度理解最好了。A点随便给,然后B点到A的距离为xxx,B的概率为dx/ldx/ldx/l,那么C的概率为x/lx/lx/l可以构成锐角三角形(或者说包含圆心),然后对dxdxdx在圆周上积分,分为小于l/2l/2l/2和大小l/2l/2l/2,最终答案是1/8−0+0−(−1/8)1/8-0+0-(-1/8)1/8−0+0−(−1/8)。所以是1/41/41/4。好了。x,y,z都是(0,1)均匀分布,x+y+z
2020-08-25 14:14:12 256
原创 leetcode 813. 最大平均值和的分组
这个题要注意python2,python3的区别。。。python2好像小数点后的值出不来?。。。题目:813. 最大平均值和的分组我们将给定的数组 A 分成 K 个相邻的非空子数组 ,我们的分数由每个子数组内的平均值的总和构成。计算我们所能得到的最大分数是多少。注意我们必须使用 A 数组中的每一个数进行分组,并且分数不一定需要是整数。示例:输入: A = [9,1,2,3,9]K = 3输出: 20解释: A 的最优分组是[9], [1, 2, 3], [9]. 得到的分数是 9
2020-08-18 15:10:25 137
原创 Leetcode 23. 合并K个升序链表
用大小为k的堆来做,注意堆的使用。23. 合并K个升序链表给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[ 1->4->5, 1->3->4, 2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->
2020-08-18 14:27:18 656
原创 LeetCode 337. 打家劫舍 III
题挺好,常规dfs。题目:337. 打家劫舍 III在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。示例 1:输入: [3,2,3,null,3,null,1] 3
2020-08-18 11:26:54 97
原创 LeetCode 43. 字符串相乘
题目:43. 字符串相乘给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = "2", num2 = "3"输出: "6"示例 2:输入: num1 = "123", num2 = "456"输出: "56088"说明:num1 和 num2 的长度小于110。num1 和 num2 只包含数字 0-9。num1 和 num2 均不以零开头,除非是数字 0 本身。不能使
2020-08-18 10:44:37 123
原创 LeetCode 491. 递增子序列
递归,但是会超时,因为重复的结果。去重,剪枝,太麻烦。使用集合,set( ), 数据结构。达到去重目的。题目:491. 递增子序列给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。示例:输入: [4, 6, 7, 7]输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]]说明:给定数组的长度不会超过15。数组中的整数范围是 [-100,100]。
2020-08-18 10:33:12 161
原创 经典概率题 之 随机算法之水塘抽样算法
题目:给你一个未知长度的链表,请你设计一个算法,只能遍历一次,随机地返回链表中的一个节点。LeetCode 382 和 398 题,水塘抽样算法(Reservoir Sampling),本质上是一种随机概率算法。382题 链表随机节点:382. 链表随机节点给定一个单链表,随机选择链表的一个节点,并返回相应的节点值。保证每个节点被选的概率一样。进阶:如果链表十分大且长度未知,如何解决这个问题?你能否使用常数级空间复杂度实现?示例:// 初始化一个单链表 [1,2,3].ListNod
2020-08-17 14:44:28 409
原创 python基本操作
操作(操作1)[https://mp.weixin.qq.com/s/fOU5AArowNmR7lOFvrpQcg](操作2)[https://mp.weixin.qq.com/s/TKM1nTWu2CrpL7m7qX0AEw](操作3)[https://mp.weixin.qq.com/s/7wxGz_iqtuATFPpR5hR0VQ](操作4)[https://mp.weixin.qq.com/s/aMIn7qlSCMDKstjDHa6rXQ](操作5)[https://mp.weixin.q
2020-08-17 14:28:08 142
原创 牛客网 合并回文子串
这个题仍然是dp,让我顺便把回文字串啥的又做了一遍。链接:https://ac.nowcoder.com/acm/problem/13230来源:牛客网合并回文子串时间限制:C/C++ 2秒,其他语言4秒空间限制:C/C++ 262144K,其他语言524288K64bit IO Format: %lld题目描述 输入两个字符串A和B,合并成一个串C,属于A和B的字符在C中顺序保持不变。如"abc"和"xyz"可以被组合成"axbycz"或"abxcyz"等。我们定义字符串的价值为其最
2020-08-13 22:50:22 180
原创 leetcode 354. 俄罗斯套娃信封问题
这个题思路比较灵活先按照一般升序排列,然后看另一边能否装得下考虑到如果w相同,那h只能装一个,所以尽量装一个最大的所以w相同,h按降序排列大部分问题,其实还是要好好分析,分析问题,然后解决问题,这样对没有做过的问题比较友好。提升解决问题的能力。比如把问题,进行转换,数据结构上啊(xxx带士兵,士兵有战斗力和人数约束的的属性那个题,之前博客有发),类似这个题,都是拆解为子问题来做,挺好。题目:354. 俄罗斯套娃信封问题给定一些标记了宽度和高度的信封,宽度和高度以整数对形式 (w, h) 出现
2020-08-12 14:48:56 123
原创 leetcode 673. 最长递增子序列的个数
这个题是动态规划,重点在于使用两个dp数组,一个记录以当前数组结尾的最长子序列的长度。另一个记录,有多少种到这么长的方式(个数)。重点是,初始化的边界条件 和 细节的优化。673. 最长递增子序列的个数给定一个未排序的整数数组,找到最长递增子序列的个数。示例 1:输入: [1,3,5,4,7]输出: 2解释: 有两个最长递增子序列,分别是 [1, 3, 4, 7] 和[1, 3, 5, 7]。示例 2:输入: [2,2,2,2,2]输出: 5解释: 最长递增子序列的长度是1,并且存
2020-08-12 14:09:40 160
原创 跟着专注于计算机视觉的AndyJ的妈妈我学算法之每日一题leetcode300 最长上升子序列
这个题,dp,好久没dp了,最近应该多看看,还有机器学习基础。啥都不能拉下啊啊啊。想清楚dp里存的是啥,就好些多了!!!重点:dp里存的是什么题目:300. 最长上升子序列给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。进阶: 你能
2020-08-11 23:09:59 126
原创 跟着专注于计算机视觉的AndyJ的妈妈我学算法之每日一题leetcode5 最长回文子串
这个题啊,不难。最近写dp太少了,还是要好好复习复习。好了,废话不多说,多写多看。对了,从后天开始,要开始训练宝儿手撕代码了,那就从我写过的博客里挑吧,自己也好温习,hhh。5. 最长回文子串给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"code:class Solution(object):
2020-08-11 22:39:42 118
原创 跟着专注于计算机视觉的AndyJ的妈妈我学算法之每日一题leetcode516最长回文子序列
这个题做了发现不难,白做了。这个题就是把原字符串S1,取个反,然后就成了S2,然后直接算S1,S2的最长公共字符串。一下把最长公共字符串那个题也做了。516. 最长回文子序列516. 最长回文子序列给定一个字符串 s ,找到其中最长的回文子序列,并返回该序列的长度。可以假设 s 的最大长度为 1000 。示例 1:输入:"bbbab"输出:4一个可能的最长回文子序列为 "bbbb"。示例 2:输入:"cbbd"输出:2一个可能的最长回文子序列为 "bb"。来源:力扣(L
2020-08-11 20:30:44 116
原创 牛客网 tokitsukaze and Soldier 问题
来源:牛客网题目描述 在一个游戏中,tokitsukaze需要在n个士兵中选出一些士兵组成一个团去打副本。第i个士兵的战力为v[i],团的战力是团内所有士兵的战力之和。但是这些士兵有特殊的要求:如果选了第i个士兵,这个士兵希望团的人数不超过s[i]。(如果不选第i个士兵,就没有这个限制。)tokitsukaze想知道,团的战力最大为多少。输入描述:第一行包含一个正整数n(1≤n≤10^5)。接下来n行,每行包括2个正整数v,s(1≤v≤10^9,1≤s≤n)。输出描述:输出一个正整数,表
2020-08-11 19:48:59 159
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人