- 博客(118)
- 收藏
- 关注
原创 leetcode每日打卡(13):多数元素
多数元素题目描述我的解题解法二题目描述给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。我的解题排序,中间的数字class Solution {public: int majorityElement(vector<int>& nums) { ...
2020-03-13 00:12:52
331
原创 程序员面试金典:检查子树
检查子树题目描述我的解题题目描述检查子树。你有两棵非常大的二叉树:T1,有几万个节点;T2,有几万个节点。设计一个算法,判断 T2 是否为 T1 的子树。如果 T1 有这么一个节点 n,其子树与 T2 一模一样,则 T2 为 T1 的子树,也就是说,从节点 n 处把树砍断,得到的树与 T2 完全相同。我的解题/** * Definition for a binary tree node...
2020-03-13 00:01:47
284
原创 程序员面试金典:检查平衡性
检查平衡性题目描述我的解题题目描述实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1我的解题求树的深度依次判断/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * ...
2020-03-12 23:51:19
322
原创 程序员面试金典:特定深度节点链表
特定深度节点链表题目描述我的解题题目描述给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表)。返回一个包含所有深度的链表的数组。我的解题/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *...
2020-03-12 23:27:04
229
原创 程序员面试金典:最小高度树
最小高度树题目描述我的解题题目描述给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。我的解题/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * ...
2020-03-12 23:06:55
157
原创 程序员面试金典:动物收容所
动物收容所题目描述我的解题题目描述动物收容所。有家动物收容所只收容狗与猫,且严格遵守“先进先出”的原则。在收养该收容所的动物时,收养人只能收养所有动物中“最老”(由其进入收容所的时间长短而定)的动物,或者可以挑选猫或狗(同时必须收养此类动物中“最老”的)。换言之,收养人不能自由挑选想收养的对象。请创建适用于这个系统的数据结构,实现各种操作方法,比如enqueue、dequeueAny、dequ...
2020-03-12 20:48:16
216
原创 leetcode每日打卡(12):字符串的最大公因子
字符串的最大公因子题目描述我的解题题目描述对于字符串 S 和 T,只有在 S = T + … + T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。返回最长字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。我的解题= = 没思路啊参考:gcd(a,b)−>b==0?a:gcd(b,a%b)gcd(a,b) -> b==0?a:gcd...
2020-03-12 15:40:19
119
原创 程序员面试金典:链表求和
链表求和题目描述我的解题题目描述给定两个用链表表示的整数,每个节点包含一个数位。这些数位是反向存放的,也就是个位排在链表首部。编写函数对这两个整数求和,并用链表形式返回结果。我的解题模拟加法/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *ne...
2020-03-11 23:39:30
173
原创 程序员面试金典:分割链表
分割链表题目描述我的解题题目描述编写程序以 x 为基准分割链表,使得所有小于 x 的节点排在大于或等于 x 的节点之前。如果链表中包含 x,x 只需出现在小于 x 的元素之后(如下所示)。分割元素 x 只需处于“右半部分”即可,其不需要被置于左右两部分之间。我的解题/** * Definition for singly-linked list. * struct ListNode {...
2020-03-11 23:11:38
114
原创 程序员面试金典:删除中间节点
删除中间节点题目描述我的解题题目描述实现一种算法,删除单向链表中间的某个节点(除了第一个和最后一个节点,不一定是中间节点),假定你只能访问该节点我的解题node的下一个节点值覆盖当前值,然后删去下一个节点/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNod...
2020-03-11 22:48:10
184
原创 程序员面试金典:返回倒数第 k 个节点
返回倒数第 k 个节点题目描述我的解题题目描述实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。我的解题快慢指针/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x...
2020-03-11 22:36:59
233
原创 leetcode每日打卡(11):将数组分成和相等的三个部分
将数组分成和相等的三个部分题目描述我的解题题目描述给你一个整数数组 A,只有可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。形式上,如果可以找出索引 i+1 < j 且满足 (A[0] + A[1] + … + A[i] == A[i+1] + A[i+2] + … + A[j-1] == A[j] + A[j-1] + … + A[A.length - 1...
2020-03-11 00:24:26
200
原创 程序员面试金典: 旋转矩阵
旋转矩阵题目描述我的解题题目描述给定一幅由N × N矩阵表示的图像,其中每个像素的大小为4字节,编写一种方法,将图像旋转90度。不占用额外内存空间能否做到?我的解题...
2020-03-10 16:02:35
258
原创 程序员面试金典:回文排列
回文排列题目描述我的解题题目描述给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。回文串不一定是字典当中的单词。我的解题class Solution {public: bool canPermutePalindrome(string s) { int l = s.length();...
2020-03-10 15:35:43
187
原创 程序员面试金典:单词的频率
单词的频率题目描述我的解题题目描述设计一个方法,找出任意指定单词在一本书中的出现频率。我的解题借助map记录class WordsFrequency {public: WordsFrequency(vector<string>& book) { for(auto b: book) { if(bookRecord...
2020-03-10 11:14:54
198
原创 程序员面试经典:零矩阵
零矩阵题目描述我的解题题目描述编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。我的解题直接遍历class Solution {public: void setZeroes(vector<vector<int>>& matrix) { int m = matrix.size(); if(m==0...
2020-03-10 11:09:27
213
原创 leetcode每日打卡(10):二叉树的直径
二叉树的直径题目描述我的思路题目描述给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。我的思路最大长度过根节点,分别是左右子树的最长节点最大长度不过根节点,在左子树最大长度不过根节点,在右子树/** * Definition for a binary tree node. * struct TreeNode ...
2020-03-10 11:00:26
195
原创 leetcode每日打卡(9):买卖股票的最佳时机
买卖股票的最佳时机题目描述我的解法1. 直接循环2. 改进题目描述给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。我的解法1. 直接循环class Solution {public: int maxProfit(vector<i...
2020-03-09 09:58:45
111
原创 leetcode每日打卡(8):零钱兑换
零钱兑换题目描述我的解题题目描述给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。我的解题动态规划F(S) = F(S-c) + 1;class Solution {public: int coinChangeCore(vector<int>&...
2020-03-08 22:20:54
104
原创 leetcode每日打卡(7):队列的最大值
队列的最大值题目描述我的解题题目描述请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1我的解题...
2020-03-07 10:58:17
160
原创 leetcode每日打卡(6):和为s的连续正数序列
和为s的连续正数序列题目描述我的解题1. 暴力破解法2. 参考规律题目描述输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。我的解题1. 暴力破解法class Solution {public: int SequenceSum(int start, int end) ...
2020-03-07 10:10:40
123
原创 leetcode每日打卡(5):分糖果
分糖果题目描述我的解题题目描述排排坐,分糖果。我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友。给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最后一个小朋友 n 颗糖果。然后,我们再回到队伍的起点,给第一个小朋友 n + 1 颗糖果,第二个小朋友 n + 2 颗,依此类推,直到给最后一个小朋友 2 * n 颗糖果。重复...
2020-03-05 11:27:21
238
原创 leetcode每日打卡(4):腐烂的橘子
腐烂的橘子题目描述我的解题题目描述在给定的网格中,每个单元格可以有以下三个值之一:值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。我的解题引入队列class Solution {public: int...
2020-03-04 10:12:46
246
原创 leetcode每日打卡(3):合并排序的数组
合并排序的数组题目描述我的解题题目描述给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。初始化 A 和 B 的元素数量分别为 m 和 n。我的解题class Solution {public: void merge(vector<int>& A, int m, vector<int&...
2020-03-03 10:13:07
187
原创 程序员面试经典(11):化栈为队列
化栈为队列题目描述我的解题题目描述实现一个MyQueue类,该类用两个栈来实现一个队列。我的解题class MyQueue {public: /** Initialize your data structure here. */ MyQueue() { } /** Push element x to the back of queue. */...
2020-03-02 10:19:11
106
原创 leetcode每日打卡(2):反转链表
反转链表题目描述我的解题题目描述我的解题class Solution {public: ListNode* reverseList(ListNode* head) { if(head==nullptr || head->next==nullptr) return head; ListNode *p=head, *q=p->next, *r...
2020-03-02 00:14:34
118
原创 程序员面试经典(10):栈的最小值
栈的最小值题目描述我的解题题目描述请设计一个栈,除了常规栈支持的pop与push函数以外,还支持min函数,该函数返回栈元素中的最小值。执行push、pop和min操作的时间复杂度必须为O(1)。我的解题在存入x时,同时将此时栈的最小值存入class MinStack {public: /** initialize your data structure here. */ ...
2020-03-02 00:07:23
281
原创 程序员面试经典(9):环路检测
环路检测题目描述我的解题题目描述给定一个有环链表,实现一个算法返回环路的开头节点。有环链表的定义:在链表中某个节点的next元素指向在它前面出现过的节点,则表明该链表存在环路。我的解题快慢指针/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *ne...
2020-03-01 21:44:46
392
原创 程序员面试经典(8):链表相交
链表相交题目描述解题方法题目描述给定两个(单向)链表,判定它们是否相交并返回交点。请注意相交的定义基于节点的引用,而不是基于节点的值。换句话说,如果一个链表的第k个节点与另一个链表的第j个节点是同一节点(引用完全相同),则这两个链表相交。解题方法链表合并,双指针比如 4 1 8 4 5 5 0 1 8 4 5以及 5 0 1 8 4 5 4 1 8 4 5很明显可以看出后面的8 开始...
2020-03-01 21:26:20
154
原创 程序员面试经典(7):回文链表
回文链表题目描述我的解法题目描述编写一个函数,检查输入的链表是否是回文的。我的解法逆向后半部分字符串,逐一比较/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(...
2020-03-01 20:59:15
131
原创 程序员面试经典(6):移除重复节点
移除重复节点题目描述我的解题题目描述编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。我的解题/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL...
2020-03-01 20:28:24
224
原创 程序员面试经典(5):字符串轮转
判定是否互为字符重排题目描述我的解题其他答案1. string::npos题目描述字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)我的解题逐一判断orzclass Solution {public: bool isSame(string s1, string s2) { ...
2020-03-01 17:48:31
690
原创 程序员面试经典(3):URL化
URL化题目描述我的解题题目描述编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)我的解题class Solution {public: string replaceSpaces(string s, int length) { ...
2020-03-01 11:50:05
334
原创 程序员面试经典(2):判定是否互为字符重排
判定是否互为字符重排题目描述我的解题题目描述给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。我的解题即判断两个字符串包含的字母是否相同class Solution {public: bool CheckPermutation(string s1, string s2) { vector<int>...
2020-03-01 11:17:33
252
原创 程序员面试经典(1):判定字符是否唯一
判定字符是否唯一题目描述我的解题如何不使用额外的数据结构?题目描述实现一个算法,确定一个字符串 s 的所有字符是否全都不同。我的解题class Solution {public: bool isUnique(string astr) { vector<int>record(26, 0); for(auto s: astr) ...
2020-03-01 11:09:13
359
原创 leetcode每日打卡(1):用队列实现栈
用队列实现栈题目描述我的解题其他思路题目描述使用队列实现栈的下列操作:push(x) – 元素 x 入栈pop() – 移除栈顶元素pop() – 移除栈顶元素empty() – 返回栈是否为空你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。我的解题定义队列Q和计数...
2020-03-01 10:54:43
396
原创 2019校招真题编程(二十三)回文字符串
回文字符串题目描述我的思路题目描述最大回文子串是被研究得比较多的一个经典问题。最近月神想到了一个变种,对于一个字符串,如果不要求子串连续,那么一个字符串的最大回文子串的最大长度是多少呢。我的思路对任意字符串,如果头和尾相同,那么它的最长回文子序列一定是去头去尾之后的部分的最长回文子序列加上头和尾。如果头和尾不同,那么它的最长回文子序列是去头的部分的最长回文子序列和去尾的部分的最长回文子...
2020-02-10 22:28:42
414
原创 2019校招真题编程(二十)善变的同伴
善变的同伴题目描述最大m段子段和题目描述又到了吃午饭的时间,你和你的同伴刚刚研发出了最新的GSS-483型自动打饭机器人,现在你们正在对机器人进行功能测试。为了简化问题,我们假设午饭一共有N个菜,对于第i个菜,你和你的同伴对其定义了一个好吃程度(或难吃程度,如果是负数的话……)A[i],由于一些技(经)术(费)限制,机器人一次只能接受一个指令:两个数L, R——表示机器人将会去打第L~R一...
2020-02-10 10:08:20
620
原创 2019校招真题编程(二十二)字符串排序
字符串排序题目描述我的思路题目描述月神拿到一个新的数据集,其中每个样本都是一个字符串(长度小于100),样本的的后六位是纯数字,月神需要将所有样本的后六位数字提出来,转换成数字,并排序输出。月神要实现这样一个很简单的功能确没有时间,作为好朋友的你,一定能解决月神的烦恼,对吧。每个测试用例的第一行是一个正整数M(1<=M<=100),表示数据集的样本数目接下来输入M行,每行是...
2020-02-08 23:59:16
329
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人