自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 资源 (1)
  • 收藏
  • 关注

原创 剑指offer:变态跳台阶

题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 思路: 1.由题可知,当跳上一个n级的台阶时,青蛙可以从n-1阶开始跳一级,也可以从n-2阶开始跳两级,……也可以从2阶开始跳n-2级,也可以从1阶跳n-1级,或者从0阶跳n级。 所以对于跳上n级台阶所需要的跳法 f(n)来说,f(n)=f(n-1)+f(n-2)+……+f(2)+f(1)+f(0); 所以我们只需每次计算完f(n)之后对此依次进行累加,记为sum,下一次的f(n+1)即

2020-07-25 07:23:00 265

原创 LeetCode:不同的二叉搜索树 I II

不同的二叉搜索树 I 题目描述: 给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 思路: 二叉搜索树:左子树节点均小于根节点,右子树节点跟大于根节点。 对于1-n为节点组成的二叉树来说,每一个数都有可能作为根节点。当 i 作为根节点时,左子树节点为1-(i-1),右子树节点为(i+1)-n;假如左子树有m种不同结构的二叉搜索树,右子树有n种,那么总共有 m*n 种。所以对于n个节点来说,

2020-07-22 15:27:22 365

原创 LeetCode:连续子数组的最大和

题目描述: 输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度为O(n)。 示例1: 输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 提示: 1 <= arr.length <= 10^5 -100 <= arr[i] <= 100 思路: 遍历数组,因为当一个负数加上任意数,都会比这个数本身小。 所以可以从nums

2020-07-19 21:15:45 686

原创 LeetCode :生命游戏

题目描述: 根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。 给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1 即为活细胞(live),或 0 即为死细胞(dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律: 如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡; 如果活细胞周围八个位置有两个或三个活细胞,则该位置活细胞仍然存活; 如果活细胞周围八个位置有超

2020-07-18 09:53:19 243

原创 LeetCode:复杂链表的复制

题目描述: 请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。 示例 1: 输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]] 输出:[[7,null],[13,0],[11,4],[10,2],[1,0]] 示例 2: 输入:head = [[1,1],[2,1]] 输出:[[1,1],[2,1]] 示例 3: 输入:

2020-07-16 17:55:59 239

原创 QT QMessageBox 头文件引用

在QT5中,引用QApplication与 QMessageBox 头文件时,发现无法编译通过。 原因:QT5将其放在Widgets下 解决方案:在*.pro 文件中添加 QT += widgets

2020-07-12 15:22:08 4589

原创 Qt incomingConnection函数 重载后无法建立tcp连接

QT5.0版本之前incomingConnection函数的参数类型是int,但是5.0以后变成了qintptr, 如果写错类型,即使是有新连接加入也不会触发incomingConnection函数。

2020-07-10 11:56:32 545

原创 LeetCode:阶乘后的零

题目描述: 给定一个整数 n,返回 n! 结果尾数中零的数量。 示例 1: 输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零。 示例 2: 输入: 5 输出: 1 解释: 5! = 120, 尾数中有 1 个零. 说明: 你算法的时间复杂度应为 O(log n) 。 思路: 求尾数中0的个数,即求阶乘中有多少个10,也就是有多少个2*5。 5!=1*2*3*4*5; 10!=1*2*3*4*5*6*7*8*9*10. 从上边可以看出每当出现因数5时,前边总会有因数2与之匹配。比如 5!中5前边的

2020-07-07 08:54:36 280

原创 LeetCode:最长公共前缀

题目描述: 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 示例 1: 输入: [“flower”,“flow”,“flight”] 输出: “fl” 示例 2: 输入: [“dog”,“racecar”,“car”] 输出: “” 解释: 输入不存在公共前缀。 说明: 所有输入只包含小写字母 a-z 。 思路: 纵向比较。查找最小字符串长度,从最左端开始比较,相同长度加一,否则停止比较。在比较时可借助哈希表,通过判断增加的个数是否是n的倍数来判断。 class S

2020-06-23 09:39:13 212

原创 LeetCode:反转矩阵后的得分

题目描述: 有一个二维矩阵 A 其中每个元素的值为 0 或 1 。 移动是指选择任一行或列,并转换该行或列中的每一个值:将所有 0 都更改为 1,将所有 1 都更改为 0。 在做出任意次数的移动后,将该矩阵的每一行都按照二进制数来解释,矩阵的得分就是这些数字的总和。 返回尽可能高的分数。 示例: 输入: [[0,0,1,1],[1,0,1,0],[1,1,0,0]] 输出: 39 解释: 转换为 [[1,1,1,1],[1,0,0,1],[1,1,1,1]] 0b1111 + 0b1001

2020-06-21 16:48:57 226

原创 LeetCode:最长回文子串

题目描述: 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: “babad” 输出: “bab” 注意: “aba” 也是一个有效答案。 示例 2: 输入: “cbbd” 输出: “bb” 思路1: 动态规划。 长度为1时,为回文串; 长度为2时,如果两字母相同,为回文串; 其他情况,如果s[i]==s[j]并且S[ i+1 : j-1 ]为回文串,那么s[ i : j]为回文串。 class Solution { public: stri

2020-06-14 17:00:54 169

原创 LeetCode:把数组排成最小的数

题目描述: 输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 示例 1: 输入: [10,2] 输出: “102” 示例 2: 输入: [3,30,34,5,9] 输出: “3033459” 提示: 0 < nums.length <= 100 说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数 拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0 思路: 主要考察比较函数,之后在进行排序即可。对于 x,y,比较 x+y 与 y+x

2020-06-08 21:27:40 387

原创 LeetCode:加一

题目描述: 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。 示例 2: 输入: [4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示数字 4321。 思路: 最后一位加一后,依次判断前一位是否也需要进位。注意最高位仍需进位的情况。 class Solution {

2020-06-08 21:15:48 225

原创 LeetCode:丑数

题目描述: 我们把只包含因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。 说明: 1 是丑数。 n 不超过1690。 思路: 我们可以看出来每次都是前面某个数字乘以 2 或者 3 或者 5,取其中的最小者。 我们定义三个指针 index2、index3、index5 分别指向要乘以 2、3、5 的数字。dp[i] 表示

2020-06-06 21:31:17 449

原创 LeetCode:股票的最大利润

题目描述: 假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少? 示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。 示例 2: 输入: [7,6,4,3,1] 输出: 0 解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。 限制: 0 <= 数组长度

2020-05-08 17:51:44 550

原创 LeetCode:两个链表的第一个公共节点

题目描述: 输入两个链表,找出它们的第一个公共节点。 如下面的两个链表: 在节点 c1 开始相交。 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 输出:Reference of the node with value = 8 输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为

2020-05-08 17:38:50 370

原创 LeetCode:和为s的两个数字

题目描述: 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[2,7] 或者 [7,2] 示例 2: 输入:nums = [10,26,30,31,47,60], target = 40 输出:[10,30] 或者 [30,10] 限制...

2020-05-08 17:06:47 220

原创 LeetCode:二叉树的最近公共祖先

题目描述: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4] 示例 1: 输入: root = [3...

2020-05-08 15:31:20 142

原创 LeetCode:数组中超过一半的数字

题目描述: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2 限制: 1 <= 数组长度 <= 50000 思路: 摩尔投票法。假设所求数字的票数为+1,其余数字的票数为-1,那么所有数字的票数和为整数,此结论在分开计算时仍然成...

2020-05-08 15:21:23 422

原创 LeetCode:数组中重复的数字

题目描述: 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 3 限制: 2 <= n <= 100000 思路: 哈希表。数组元素范围在0-n-1...

2020-05-08 15:09:59 210

原创 LeetCode:礼物的最大价值

题目描述: 在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物? 示例 1: 输入: [      [1,3,1],    &n...

2020-05-08 15:06:23 443

原创 LeetCode:和为K的子数组

题目描述: 给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。 示例 1 : 输入:nums = [1,1,1], k = 2 输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。 说明 : 数组的长度为 [1, 20,000]。 数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。 思路: 令nums数组中 0...

2020-05-08 14:56:27 426

原创 LeetCode:颜色分类

题目描述: 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 注意: 不能使用代码库中的排序函数来解决这道题。 示例: 输入: [2,0,2,1,1,0] 输出: [0,0,1,1,2,2] 进阶: 一个直观的解决方案是使用计数排序的两趟扫描算法。 ...

2020-05-08 14:49:21 147

原创 LeetCode:二叉搜索树的最近公共祖先

题目描述: 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5] 示例 1: 输入: root ...

2020-05-05 15:51:39 199

原创 LeetCode:重建二叉树

题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 限制: 0 <= 节点个数 <= 5000 思路: 前序遍历顺序为:根节点->左子树->右子树。中序...

2020-05-05 15:42:35 274

原创 LeetCode:和为s的连续正数序列

题目描述: 输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。 序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。 示例 1: 输入:target = 9 输出:[[2,3,4],[4,5]] 示例 2: 输入:target = 15 输出:[[1,2,3,4,5],[4,5,6],[7,8]] 限制: 1 <= target <...

2020-05-05 15:21:19 229

转载 c++中继承的使用

1.c++中继承有公有继承,保护继承,私有继承 定义个基类: class Base { public: void display() { cout<<"111212"<<endl; } protected: int x; private: int y; };  定义一个派生类: 公有继承:...

2020-04-30 17:07:22 321

原创 LeetCode:用两个栈模拟队列

题目描述: 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 示例 1: 输入: [“CQueue”,“appendTail”,“deleteHead”,“deleteHead”] [[],[3],[],[]] 输出:[nul...

2020-04-30 15:41:50 198

原创 C++:程序内存区域及生命周期

内存区域: 一个程序在运行期间,程序代码和数据会被分别存储在4个不同的内存区域:        程序代码区:程序代码(即程序的各函数代码)存放在此区域中。        全局数据区:程序的全局数据(如全局变量)和静态数据(static)存放于此区域中。 &nb...

2020-04-29 11:15:08 1038

原创 LeetCode:二叉搜索树的第k大节点

题目描述: 给定一棵二叉搜索树,请找出其中第k大的节点。 示例 1: 输入: root = [3,1,4,null,2], k = 1 3 / 1 4 2 输出: 4 示例 2: 输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / 3 6 / 2 4 / 1 输出: 4 限制: 1 ≤ k ≤ 二叉搜索树元素个数 思路: 二叉搜索树左子树...

2020-04-28 20:51:52 495

原创 LeetCode:二进制中1的个数

题目描述: 请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。 示例 1: 输入:00000000000000000000000000001011 输出:3 解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。 示例 2: 输入:...

2020-04-28 20:45:57 266

原创 LeetCode:合并两个排序的链表

题目描述: 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 示例1: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 限制: 0 <= 链表长度 <= 1000 思路: 建立头结点。依次指向两个链表中较小的节点,被选中的节点后移一位。注意一个链表结束,另一个链表还有很长一段...

2020-04-28 20:10:07 193

原创 LeetCode:反转链表

题目描述: 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 限制: 0 <= 节点个数 <= 5000 思路: 双指针。pre指针初始化为NULL,cur初始为首元结点。 每次让cur->ne...

2020-04-28 20:05:47 150

原创 LeetCode:从尾到头打印链表

题目描述: 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表长度 <= 10000 思路: 遍历链表,将其放在vector中,最后将vector反转。 也可用stack进行中转。 /** * Definition for singly-linked list. * st...

2020-04-28 19:54:39 243

原创 LeetCode:全排列

题目描述: 给定一个 没有重复 数字的序列,返回其所有可能的全排列。 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 思路: 将每个数字分别放在首位,然后将除首位之外的其他数字当做一个全新数组,再依次按上述方法处理,直到最后一个数字。 class Solution { public: ...

2020-04-25 11:22:41 139

原创 LeetCode :前 K 个高频元素

题目描述: 给定一个非空的整数数组,返回其中出现频率前 k 高的元素。 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输入: nums = [1], k = 1 输出: [1] 说明: 你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。 你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大...

2020-04-11 16:24:47 314 1

原创 LeetCode:从上到下打印二叉树 I II III

对于给定二叉树:例如: [3,9,20,null,null,15,7], 从上到下打印二叉树 I . 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 输出结果: [3,9,20,15,7] 思路: 对于层序遍历,利用队列对节点进行记录。对于每个节点将其左右子树放入队列,并将其弹出,以此达到一层一层输出的效果。 /** * Definition for a binary t...

2020-04-09 20:44:45 325

原创 LeetCode:数组中数字出现的次数 II

题目描述: 在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。 示例 1: 输入:nums = [3,4,3,3] 输出:4 示例 2: 输入:nums = [9,1,7,9,7,9,7] 输出:1 限制: 1 <= nums.length <= 10000 1 <= nums[i] < 2^31 思路: 位运算。 从第一位...

2020-04-08 20:54:50 397

原创 LeetCode:二叉树的镜像

题目描述: 请完成一个函数,输入一个二叉树,该函数输出它的镜像。 例如输入: 镜像输出: 示例 1: 输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 思路1: 递归实现。 交换左右子树,再分别交换对左右子树进行镜像。 /** * Definition for a binary tree node. * struct TreeNode { * ...

2020-04-08 20:37:26 256

原创 LeetCode: 链表中倒数第k个节点

题目描述: 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。 示例: 给定一个链表: 1->2->3->4->5, 和 k = 2. 返回链表 4->5. 思路: 双指针。 第一个指针...

2020-04-08 20:21:25 710

Qt实现简单的电子时钟

Qt 的制作电子时钟,可显示时分秒,可随意拖拽至桌面任意位置。

2020-07-15

空空如也

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

TA关注的人

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