- 博客(104)
- 资源 (4)
- 收藏
- 关注
原创 面试题68-2:二叉树的最近公共祖先
面试题68-2:二叉树的最近公共祖先文章目录题目LeetCode版本题目给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。LeetCode版本class Solution {public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { if(root == nullptr || root == p || root == q) return root;
2021-09-01 14:12:31
80
原创 面试题68-1:二叉搜索树的最近公共祖先
面试题68-1:二叉搜索树的最近公共祖先文章目录题目考点LeetCode版本题目给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。考点后序遍历LeetCode版本class Solution {public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { if(root == nullptr) return nullptr; if(root
2021-09-01 14:08:36
156
原创 面试题67:把字符串转换成整数
面试题67:把字符串转换成整数文章目录题目考点LeetCode版本题目写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字
2021-09-01 12:50:00
188
原创 面试题66:构建乘积数组
面试题66:构建乘积数组文章目录题目考点LeetCode版本题目给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。考点双数组法,从前往后构建左子数组,从后往前构建右子数组LeetCode版本class Solution {public: vector<int> construct
2021-09-01 12:09:17
78
原创 面试题65:不用加减乘除做加法
面试题65:不用加减乘除做加法文章目录题目考点LeetCode版本题目写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。考点二进制加法二进制无进位和 = a ^ b二进制进位 = (a&b)<<1重复上述操作直到二进制进位为0LeetCode版本class Solution {public: int add(int a, int b) { unsigned int num1 = a;
2021-09-01 11:33:12
89
原创 面试题64:求1+2+…+n
面试题64:求1+2+…+n文章目录题目解法1:利用数组大小解法2:利用虚函数题目求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。解法1:利用数组大小class Solution {public: int sumNums(int n) { bool sum[n][n+1]; return sizeof(sum)/2; }};解法2:利用虚函数要点:
2021-09-01 10:57:48
83
原创 面试题63:股票的最大利润
面试题63:股票的最大利润文章目录题目考点LeetCode版本题目假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?考点动态规划LeetCode版本class Solution {public: int maxProfit(vector<int>& prices) { if(prices.empty())return 0; int min = prices[0]; int l
2021-09-01 10:34:57
88
原创 面试题62:圆圈中最后剩下的数字
面试题62:圆圈中最后剩下的数字文章目录题目考点LeetCode版本题目0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。考点“约瑟夫环问题”记0,1,…,n-1,删除第m个数字为f(n,m),删除的数字为(m-1)%n,删除后下一个数字为m%n,
2021-09-01 10:20:54
93
原创 面试题61:扑克牌中的顺子
面试题61:扑克牌中的顺子文章目录题目考点LeetCode版本题目从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。考点下标映射,位置i和位置j(j>i)的间隔为j-i-1LeetCode版本class Solution {public: bool isStraight(vector<int>& nums) {
2021-08-31 21:32:36
119
原创 面试题60:n个骰子的点数
面试题60:n个骰子的点数文章目录题目考点LeetCode版本题目把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。考点动态规划n个骰子可以投出数的个数为5n+1(6n-n+1)LeetCode版本class Solution {public: vector<double> dicesProbability(int
2021-08-31 17:38:57
122
原创 面试题59-2:队列的最大值
面试题59-2:队列的最大值文章目录题目考点LeetCode版本题目请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1。考点使用两个deque实现LeetCode版本class MaxQueue {public: MaxQueue() { } int max_value
2021-08-31 16:58:22
73
原创 面试题59-1:滑动窗口的最大值
面试题59-1:滑动窗口的最大值文章目录题目考点LeetCode版本题目给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。考点双端队列deque,滑动窗口,保存下标而不是保存值LeetCode版本class Solution {public: vector<int> maxSlidingWindow(vector<int>& nums, int k) { vector<int> res;
2021-08-31 16:34:57
140
原创 面试题58-2:左旋转字符串
面试题58-2:左旋转字符串文章目录题目考点LeetCode版本题目字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。考点substr的使用LeetCode版本class Solution {public: string reverseLeftWords(string s, int n) { return s.subs
2021-08-31 14:48:18
90
原创 面试题58-1:翻转单词顺序
面试题58-1:翻转单词顺序文章目录题目考点LeetCode版本题目输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。考点双节点法LeetCode版本class Solution {public: string reverseWords(string s) { int begin, end; begin =
2021-08-31 14:39:34
85
原创 面试题57-2:和为s的连续正整数序列
面试题57-2:和为s的连续正整数序列文章目录题目考点LeetCode版本题目输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。考点双指针法LeetCode版本class Solution {public: vector<int> addTemp(int left, int right){ vector<int>temp;
2021-08-31 11:40:14
65
原创 面试题57-1:和为s的两个数字
面试题57:和为s的两个数字文章目录题目考点LeetCode版本题目输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。考点二分法,双指针LeetCode版本class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { int i=0,j=nums.size()-1;
2021-08-31 10:49:12
70
原创 面试题56-2:数组中数字出现的次数
面试题56-2:数组中数字出现的次数文章目录题目考点LeetCode版本题目在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字考点位运算,将每个数每个位相加,结果再复原LeetCode版本class Solution {public: int singleNumber(vector<int>& nums) { int bitSum[32] = {0}; for(int i =0; i
2021-08-31 10:29:44
67
原创 面试题56-1:数组中数字出现的次数
面试题56-1数组中数字出现的次数文章目录题目考点LeetCode版本题目一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。考点两个相同的数异或结果为0。将整个数组异或,结果就是两个只出现一次的数的异或结果。利用这个结果将两个数分开。双循环实现LeetCode版本class Solution {public: int findBitPos(int num){ int p
2021-08-31 08:20:29
80
原创 面试题55-2:平衡二叉树
面试题55-2:平衡二叉树文章目录题目考点LeetCode版本题目输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。考点后序遍历LeetCode版本class Solution {public: int isAVL(TreeNode * root){ if(root == nullptr)return 0; int ldepth = isAVL(root->left);
2021-08-30 20:45:37
199
原创 面试题55-1:二叉树的深度
面试题55-1:二叉树的深度文章目录题目考点LeetCode版本题目输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。考点后序遍历LeetCode版本class Solution {public: int maxDepth(TreeNode* root) { if(root == nullptr) return 0; int leftDepth = maxDepth(root
2021-08-30 18:53:17
64
原创 面试题54:二叉搜索树的第k大节点
面试题54:二叉搜索树的第k大节点文章目录题目考点LeetCode代码题目给定一棵二叉搜索树,请找出其中第k大的节点。考点以 右-根-左 的方式遍历二叉搜索树,可以得到逆序序列LeetCode代码class Solution {public: void reInorder(TreeNode *root, int k, int &cur, int &res){ if(root == nullptr || cur > k)return;
2021-08-30 16:41:19
72
原创 面试题53-2:0n-1中缺失的数字
面试题53-2:0~n-1中缺失的数字文章目录题目考点LeetCode版本题目一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。考点二分法,最后的i,j分别指向右子数组的首位元素和左子数组的末位元素右子数组的首位元素下标即为所求,返回i即可LeetCode版本class Solution {public: int missingNumber(vector<int
2021-08-30 15:56:23
54
原创 面试题53-1:在排序数组中查找数字
面试题53-1:在排序数组中查找数字文章目录题目考点LeetCode版本题目统计一个数字在排序数组中出现的次数。考点在一个有序数组中找到第一个比目标数字大的数字的二分写法LeetCode版本class Solution {public: int findRight(vector<int> &nums, int target){ int i = 0, j = nums.size()-1; while(i<=j){
2021-08-30 15:21:52
85
原创 面试题52:两个链表的第一个公共节点
面试题52:两个链表的第一个公共节点文章目录题目LeetCode 版本题目输入两个链表,找出它们的第一个公共节点。LeetCode 版本class Solution {public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { if(headA == nullptr || headB == nullptr) return nullptr; ListNod
2021-08-30 15:05:34
56
原创 面试题51:数组中的逆序对
面试题51:数组中的逆序对文章目录题目考点LeetCode版本题目在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。考点归并排序LeetCode版本class Solution {public: int part(vector<int> &nums, vector<int> &temp, int begin, int end){ if(begin >
2021-08-29 16:53:05
72
原创 面试题50:第一个只出现一次的字符
面试题50:第一个只出现一次的字符文章目录题目考点LeetCode版本题目在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。考点双循环遍历字符串保证找到的是第一个出现次数为1的字符map的使用 find,insert pairLeetCode版本class Solution {public: char firstUniqChar(string s) { if(s.empty()) return ' '; ma
2021-08-29 12:58:26
79
原创 面试题49:丑数
面试题49:丑数文章目录题目考点LeetCode版本题目我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。考点一个丑数可由另一个丑数乘以2,3,5得到1是丑数LeetCode版本class Solution {public: int minNum(int a, int b, int c){ int res ; res = a<b?a:b; res = res<c
2021-08-29 12:38:49
71
原创 面试题48:最长不含重复字符的子字符串
面试题48:最长不含重复字符的子字符串文章目录题目LeetCode版本动态规划滑动窗口(推荐)题目请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。LeetCode版本动态规划class Solution{public: int lengthOfLongestSubstring(string s) { if(s.empty()) return 0; int len = s.size(); vector<i
2021-08-29 12:22:01
75
原创 面试题47:礼物的最大价值
面试题47:礼物的最大价值文章目录题目LeetCode版本题目在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?LeetCode版本class Solution {public: int maxValue(vector<vector<int>>& grid) {
2021-08-28 23:20:38
90
原创 面试题46:把数字翻译成字符串
面试题46:把数字翻译成字符串文章目录题目考点LeetCode版本题目给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。考点动态规划LeetCode版本class Solution {public: int transPlan(string str){ if(str.empty()) ret
2021-08-28 22:54:15
76
原创 面试题45:把数组排成最小的数
面试题45:把数组排成最小的数文章目录题目考点LeetCode版本题目输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。考点to_stringsortlambda表达式appendLeetCode版本class Solution {public: string minNumber(vector<int>& nums) { string res; if(nums.empty()) re
2021-08-28 22:19:50
143
原创 面试题44:数字序列中的一位数字
面试题44:数字序列中的一位数字文章目录题目LeetCode版本题目数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。请写一个函数,求任意第n位对应的数字。LeetCode版本class Solution {public: int findNthDigit(int n) { if(n < 10) return n; int base = 1
2021-08-28 12:08:32
65
原创 面试题43:1~n整数中1出现的次数
面试题43:1~n整数中1出现的次数文章目录题目考点LeetCode版本题目输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。考点找规律先考虑最高位,最高位分为是否大于1考虑最高位1出现次数再考虑除最高位剩下几位中1出现的次数,此时计算1出现的次数采用排列组合的方式再递归考虑除最高位剩下的尾数部分LeetCode版本class Solution {public: int
2021-08-28 11:05:52
54
qt-everywhere-opensource-src-5.9.9.zip
2020-10-30
sourceinsight4.0.rar
2020-08-19
qt5范例大全.pdf
2020-08-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人