自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一只老风铃

今已亭亭如盖矣

  • 博客(34)
  • 资源 (2)
  • 收藏
  • 关注

原创 Leetcode 计算累积平方和

给定一个32位int型正整数,我们定义如下操作,取其十进制各位数字的平方和,并不断重复这个操作。如果某次操作完成后得到的结果是1,则返回true;否则继续执行,直到证明永远不会得到结果为1,返回falseinput:19output:true原因:1^2 + 9^2=828^2 + 2^2 = 686^2 + 8^2 = 1001^2 + 0^2 + 0^2 = 1思路:如果不能出现1 那么最终会到达一个环,即与之前的数字相等采取set记录之前的...

2020-07-30 14:42:30 595

原创 Leetcode first-missing-positive

题目描述给出一个无序的整数型数组,求不在给定数组里的最小的正整数例如:给出的数组为[1,2,0] 返回3,给出的数组为[3,4,-1,1] 返回2.给出的数组为[1,2,3] 返回4.你需要给出时间复杂度在O(n)之内并且空间复杂度为常数级的算法思路:对于i位置的数据A[i] 如果A[i]!=i+1 并且A[i]为正数 A[i]-1<n 那么将该数字放到目标位置A[i]-1处 而A[i]-1处原本的数字 如果也在范围内,继续放到目标位置处, 不...

2020-07-30 11:11:07 155

原创 Leetcode rotate-matrix

题目描述给出一个用二维矩阵n*n表示的图像返回该图像顺时针旋转90度的结果扩展:你能使用原地算法解决这个问题么?思路:通常转化为先沿着对角线对称,然后左右对称即等价于 顺时针选择90度 void rotate(vector<vector<int> > &matrix) { int n=matrix.size(); //先将下三角形沿着对角线 进行一个反转 for(int i=1;i...

2020-07-30 10:22:16 221

原创 Java 重载与重写

链接:https://www.nowcoder.com/questionTerminal/7b2152a85b9a4ebab6dfda7e995a8491?orderByHotValue=1&mutiTagIds=570&page=1&onlyReference=false来源:牛客网方法重写的原则:重写方法的方法名称、参数列表必须与原方法的相同,返回类型可以相同也可以是原类型的子类型(从Java SE5开始支持)。 重写方法不能比原方法访问性差(即访问权限不允许缩小.

2020-07-29 15:11:02 171

原创 Leetcode sudoku-solver

题目描述请编写一个程序,给数独中的剩余的空格填写上数字空格用字符'.'表示假设给定的数独只有唯一的解法这盘数独的解法是:思路:经典的搜索问题,和八皇后问题类似,关键实现一个合法性判断函数isValid(x,y,c)即在x y位置放入c字符是否可行 即行不能重复 列不能重复 九宫格不能重复dfs(index) 当遇到存在字符时跳过 空格时,填入Valid可行的字符,并跳转到下一个dfs(index+1)当index==81即所有字符填充完毕时,是最终结果,...

2020-07-29 14:35:34 202

原创 Java 快速失败和安全失败

一:快速失败(fail—fast) 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的结构进行了修改(增加、删除),则会抛出Concurrent Modification Exception。原理:迭代器在遍历时直接访问集合中的内容,并且在遍历过程中使用一个 modCount 变量。集合在被遍历期间如果结构发生变化,就会改变modCount的值。每当迭代器使用hashNext()/next()遍历下一个元素之前,都会检测modCount变量是否为expec...

2020-07-28 14:05:58 287

原创 Leetcode search-arr-range

题目描述给出一个有序数组,请在数组中找出目标值的起始位置和结束位置你的算法的时间复杂度应该在O(log n)之内如果数组中不存在目标,返回[-1, -1].例如:给出的数组是[5, 7, 7, 8, 8, 10],目标值是8,返回[3, 4].思路一:先采取二分思路,查找到中间节点mid=target时,然后向两端拓展 找到left right边界不足:最坏时间复杂度 O(N) 当数组全部为target元素时发生思路二:二分分别查找 left...

2020-07-28 11:10:38 165

原创 多线程 避免多线程竞争

不可修改变量互斥锁CASget 从服务器端获取资源 put 提交资源 post 更新资源 delete 删除资源 connect 建立tunnel隧道返回状态码100 请求已收到,正等待后续资源 200 ok 成功 206 partial content 部分资源 301 永久重定向 400 bad request 客户端请求语法错误https是http加上ssl的应用层协议。在http的基础上增加了安全性和可靠性。端口的不同:http默认是80端口...

2020-07-27 21:37:58 444

原创 Leetcode rever-Integer

题目描述将给出的整数x翻转。例1:x=123,返回321例2:x=-123,返回-321你有思考过下面的这些问题么?如果整数的最后一位是0,那么输出应该是什么?比如10,100你注意到翻转后的整数可能溢出吗?假设输入是32位整数,则将翻转10000000003就会溢出,思路:依次取个位数,放入res每次迭代 res*10+lastNum如何判断溢出 int new_res=res*10+last判断 (new_res-last)/10与 res是否相等...

2020-07-27 21:27:06 139

原创 内联函数

使用inline关键字的函数只是用户希望它成为内联函数,但编译器有权忽略这个请求,比如:若此函数体太大,则不会把它作为内联函数展开的。 头文件中不仅要包含inline函数的声明,而且必须包含定义,且在定义时必须加上inline。【关键字inline必须与函数定义体放在一起才能使函数成为内联,仅将inline放在函数声明前面不起任何作用】 inline函数可以定义在源文件中,但多个源文件中的同名inline函数的实现必须相同。一般把inline函数的定义放在头文件中更加合适。...

2020-07-26 20:00:48 81

原创 Leetcode longest-valid-parentheses

题目描述给出一个仅包含字符'('和')'的字符串,计算最长的格式正确的括号子串的长度。对于字符串"(()"来说,最长的格式正确的子串是"()",长度为2.再举一个例子:对于字符串")()())",来说,最长的格式正确的子串是"()()",长度为4.输入复制"(()"输出复制2思路:初始化一个栈,每遇到左括号 那么将该左括号下标入栈遇到右括号时,如果栈中包含左括号,那么这一组括号完成匹配,在对应dp数组位置标记为true最后遍历dp数组 找到最长..

2020-07-22 16:13:00 168

原创 Leetcode most-water

题目描述给定n个非负整数a1,a2,…,an,其中每个数字表示坐标(i, ai)处的一个点。以(i,ai)和(i,0)(i=1,2,3...n)为端点画出n条直线。你可以从中选择两条线与x轴一起构成一个容器,最大的容器能装多少水?注意:你不能倾斜容器例如:输入 [1,8,6,2,5,4,8,3,7]输出: 49思路:初始化left=0 right=n-1 从两端往中间搜素当height[l]<height[r]时 l++ 否则 r--即 每次舍弃最短的那条...

2020-07-22 14:08:42 208

原创 Leetcode 最长回文子串

题目描述找出给出的字符串S中最长的回文子串。假设S的最大长度为1000,并且只存在唯一解。示例1输入复制"abcba"输出复制"abcba"思路:将原先s1 反转得到s2求解s1与s2的最长公共子串求解最长公共子串方法动态规划 dpdp[i][j]表示s1[i]与s2[j]匹配关系 若不等置为0 否则置为1 那么最长公共子串,即寻找二维数组中 最长的对角线为1的长度 进一步优化 若匹配时 dp[i][j]=dp[i-1][j-...

2020-07-22 11:08:14 166

原创 Leetcode two-sum

题目描述给出一个整数数组,请在数组中找出两个加起来等于目标值的数,你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足index1 小于index2.。注意:下标是从1开始的假设给出的数组中只存在唯一解例如:给出的数组为 {2, 7, 11, 15},目标值为9输出 ndex1=1, index2=2示例1输入复制[3,2,4],6输出复制[2,3]思路:先原先数组排序,二分形式查找到那两个值然后 到..

2020-07-21 17:00:25 158

原创 Leetcode divide-two-int

题目描述在不使用乘法运算符,除法运算符和取余运算符的情况下对两个数进行相除操作Divide two integers without using multiplication, division and mod operator.示例1输入-1,1输出-1【思路】传统思路,取sum=0 每次sum+=step 判断sum与最终被除数大小关系,时间复杂度过高 int divide(int dividend, int divisor)...

2020-07-18 20:08:25 193

原创 Leetcode 烘干衣服

链接:https://ac.nowcoder.com/acm/contest/6220/C来源:牛客网题目描述牛牛有n件带水的衣服,干燥衣服有两种方式。一、是用烘干机,可以每分钟烤干衣服的k滴水。二、是自然烘干,每分钟衣服会自然烘干1滴水。烘干机比较小,每次只能放进一件衣服。注意,使用烘干机的时候,其他衣服仍然可以保持自然烘干状态,现在牛牛想知道最少要多少时间可以把衣服全烘干。示例1输入3,[2,3,9],5输出3说明前两分钟对第三件衣服..

2020-07-17 00:03:22 488

原创 Leetcode reverse-nodes-in-k-steps

题目描述将给出的链表中的节点每k个一组翻转,返回翻转后的链表如果链表中的节点数不是k的倍数,将最后剩下的节点保持原样你不能更改节点中的值,只能更改节点本身。只允许使用常数级的空间例如:给定的链表是1->2->3->4->5对于 k= 2, 你应该返回 2->1->4->3->5对于k= 3, y你应该返回3->2->1->4->5基本思路:先截取链表前面k部分,若不足k 那么直接返...

2020-07-16 17:58:31 97

原创 Leetcode merge-k-sorted-list

题目描述合并k个已排序的链表并将其作为一个已排序的链表返回。分析并描述其复杂度。思路: 同合并两条链表的思路一致即 每次从链表头部组中选中最小的那个节点 加入到res最终链表中,同时节点所在链表节点后移需要判断链表是否判断空,以及记录链表所在index ListNode *mergeKLists(vector<ListNode *> &lists) { int size=lists.size();//链表总数目 if(...

2020-07-16 17:26:22 133

原创 Leetcode generate-parentheses

题目描述给出n对括号,请编写一个函数来生成所有的由n对括号组成的合法组合。例如,给出n=3,解集为:"((()))", "(()())", "(())()", "()(())", "()()()"基本思路:不断地添加左括号或者右括号,直到全部用完,减掉中途出错的情况 即:一旦当前左括号数量小于右括号数量 那么及时返回反例: ) , ()) , )() void dfs(string path,int n,int lef...

2020-07-16 17:05:51 149

原创 Leetcode permutation-sequence

题目描述集合[1,2,3,…,n]一共有n!种不同的排列按字典序列出所有的排列并且给这些排列标上序号我们就会得到以下的序列(以n=3为例)"123" "132" "213" "231" "312" "321"现在给出n和k,请返回第k个排列注意:n在1到9之间首先解决一个问题 那就是任意给定一个排列数 ,其后面一个next_permutation是多少基本思路:由于是下一个排列数一定比之前的大,通过后面较大的数与前面较小的数交换得到那么只需要使得...

2020-07-15 13:28:03 123

原创 Leetcode merge-intervals

题目描述给出一组区间,请合并所有重叠的区间。例如,给出[1,3],[2,6],[8,10],[15,18],返回[1,6],[8,10],[15,18].struct Interval { * int start; * int end; * Interval() : start(0), end(0) {} * Interval(int s, int e) : start(s), end(e) {} * };思路:按照 sta...

2020-07-14 23:05:05 184

原创 Leetcode spiral-matrix

题目描述给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。例如,给出以下矩阵: [ 1, 2, 3 ] [ 4, 5, 6 ]↵ [ 7, 8, 9 ]↵你应该返回[1,2,3,6,9,8,7,4,5]。思路:模拟读取过程即可即给定一个矩形框,依次按照上方=》右侧=》下方=》左侧顺序读取即可采取[start_h,start_w]描述框的左上角起点 采取h w描述框的大小每一次迭代:start_h++ start_w++ h-=..

2020-07-14 22:12:39 139

原创 Leetcode Min_stack

实现能够取最小值得stack原理:其中主栈和stack类似存取,另一个辅助栈在新入值更小时 插入当主栈弹出元素时,判断是否是辅助栈栈顶 若是 那么辅助栈同步弹出class min_stack{private: stack<int> S; stack<int> S_min;public: void push(int a) { if (this->S_min.empty() || a <= S_min.top()) //当且仅当新入..

2020-07-13 19:27:16 134

原创 Leetcode 3-sum

题目描述给出一个有n个元素的数组S,S中是否有元素a,b,c满足a+b+c=0?找出数组S中所有满足条件的三元组。注意:三元组(a、b、c、d)中的元素必须按非降序排列。(即a≤b≤c) 解集中不能包含重复的三元组。 例如,给定的数组 S = {-1 0 1 2 -1 -4},↵↵ 解集为:↵ (-1, 0, 1)↵ (-1, -1, 2)基本思路:对数组进行排序;按照第一个数字进行讨论(i从0到 n-2)其余的第二大,第三大数字分别从 j=..

2020-07-13 19:12:06 193

原创 Leetcode maximum-subarray

题目描述请计算给出的数组(至少含有一个数字)中具有最大和的子数组(子数组要求在原数组中连续)例如:给出的数组为[−2,1,−3,4,−1,2,1,−5,4],子数组[−2,1,−3,4,−1,2,1,−5,4],具有最大的和:6.拓展:如果你已经提出了O(n)的解决方法,请尝试使用分治算法来解决这道题。这道题分治的解法更巧妙一些。经典的最大连续子段和问题经典思路,设定一个sum 从头开始sum+=A[i] 若之前的sum<0 那么sum=0 即之前的数抛弃...

2020-07-13 01:46:29 94

原创 头条机试 二阶魔方

二阶魔方每次操作可以将任意一面逆时针或者顺时针旋转90°,如将上面逆时针旋转90°操作如下。魔方上每一面的优美度就是这个面上4个数字的乘积,而魔方的总优美度就是6个面优美度总和。现在Nero有一个数字魔方,他想知道这个魔方在操作不超过5次的前提下能达到的最大优美度是多少。魔方展开后每一块的序号如下图:输入:2 -3 -2 3 7 -6 -6 -7 9 -5 -9 -3 -2 1 4 -9 -1 -10 -5 -5 -10 -4 8 2输出:8281基本思路:初.

2020-07-11 23:08:03 268

原创 头条机试 字母交换-区间DP

【编码题】字符串S由小写字母构成,长度为n。定义一种操作,每次都可以挑选字符串中任意的两个相邻字母进行交换。询问在至多交换m次之后,字符串中最多有多少个连续的位置上的字母相同?【输入】 acbbaa 3 【输出】 3最多交换3次,最长的相同序列为aaa长度为3【思路】考察每一个单词c筛选出位置集合pos[]设定动态dp[][] 其中dp[i][j]表示pos[i]到pos[j]之间的j-i+...

2020-07-10 22:29:25 376

原创 Leetcode n-queens

题目描述N皇后问题是把N个皇后放在一个N×N棋盘上,使皇后之间不会互相攻击。给出一个整数n,返回n皇后问题的所有摆放方案例如:4皇后问题有两种摆放方案[↵ [".Q..", "...Q",↵ "Q...",↵ "..Q."], ["..Q.", "Q...",↵ "...Q",↵ ".Q.."]↵]思路:初始化一个空棋盘,从第一行开始,那么可以从0-n-1位置任选一个放入皇后那么第二行,同样选取一些位置放入皇后(需要满足不与前面的皇后冲..

2020-07-10 00:48:29 154

原创 操作系统 动态链接库与静态链接库区别

1 静态链接库的优点代码装载速度快,执行速度略比动态链接库快; 只需保证在开发者的计算机中有正确的.LIB文件,在以二进制形式发布程序时不需考虑在用户的计算机上.LIB文件是否存在及版本问题,可避免DLL地狱等问题。2 动态链接库的优点(1) 更加节省内存并减少页面交换;(2) DLL文件与EXE文件独立,只要输出接口不变(即名称、参数、返回值类型和调用约定不变),更换DLL文件不会对EXE文件造成任何影响,因而极大地提高了可维护性和可扩展性;(3) 不同编程语言编...

2020-07-08 20:51:08 374

原创 Leetcode anagrams

题目描述给出一个字符串数组,返回所有互为“换位词(anagrams)”的字符串的组合。(换位词就是包含相同字母,但字母顺序可能不同的字符串)备注:所有的输入都是小写字母例如:输入["tea","nat","ate","eat","tan"]返回["ate", "eat","tea","nat","tan"]基本思路,对于一组换位串,由于其组成字母相同,那么对应单词排序后一定相同,acd->acd dca->acd以此作为map的key ,完成映射 ..

2020-07-07 20:25:37 194

原创 腾讯机试 构造回文

给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数。输入描述:输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.输出描述:对于每组数据,输出一个整数,代表最少需要删除的字符个数。输入例子1:abcdagoogle输出例子1:22思路:先求解出原先字符串的最大回文串长度基本思路:最大回文串长...

2020-07-04 14:07:40 211

原创 华为机试 线段树

输入描述:输入包括多组测试数据。每组输入第一行是两个正整数N和M(0 < N <= 30000,0 < M < 5000),分别代表学生的数目和操作的数目。学生ID编号从1编到N。第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩接下来又M行,每一行有一个字符C(只取‘Q’或‘U’),和两个正整数A,B,当C为'Q'的时候, 表示这是一条询问操作,他询问ID从A到B(包括A,B)的学生当中,成绩最高的是多少当C为‘U’的时候,表示这是一

2020-07-03 12:51:56 263

原创 Leetcode jump-game-ii

题目描述给出一个非负整数数组,你最初在数组第一个元素的位置数组中的元素代表你在这个位置可以跳跃的最大长度你的目标是用最少的跳跃次数来到达数组的最后一个元素的位置例如给出数组 A =[2,3,1,1,4]最少需要两次才能跳跃到数组最后一个元素的位置。(从数组下标为0的位置跳长度1到达下标1的位置,然后跳长度3到数组最后一个元素的位置)思路:当所处于一个位置i时 它能到达的区间是i 到 i+A[i]之间也就是对于任何一个位置 它所能到达的最远位置 max_pos=...

2020-07-02 15:59:22 227

原创 Leetcode wildcard-matching

题目描述请实现支持'?'and'*'.的通配符模式匹配正则表达式问题,典型的动态规划问题关键点 s串遇到一个p串*时的思路:若两者的前面部分可通配 那么当前*仅仅通配一个对应字符即可 若s串与*前面部分通配 那么当前*通配空串即可 若s串前面部分与当前串通配 那么当前*再多通配一个对应字符即可易错点,单独s串为空串 p串包含*情况 即 dp[0][i]需要提前计算好下标问题:dp[1][1]表示s[0]与p[0]匹配情况 bool dp...

2020-07-01 22:09:25 237

计算机图形学-Bezier与Bspline曲线,曲面

MIT计算机图形学作业 C++实现,Bezier曲线,Bspline曲线

2018-01-05

正则式到最小化DFA

实现了从正则式子到NFA,NFA到DFA,并最小化DFA的过程,

2018-01-05

空空如也

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

TA关注的人

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