- 博客(104)
- 收藏
- 关注
原创 大厂或许没有那么难进(C++后台开发)
前言遥想上届2021届毕业的师兄们人均40w的年薪,自己是羡慕至极,然而未曾想到自己也能成为当初自己羡慕的人之一。接下来我将和大家分享一些自己找工作的准备和其中的感悟。备战实习过完2021年到开学已经是2月底了,互联网公司最早的招聘马上就开始了,然而自己还什么都没有准备,算法题,八股文,项目一个都没有。听上届的师兄说要从四月开始就要投简历面试了,这时才意识到事情的严重性,心想完蛋了,这我哪能找到实习啊,安心整秋招得了,而且导师不一定放实习。然而在一次组会上,导师竟然主动提出可以让我们暑期去实习。这让我
2022-02-07 18:37:51 5220 15
原创 Leetcode刷题笔记系列——持续更新中
前言此博文是博主在刷完400多道leetcode题目后开始总结的,因为刷完题目后会很快就忘记,即使遇见相同或类似的仍然无法AC,在此打算将不同类型的题目进行总结,并尽量总结出模板,本系列是按照每日一题,或自己的刷题顺序进行总结,不足之处还望指出。这里只讲当我看到这道题的想法思路,具体的代码讲解不加解释,代码的实现有多种,而且leetcode上有很好的解释。类型题目抽屉原理Leetcode41 缺失的第一个正数...
2020-06-27 12:14:03 1058 1
原创 Leetcode刷题常用函数总结(C++)——随刷题更新中
字符串转整型stoi:stoi(s,start,base)//s是要转换的字符串,start是起始位置,base是要转换的整数进制,默认是从0位置开始,转换为10进制int main() { string str = "123"; int res = stoi(str); cout << res << endl; system("pause"); return 0;}数值转字符串to_stringto_string(val)//val可以是任何数值类型i
2020-06-16 22:23:38 1891
原创 leetcode685
刷题主页在本问题中,有根树指满足以下条件的有向图。该树只有一个根节点,所有其他节点都是该根节点的后继。每一个节点只有一个父节点,除了根节点没有父节点。输入一个有向图,该图由一个有着N个节点 (节点值不重复1, 2, …, N) 的树及一条附加的边构成。附加的边的两个顶点包含在1到N中间,这条附加的边不属于树中已存在的边。结果图是一个以边组成的二维数组。 每一个边 的元素是一对 [u, v],用以表示有向图中连接顶点 u 和顶点 v 的边,其中 u 是 v 的一个父节点。返回一条能删除的边,使得剩下
2020-09-17 20:31:55 309
原创 leetcode684
刷题主页在本问题中, 树指的是一个连通且无环的无向图。输入一个图,该图由一个有着N个节点 (节点值不重复1, 2, …, N) 的树及一条附加的边构成。附加的边的两个顶点包含在1到N中间,这条附加的边不属于树中已存在的边。结果图是一个以边组成的二维数组。每一个边的元素是一对[u, v] ,满足 u < v,表示连接顶点u 和v的无向图的边。返回一条可以删去的边,使得结果图是一个有着N个节点的树。如果有多个答案,则返回二维数组中最后出现的边。答案边 [u, v] 应满足相同的格式 u <
2020-09-17 19:56:44 188
原创 leetcode220
刷题主页在整数数组 nums 中,是否存在两个下标 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值小于等于 t ,且满足 i 和 j 的差的绝对值也小于等于 ķ 。如果存在则返回 true,不存在返回 false。示例 1:输入: nums = [1,2,3,1], k = 3, t = 0输出: true示例 2:输入: nums = [1,0,1,1], k = 1, t = 2输出: true示例 3:输入: nums = [1,5,9,1,5,9], k
2020-09-02 20:07:35 343
原创 No-reference stereoscopic image quality assessment using a multi-task CNN and registered distortion
摘要
2020-08-26 21:00:57 422
原创 Deep feature importance awareness based no-reference image quality prediction
摘要基于深度学习的图像质量评估(IQA)算法通常采用转移学习的方法,将一个预先训练好的分类任务网络转移到处理IQA任务上。虽然它可以在一定程度上克服IQA数据库不足的问题,但它不能区分重要的和不重要的深度特征,这可能导致预测性能不准确。在本文中,我们提出了一种基于深度特征重要性建模的无参考IQA方法。采用自适应迁移学习方法建立了SE-VGG网络。它可以抑制对IQA任务不重要的图像显著性目标局部特征,突出重要的图像失真特征和显著性目标。在小型IQA数据库中,研究了SE-VGG的结构以提高图像质量评价的准确性
2020-08-23 20:53:37 440
原创 leetcode5490
刷题主页> 厨房里总共有 n 个橘子,你决定每一天选择如下方式之一吃这些橘子:吃掉一个橘子。如果剩余橘子数 n 能被 2 整除,那么你可以吃掉 n/2 个橘子。如果剩余橘子数 n 能被 3 整除,那么你可以吃掉 2*(n/3) 个橘子。每天你只能从以上 3 种方案中选择一种方案。请你返回吃掉所有 n 个橘子的最少天数。示例 1:输入:n = 10输出:4解释:你总共有 10 个橘子。第 1 天:吃 1 个橘子,剩余橘子数 10 - 1 = 9。第 2 天:吃 6 个橘子,剩余橘子
2020-08-16 14:56:53 193
原创 leetcode5489
刷题主页在代号为 C-137 的地球上,Rick 发现如果他将两个球放在他新发明的篮子里,它们之间会形成特殊形式的磁力。Rick 有 n 个空的篮子,第 i 个篮子的位置在 position[i] ,Morty 想把 m 个球放到这些篮子里,使得任意两球间 最小磁力 最大。已知两个球如果分别位于 x 和 y ,那么它们之间的磁力为 |x - y| 。给你一个整数数组 position 和一个整数 m ,请你返回最大化的最小磁力。该题的题意可转化为让你找到一个最大磁力,可以使每个磁球都可以放进去
2020-08-16 14:06:11 117
原创 leetcode5471
刷题主页给你一个数组 nums 和一个整数 target 。请你返回 非空不重叠 子数组的最大数目,且每个子数组中数字和都为 target 。示例 1:输入:nums = [1,1,1,1,1], target = 2输出:2解释:总共有 2 个不重叠子数组(加粗数字表示) [1,1,1,1,1] ,它们的和为目标值 2 。示例 2:输入:nums = [-1,3,5,1,4,2,-9], target = 6输出:2解释:总共有 3 个子数组和为 6 。([5,1], [4,2],
2020-08-09 15:36:48 128
原创 leetcode147
刷题主页对链表进行插入排序。插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。 插入排序算法:插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。 重复直到所有输入数据插入完为止。示例 1:输入: 4->2->1->3 输出: 1-&
2020-08-07 11:30:38 165
原创 leetcode337
刷题主页在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。打家劫舍问题是典型的动态规划问题,但是这道题和传统的动态规划题不同,这道题是在二叉树上进行i选择,因此可以看成树形dp,本质思想还是
2020-08-05 16:13:29 221
原创 leetcode132
刷题主页给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回符合要求的最少分割次数。示例:输入: “aab”输出: 1解释: 进行一次分割就可将 s 分割成 [“aa”,“b”] 这样两个回文子串。最少分割次数,因此使用动态规划。读题可以发现,其实这道题属于字符串字典一类的问题,只是这里没有给出字典,而是使用某子串是否为回文串,但是整体思路是一样的,设dp[i]表示前i个字符的最少分割次数,如果s[j:i]是回文串,那么dp[i]=min(dp[i],dp[j-1]+1)
2020-07-25 11:21:40 157
原创 leetcode875
刷题主页珂珂喜欢吃香蕉。这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 H 小时后回来。珂珂可以决定她吃香蕉的速度 K (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 K 根。如果这堆香蕉少于 K 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。返回她可以在 H 小时内吃掉所有香蕉的最小速度 K(K 为整数)。示例 1:输入: piles = [3,6,7,11], H = 8输
2020-07-25 11:02:22 190
原创 leetcode153/154
刷题主页leetcode.153假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。你可以假设数组中不存在重复元素。示例 1:输入: [3,4,5,1,2]输出: 1示例 2:输入: [4,5,6,7,0,1,2]输出: 0看到排序数组,寻找其中的某个点,必定是二分法,而且二分法的模板很固定,就是计算中间值,根据中间值和左右两端值的大小来进行移动。不过其中有一点有
2020-07-22 10:28:41 215
原创 leetcode127
刷题主页给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如下规则:每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回 0。所有单词具有相同的长度。所有单词只由小写字母组成。字典中不存在重复的单词。你可以假设 beginWord 和 endWord 是非空的,且二者不相同。示例 1:输入:beginWord = “hit”,endWo
2020-07-21 10:25:10 145
原创 leetcode5465
刷题主页给你一棵树(即,一个连通的无环无向图),这棵树由编号从 0 到 n - 1 的 n 个节点组成,且恰好有 n - 1 条 edges 。树的根节点为节点 0 ,树上的每一个节点都有一个标签,也就是字符串 labels 中的一个小写字符(编号为 i 的 节点的标签就是 labels[i] )边数组 edges 以 edges[i] = [ai, bi] 的形式给出,该格式表示节点 ai 和 bi 之间存在一条边。返回一个大小为 n 的数组,其中 ans[i] 表示第 i 个节点的子树中与节点
2020-07-19 17:31:30 314
原创 leetcode115
刷题主页给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数。一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,“ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是)题目数据保证答案符合 32 位带符号整数范围。示例 1:示例2:读题可以发现这是字符串匹配类的问题,因此可以使用动态规划解决,其中的动态转移方程可以通过画表找到。class Solution {public: int
2020-07-18 18:18:44 191
原创 leetcode113
刷题主页给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22,返回:[[5,4,11,2],[5,8,4,5]]很经典的回溯算法,回溯算法的模板最好背下来,这里直接套用模板即可。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNod
2020-07-18 16:36:18 161
原创 leetcode97
刷题主页给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。示例 1:输入: s1 = “aabcc”, s2 = “dbbca”, s3 = “aadbbcbcac”输出: true示例 2:输入: s1 = “aabcc”, s2 = “dbbca”, s3 = “aadbbbaccc”输出: false这道题属于字符串匹配类,因此可以直接考虑动态规划。class Solution {public: bool isInterleave
2020-07-18 09:59:35 185
原创 leetcode1514
刷题主页给你一个由 n 个节点(下标从 0 开始)组成的无向加权图,该图由一个描述边的列表组成,其中 edges[i] = [a, b] 表示连接节点 a 和 b 的一条无向边,且该边遍历成功的概率为 succProb[i] 。指定两个节点分别作为起点 start 和终点 end ,请你找出从起点到终点成功概率最大的路径,并返回其成功概率。如果不存在从 start 到 end 的路径,请 返回 0 。只要答案与标准答案的误差不超过 1e-5 ,就会被视作正确答案。输入:n = 3, edges
2020-07-12 16:54:15 345
原创 leetcode1424
刷题主页给你一个列表 nums ,里面每一个元素都是一个整数列表。请你依照下面各图的规则,按顺序返回 nums 中对角线上的整数。示例 1:示例 3:输入:nums = [[1,2,3],[4],[5,6,7],[8],[9,10,11]]输出:[1,4,2,5,3,8,6,9,7,10,11]示例 4:输入:nums = [[1,2,3,4,5,6]]输出:[1,2,3,4,5,6]这是一道相对经典的数组遍历问题,实际上就是蛇形遍历,这时我们需要注意一个特性,即斜对角线的每个横纵
2020-07-10 21:49:17 251
原创 面试题17.13.恢复空格
刷题主页哦,不!你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子"I reset the computer. It still didn’t boot!“已经变成了"iresetthecomputeritstilldidntboot”。在处理标点符号和大小写之前,你得先把它断成词语。当然了,你有一本厚厚的词典dictionary,不过,有些词没在词典里。假设文章用sentence表示,设计一个算法,把文章断开,要求未识别的字符最少,返回未识别的字符数。注意:本题相对原题稍作改
2020-07-09 11:50:45 128
原创 leetcode139
刷题主页给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = “leetcode”, wordDict = [“leet”, “code”]输出: true解释: 返回 true 因为 “leetcode” 可以被拆分成 “leet code”。示例 2:输入: s = “applepenapple”, wordD
2020-07-09 10:44:33 186
原创 MetaIQA: Deep Meta-learning for No-Reference Image Quality Assessment
摘要DCNNs已经逐渐用于NR IQA,但是IQA的数据量非常小,因此大量已有的IQA算法是基于预训练的网络,但是这些预训练的网络并不是针对IQA任务设计的,因此这会导致泛化问题。针对这个问题,本文提出了基于元学习的NR IQA。其基本思想是学习人类在评估具有不同失真的图像质量时所共享的元知识,然后可以很容易地适应未知失真。具体来说,我们首先针对不同的失真收集了若干NR-IQA任务。然后采用元学习的方法来学习各种失真所共享的先验知识。最后,在目标NR-IQA任务上对质量先验模型进行微调,快速获得质量模型。
2020-07-07 11:30:03 3061 8
原创 leetcode5454
刷题主页给你一个只包含 0 和 1 的 rows * columns 矩阵 mat ,请你返回有多少个 子矩形 的元素全部都是 1 。示例 1:输入:mat = [[1,0,1],[1,1,0],[1,1,0]]输出:13解释:有 6 个 1x1 的矩形。有 2 个 1x2 的矩形。有 3 个 2x1 的矩形。有 1 个 2x2 的矩形。有 1 个 3x1 的矩形。矩形数目总共 = 6 + 2 + 3 + 1 + 1 = 13 。示例 2:输入:mat = [[0,1,1,0
2020-07-05 14:22:03 2099
原创 leetcode93
给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 ‘.’ 分隔。示例:输入: “25525511135”输出: [“255.255.11.135”, “255.255.111.35”]该题是列出所有可能的ip地址格式,属于在一个范围内找到所有符合条件类的题,因此直接使用回溯法即可,重点在于剪枝部分。class Solution {public: vector<string.
2020-07-04 18:43:11 2544 1
原创 leetcode32
刷题主页给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。示例 1: 输入: “(()” 输出: 2解释:最长有效括号子串为 “()” 示例 2: 输入: “)()())” 输出: 4 解释: 最长有效括号子串为 “()()”由题意可知该题属于括号匹配类的问题,这时就该想到使用栈解决。具体做法为:遍历字符串,遇见’(‘时便入栈,当遇到’)‘时并且位于栈顶坐标处的是’('时就将其出栈,这就会形成一个匹配括号,同时计算此时匹配括号长度即可。在代码实现中一个技巧是使用
2020-07-04 17:37:33 2173
原创 leetcode92
刷题主页反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL这道题是普通反转链表的升级版,这次只是反转链表中间的一部分,而不是全部反转,掌握了普通的反转链表后,这道题可以很快写出,我们需要找到将要反转部分的起止位置,并将其反转,注意反转位置可能是第一个结点,因此需
2020-07-03 13:33:29 1657
原创 leetcode206
刷题主页反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?反转链表很简单,代码直接记住就行。class Solution {public: ListNode* reverseList(ListNode* head) { ListNode* pre=nullptr;
2020-07-03 13:24:23 2563
原创 leetcode91
刷题主页一条包含字母 A-Z 的消息通过以下方式进行了编码:‘A’ -> 1‘B’ -> 2…‘Z’ -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: “12”输出: 2解释: 它可以解码为 “AB”(1 2)或者 “L”(12)。示例 2:输入: “226”输出: 3解释: 它可以解码为 “BZ” (2 26), “VF” (22 6), 或者 “BBF” (2 2 6) 。读题可知,该题是求方法总数,很经典的动态规划问题
2020-07-03 10:08:48 1897
原创 leetcode85
刷题主页给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。示例:输入:[[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,“1”,“1”],[“1”,“0”,“0”,“1”,“0”]]输出: 6通常对于数组求最大或最小值等问题,最简单的方法是暴力遍历,但是这通常会超时,如果做过leetcode84的话,这道题应该会很好解决,这就是矩形说白了就是多个柱状图的组合,因此,我们可以把它分
2020-06-30 11:05:45 1572
原创 leetcode1497
刷题主页给你一个整数数组 arr 和一个整数 k ,其中数组长度是偶数,值为 n 。现在需要把数组恰好分成 n / 2 对,以使每对数字的和都能够被 k 整除。如果存在这样的分法,请返回 True ;否则,返回 False 。示例 1:输入:arr = [1,2,3,4,5,10,6,7,8,9], k = 5输出:true解释:划分后的数字对为 (1,9),(2,8),(3,7),(4,6) 以及 (5,10) 。示例 2:输入:arr = [1,2,3,4,5,6], k = 7输
2020-06-29 22:01:25 2609 1
原创 leetcode209
刷题主页给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。示例:输入:s = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的连续子数组。进阶:如果你已经完成了 O(n) 时间复杂度的解法, 请尝试 O(n log n) 时间复杂度的解法。看到这道题后,先抓住关键词,连续子数组和,这应该立马想到前缀和、滑动窗口方法,这两种方
2020-06-28 19:56:43 121
原创 leetcode84
刷题主页给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。示例:输入: [2,1,5,6,2,3]输出: 10看到这种数组找某些最大最小值的问题,最先想到的是暴力遍历,这里就是枚举每个高度所对应的最大面积,从第一个元素开始枚举,遍历该高度下的最大宽度,即
2020-06-27 19:07:20 250 1
原创 leetcode82
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例 1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例 2:输入: 1->1->1->2->3输出: 2->3这道题是删除重复数字的结点,首先想得到的是快慢指针,快指针用于寻找不是重复的结点,慢指针用于更新连接结点。同时注意到首结点不一定会保留,如果第一个第二个结点数字相同,那么首结点就不能保留,这时.
2020-06-27 16:25:23 140
原创 leetcode83
刷题主页给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3看到删除操作我最先想到的是快慢指针,快指针负责找不重复的元素,慢元素负责连接这些不重复的元素,如果元素重复,那么快指针一直向后走,遇到不重复的元素后慢指针连接,遍历完链表后需要将慢链表的下一位置指向空指针。由于链表的第一个元素肯定会保留所以不需要使用哑结
2020-06-27 15:55:12 150
原创 leetcode448
给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。输入: [4,3,2,7,8,2,3,1] 输出: [5,6]数组元素的范围是1<=a[i]<=n,直接套用模板,对数组中元素进行排序,按照nums[i]==i+1的条件,最后对调整后的数组遍历.
2020-06-27 14:38:20 164
原创 leetcode442
给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。找到所有出现两次的元素。你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗?输入:[4,3,2,7,8,2,3,1]输出:[2,3]当看得到不用额外空间和o(n)时间复杂度时就知道无法使用hash表等辅助数据结构记录,只能在数组原地修改。注意到1<=a[i]<=n,那么说明每个元素和下标有大致的对应关系,即nums[i]=i+1,这样采用抽屉原理,一个位置.
2020-06-27 14:26:18 202
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人