自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux下c控制光标

最近在写进度条的需求,需要控制光标,用到下面的相关函数。

2023-08-16 11:29:57 497 2

原创 linux下实现键盘的非阻塞输入

最近遇到一个需求:linux下的程序在忽略其他退出信号的情况下,按q键退出。由于主线程需要监听键盘输入,正常情况读取字符串会阻塞,导致主线程无法正常退出,因此考虑用非阻塞的形式实现。在linux下每打开一个终端,系统自动的就打开了三个文件,它们的文件描述符分别为0,1,2,功能分别是“标准输入”、“标准输出”和“标准错误输出”,同时对应了三个文件流指针,分别是stdin,stdout和stderr。

2023-07-26 10:37:25 543

原创 结构体内存对齐问题

c++内存对齐

2023-03-01 16:38:05 381 1

原创 gdb调试流程

【代码】gdb调试流程。

2023-02-13 14:01:54 114

原创 leetcode 9 回文数

题目: 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:输入:x = 121输出:true示例 2:输入:x = -121输出:false解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入:x = 10输出:false解释:从右向左读, 为 01 。因此它不是一个回文数。

2022-05-10 15:39:28 211

原创 leetcode 34 在排序数组中查找元素的第一个和最后一个位置

题目: 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例 2:输入:nums = [5,7,7,8,8,10], target = 6输出:[-1,-1]示例 3:输入:nums = [], target = 0输出:[-1,-1]思路寻找target

2022-05-10 15:34:24 73

原创 leetcode 35 搜索插入位置

题目: 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。示例 1:输入: nums = [1,3,5,6], target = 5输出: 2示例 2:输入: nums = [1,3,5,6], target = 2输出: 1示例 3:输入: nums = [1,3,5,6], target = 7输出: 4思路题目要求使用时间复杂度为 O(log n) 的算

2022-05-08 16:45:22 616

原创 leetcode 209 长度最小的子数组

题目: 给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。示例 1:输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。示例 2:输入:target = 4, nums = [1,4,4]输出:1示例

2022-05-07 21:43:15 65

原创 leetcode 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]暴力排序法最简单的思路,先对每个数字进行平方,然后进行排序就行代码://暴力解法

2022-05-06 18:26:15 65

原创 leetcode 27 移除元素

题目: 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:输入:nums = [3,2,2,3], val = 3输出:2, nums = [2,2]解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为

2022-05-05 16:53:44 54

原创 leetcode 704 二分查找

题目:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9 输出: 4 解释: 9 出现在 nums 中并且下标为 4 示例 2:输入: nums = [-1,0,3,5,9,12], target = 2 输出: -1 解释: 2 不存在 n

2022-05-04 15:24:38 180

原创 leetcode 160 相交链表

题目: 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构 。哈希集合思路: 首先遍历链表A,将链表A中的每一个结点都加入哈希集合中,然后遍历链表B的每个结点。如果当前结点不在哈希集合中,继续遍历下一个结点。如果当前结点在哈希集合中,则之后的结点都在哈希集合中如果链表B的所有结点都

2022-03-31 22:36:36 259

原创 leetcode 155 最小栈

题目: 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。实现 MinStack 类:MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int getMin() 获取堆栈中的最小元素。示例 1:输入:["MinStack","push","push","push","getMin","pop","top","getMin"

2022-03-28 21:37:43 299

原创 leetcode 141 环形链表

题目: 给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。如果链表中存在环 ,则返回 true 。 否则,返回 false 。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到

2022-03-27 20:55:12 147

原创 Win11+RTX3060配置pytorch环境(一些踩坑记录)

    30系显卡目前只支持cuda11以上的版本,如果装的版本过低会导致Pytorch无法使用GPU加速。装错了就得卸载重装一遍。目前我装成功的环境版本是:CUDA Toolkit 11.1.1​cuDNN v8.1.1 (Feburary 26th, 2021), for CUDA 11.0,11.1 and 11.2pytorch版本1.8.0去pytorch官网可以找到对应版本的pytorch版本1.8.0https://pytorch.org

2022-03-25 20:33:35 2831 4

原创 leetcode 136 只出现一次的数字

题目: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4异或运算思路: 题目要求时间复杂度O(n),空间复杂度O(1)。只有位运算可以做到,异或运算有以下的特性。交换律:a ^ b ^ c <=> a ^ c ^ b任何数于0异或为任何数 0 ^

2022-03-22 16:17:10 831

原创 leetcode 121 买卖股票的最佳时机

题目:给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润

2022-03-19 21:29:30 60

原创 ffmpeg ts与mp4互相转换

官网上新版(4.4版本)出来了基本版:https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-essentials.zip完整版:https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full.7zbin路径加入环境变量mp4转tsffmpeg -i 1.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 1.tsts转mp4ffmpeg -i 2.

2022-03-15 17:17:07 13327 1

原创 leetcode 22 括号生成

题目:数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例 1:输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:输入:n = 1输出:["()"]暴力法思路1:首先暴力生成所有22n2^{2n}22n 个 ‘(’ 和 ‘)’ 字符构成的序列,然后我们检查每一个是否有效即可。生成的过程使用递归实现。class Solution { public List&lt

2022-03-08 20:57:33 94

原创 leetcode 15 三数之和

题目:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]排序 + 双指针思路:如何去除重复解。算法流程:特判,对于数组长度

2022-03-01 11:22:45 62

原创 leetcode 11 盛最多水的容器

题目:给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49 示例 2:输入:height = [1,1]输出:1双指针思路:    一开始两个指针一个指向开头一个指向结尾,此

2022-02-24 16:47:33 112

原创 leetcode 5 最长回文子串

题目:给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"动态规划思路1:    回文字符串有一个特性:如果一个字符串是回文字符串ababa,那么去掉他的首位两个字符bab,还是一个回文字符串。反之,如果一个回文字符串bab,首尾加上两个相同的字符还是回文字符串ababa  &nbsp

2022-02-23 19:45:37 417

原创 leetcode 3 无重复字符的最长子串

题目:给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。请注意,你的答案必须是 子串 的长度,"pwke"

2022-02-22 13:10:43 42

原创 leetcode 2 两数相加

题目:给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9,9,9,9,9,9], l

2022-02-21 14:48:18 49

原创 leetcode 104 二叉树的最大深度

题目:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。思路:如果我们知道了左子树和右子树的最大深度,那么该二叉树的最大深度即为子树的深度最大值+1。而左子树和右子树的最大深度又可以以同样的方式进行计算。因此我们可以用「深度优先搜索」的方法来计算二叉树

2022-02-20 15:49:59 111

原创 leetcode 101 对称二叉树

题目 给你一个二叉树的根节点 root , 检查它是否轴对称。示例 1:输入:root = [1,2,2,3,4,4,3]输出:true示例 2:输入:root = [1,2,2,null,3,null,3]输出:false**递归思路:**递归三部曲确定递归函数的参数和返回值因为我们要比较的是根节点的两个子树是否是相互翻转的,进而判断这个树是不是对称树,所以要比较的是两个树,参数自然也是左子树节点和右子树节点。确定终止条件要比较两个节点数值相不相同,首先要把两个节点为

2022-01-21 21:01:56 88

原创 leetcode 94 二叉树的中序遍历

题目 给定一个二叉树的根节点 root ,返回它的 中序 遍历。示例 1:输入:root = [1,null,2,3]输出:[1,3,2]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[2,1]示例 5:输入:root = [1,null,2]输出:[1,2]基本思路二叉树的中序遍历:按照访问左子树——根节点——右子树的方式遍历这棵树,而在访问左子树或者右子树的时候我们按照同

2022-01-21 19:46:40 395

原创 leetcode 70 爬楼梯

题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?示例 1:输入:n = 2输出:2解释:有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入:n = 3输出:3解释:有三种方法可以爬到楼顶。4. 1 阶 + 1 阶 + 1 阶5. 1 阶 + 2 阶6. 2 阶 + 1 阶基本思路:最后一步可能跨了一级台阶,也可能跨了两级台阶,所以我们可以列出如下式子:它意味着爬到第n级台阶

2022-01-21 15:09:09 339

原创 leetcode 53 最大子数组和

**题目:**给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [5,4,-1,7,8]输出:23思路:动态规划最重要的思想就是利用上一个状态, 对于本题而言就是: 到底要不要

2022-01-14 22:33:16 112

原创 leetcode 21 合并两个有序链表

**题目:**将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]思路:递归的核心在于,我只关注我这一层要干什么,返回什么,至于我的下一层(规模减1),我不管。java代码的递归实现class Solution {

2022-01-13 16:50:59 151

原创 P9 多分类问题

    softmax的输入不需要再做非线性变换,即softmax之前不再需要激活函数(relu)。softmax两个作用:1、如果在进行softmax前的input有负数,通过指数变换,得到正数。2、使所有类的概率求和为1。    在多分类问题中,标签y的类型是LongTensor。比如说手写字符0-9分类问题,如果y = torch.LongTensor([3]),对应的one-hot是[0,0,0,1,0,0,0,

2022-01-13 15:24:20 94

原创 P8 加载数据集

一些知识点的说明:1、DataSet 是抽象类,不能实例化对象,我们需要自己写一个数据集的类去继承。继承DataSet 要重写init,getitem,len魔法函数。分别是为了加载数据集,获取数据索引,获取数据总量。2、DataLoader 需要获取DataSet提供的索引[i]和len;用来帮助我们加载数据,比如说做shuffle(打乱数据,提高数据集的随机性),batch_size,能拿出Mini-Batch进行训练。它帮我们自动完成这些工作。DataLoader可实例化对象。3、*__ ge.

2022-01-13 15:24:04 171

原创 P7 处理多维特征的输入

教程来源b站刘二《pytorch深度学习实战》乘的权重(w)都一样,加的偏置(b)也一样。b变成矩阵时使用广播机制。神经网络的参数w和b是网络需要学习的,其他是已知的。学习能力越强,有可能会把输入样本中噪声的规律也学到。我们要学习数据本身真实数据的规律,学习能力要有泛化能力。该神经网络共3层;第一层是8维到6维的非线性空间变换,第二层是6维到4维的非线性空间变换,第三层是4维到1维的非线性空间变换。本算法中torch.nn.Sigmoid() # 将其看作是网络的一层,而不是简单的

2022-01-13 15:23:43 98

原创 P6 逻辑斯蒂回归

逻辑斯蒂回归和线性模型的明显区别是在线性模型的后面,添加了激活函数(非线性变换)分布的差异:KL散度,cross-entropy交叉熵。BCELoss(Binary CrossEntropyLoss ) 是CrossEntropyLoss的一个特例,只用于二分类问题,而CrossEntropyLoss可以用于二分类,也可以用于多分类。如果是二分类问题,建议BCELoss。如果预测与标签越接近,BCE损失越小。###代码实现import torch# prepare datasetx_da

2022-01-13 15:23:16 94

原创 P5 用pytorch实现线性回归

PyTorch 实现的线性回归准备数据集用类封装设计一个模型 # 目的是为了前向传播forward,即计算y hat(预测值)使用pytorch的API来定义 loss 和 optimizer 。其中,计算loss是为了进行反向传播,optimizer是为了更新梯度。训练过程 :forward+backward+update    一些注意点:一个类实例要变成一个可调用对象,只需要实现一个特殊方法*__ call ()*,Module

2022-01-13 15:22:28 99

原创 leetcode 13 罗马数字转整数

**题目:**罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V +

2022-01-13 15:20:49 53

原创 leetcode 1 两数之和

创建一个哈希表,对于每一个 x,我们首先查询哈希表中是否存在 target - x,然后将 x 插入到哈希表中,即可保证不会让 x 和自己匹配。使用哈希表,可以将寻找 target - x 的时间复杂度降低到从 O(N) 降低到 O(1)。给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。整数,并返回它们的数组下标。你可以按任意顺序返回答案。target 的那。

2022-01-12 16:45:11 86

原创 leetcode 20 有效的括号

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2022-01-12 16:36:41 54

原创 P4 反向传播

重要的数据结构Tensor,包含data和grad(损失函数对权重的导数)。w是Tensor(张量类型),Tensor中包含data和grad。grad初始为None,调用l.backward()方法后w.grad为Tensor,故更新w.data时需使用w.grad.data。如果w需要计算梯度,那构建的计算图中,跟w相关的tensor都默认需要计算梯度。w是Tensor, forward函数的返回值也是Tensor,loss函数的返回值也是Tensor本算法中反向传播主要体现在,l.

2021-11-24 21:24:34 92

原创 P9课后作业《PyTorch深度学习实践》kaggle-otto多类别分类

难度不大,只需在手写字符的基础上做些改变。重点在于pytorch学习,效果并不是特别好,在测试集上的loss有16下面是pytorch实现代码:import torchfrom torch.utils.data import Dataset, DataLoaderimport pandas as pdimport numpy as np from tqdm import tqdm#定义一个cpudevice = torch.device("cuda:0" if torch.cuda.i

2021-11-18 15:16:28 820 3

空空如也

空空如也

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

TA关注的人

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